How to pick a project Osier-Mixon says that documentation is a high-impact, visible way to contribute to open source projects, but how do you pick which project to help? "In general, open source works best when people scratch their own itch, like I did," says Kaplan-Moss. When Kaplan-Moss first contributed to the Python project, he says he did so for purely selfish reasons. "I ran into a bug that got in the way of a project I was doing — something having to do with reading and writing files on OSX — and needed to write a patch to fix my problem," he explains. Kaplan-Moss recommends that anyone looking to get started in open source start by finding something that they use and want to improve. "The sense of accomplishment and wonder you get when you fix your own problems is awesome, and hooks you on open source for life," he says. In Dmitri Popov's case, his first open source contribution was an extension for OpenOffice.org that he developed to meet his personal needs, which is why he recommends that contributors pick projects that they will benefit from personally. "For example, I'm an amateur photographer, so I contribute to digiKam," he explains. Selena Deckelmann also started contributing to open source projects to meet a personal need. In her case, she first contributed to RRDTool, a data logging and graphing system for time series data. "I had thousands of RRDs and needed to make a small change to all of them," she explains. "I wrote an update utility in Perl to modify the XML. I mentioned on the users mailing list that I'd written it, and then I think I posted the code to the mailing list. A short time later it was committed to the repo. I was surprised and honored that a script that I wrote in an afternoon got committed to the repo for a project that was an extremely important part of my daily work." As I already explained, I contributed to Ubuntu simply by using the operating system and reporting bugs when I found them. At first, I tried Ubuntu for personal use at home, and eventually I used it full-time at work. Being a beta tester for new releases means you get an advance look at what developers have been working on, and your testing helps them polish the final release. If you'd like to learn about additional projects that need contributors, check out Google's Summer of Code projects. Leslie Hawthorn points out, "Any project that signs up for any of those programs basically has put out a 'new humans wanted' welcome mat." Which projects to avoid Unless you are a seasoned, well-known open source developer with thick skin, avoid the Linux kernel. Technology journalist Steven Vaughan-Nichols explains, "It would be like picking up your little league bat and glove and trying to play with the Yankees." The Linux kernel development team also has a reputation for ... how should I put this... brutally frank communication, which means contributors need flame-resistant clothing at times. One open source veteran explained to me, "The development team's behavior pattern is savage and, in some cases, uncouth." The Linux kernel project isn't the most inviting, but there are signs of improvement. Greg Kroah-Hartman, Linux kernel maintainer, has done talks on how that process of contributing to the kernel works. Once you know more about the scope of the Linux kernel, you might have a better appreciation for why contributing to it isn't for the novice. "Getting your kernel build environment set up is very tedious, and the kernel maintainers are very picky about coding style," explains Linux kernel contributor Sarah Sharp. "The good news is our first patch tutorial seems to be helping OPW applicants over those hurdles." Wikipedia is another project you might want to avoid. A well-known woman in open source explains it this way, "They have a lot of people doing outreach and they have passionate people working to get more people in as editors and a more diverse set of editors. But if you read the Gendergap mailing list, it looks like the place is a horrible place to be." Of course, any project has the potential to be the wrong fit for new contributors. If you are unfamiliar with a project, for example, do not try contributing to it. Not only could you waste your own time, you will get off on the wrong foot by jumping in uninformed. Before trying to contribute to any project, researching the project's history and reputation is a good idea. You also should learn more about the process for contributing before you make contact with other project contributors so you don't ask questions that can be answered easily by browsing the project website or reading mailing list archives. And, most importantly, ask yourself: "Is this project useful to me personally?" If not, you probably won't stay interested in it for long. Which open source projects do you recommend for first-time contributors? Let us know about them in the comments.
If you aren't sure which open source project suits your interests, OpenHatch.org might be able to help. OpenHatch is a non-profit project with an interactive website that helps match open source contributors with projects. On OpenHatch.org, you can connect with a growing community of projects and project contributors. The site lists projects and breaks contributions down by skill set and difficulty level. If you aren't ready to dive right in, OpenHatch offers "training missions" to help prep you for contributing to a project. On the missions page, Windows users can get to know the command line, which might be more familiar to Mac and Linux users. The page also explains common command-line tools, how to work with tar archives, how to use diff and patch to submit changes, and how to share a patch with a maintainer via the Subversion and Git version control systems.