Getting involved in an open-source project may be one of the most rewarding activities in which developers can engage.
Contributing to such projects will help the individual developer to improve skills and further a career, and it will help enterprises generally improve the payback from ongoing investments in IT.
There was a time, of course, when the open-source movement was widely viewed as a bunch of long-haired layabouts merely seeking to make software "free" and overthrow the software industry for quasi-political reasons. But even after open-source code such as the Linux operating system and Apache Web server proved so useful and bulletproof, many enterprises remained wary of open-source code. There were issues with the GPL license, for instance, and worries about inadvertent infections from this noncommercial code.
By now, of course, open-source code is widely accepted, from the so-called LAMP stack to many other frameworks and languages used at the heart of high-profile, high-performance enterprise applications -- Ruby on Rails, PHP, Drupal, Joomla, and MySQL, for instance.
Tim Kellogg, a blogger and developer, makes a good case for individual software engineers getting involved in open-source projects. "I went to a great college, but also in my internships I had highly skilled engineers teach me how to write unit tests and design maintainable code," he writes. "But after school and internships, I was responsible to teach myself. I've read tech magazines, programming books, blogs and answered stack overflow questions, but the best thing I ever did was contribute to open source." (emphasis added)
He cites several different reasons, starting with simply learning more by imitating good work.
A lot of great coders surround themselves with people who don't care about quality. They let their skills slip. The best way to get better at your job is to watch a job well done... When you get a chance to see things done well, it's easier to see how you could also do excellent work.
Many developers stuck in remote places may suffer for lack of motivation, he writes, but in the open-source community, they can choose their colleagues and learn not only better technical skills, but also how to respond professionally to criticism.
Other reasons: You can build your own professional network, the work "makes your resume shine," and "you get to give back."
Practice makes perfect
The hard part, Kellogg writes, is figuring out where to start. Launching an open-source project yourself probably isn't the best approach, especially if it's focused on code nobody's going to use. A much better way to get into a project: "Go through their issue tracker and find a bug that looks easy and fix it. Write tests, fix it, test it out and send a pull request. It'll seem hard at first, but the more times you practice the easier it'll get."
The same would hold for enterprise IT departments, I imagine. Open-source code offers the opportunity to "try before you buy," with very little investment up front (if any). Once a particular piece of software has proven valuable, contributing to its further development will help the organization in at least two ways. First, the enterprise will have some influence in how the code evolves over time, thus assuring that the code remains as useful as possible. Second, relationships developed today with other enterprise development teams can prove extremely valuable in the future when technical issues arise and help is needed from other, similarly motivated experts.
Your thoughts? Has your company been purposely involved in open-source development? Any experiences to share?