Lessons from open-source software development