7 open source projects to cut your teeth on (and the ones to avoid)
Open source contributors weigh in on what projects are friendly to the first-time contributor, and the ones not-so-much
Image credit: flickr/Scott & Elaine van der Chijs
The reasons for contributing to open source projects are as diverse as the projects themselves: To garner new skills, add experience, network with peers, or just for fun. Choosing a project that best suits your needs, and one that is friendly to newcomers, however, can be a daunting task. We polled well-known open source contributors for their recommendations, and the best way to start. They also offer advice on which projects to avoid. Here's what they said:
These 7 projects welcome, and encourage new contributors:
Drupal: The Drupal open source content management platform offers a vast, international community with a reputation for being friendly and inviting to new contributors. Although I don't contribute to the project, I know a lot of people who do, and I attended (and reported on) DrupalCon 2012 in Denver, Colorado. You don't have to be a seasoned developer to feel comfortable on the Drupal project.
[ RELATED: Building your career in open source ]
If you haven't tried Drupal, don't let that deter you. Getting started with Drupal is easy, and the Drupal site walks you through the process. If you don't want to provide your own web hosting and you'd like to dive right in and tinker, check out Drupal Gardens. After you set up your account with a user name and password, you can pick your custom URL (rikki.drupalgardens.com in my case), and then select or create a template.
Then you can tweak your site settings while you learn how Drupal sites work.
Steven Vaughan-Nichols, technology journalist
Leslie Hawthorn, a community manager at Red Hat, recommends Drupal for the project's "amazing set of newbie resources, from the Drupal Dojo to beginners support IRC channel." The Drupal Dojo site offers training for the Drupal community in an effort to help users "ascend the Drupal learning curve."
Drupal offers excellent documentation for new contributors in the form of a Getting Involved Guide. If there's something the Drupal project can do to make their community more inviting to new contributors, I don't know what it could be.
Python: The well-known Python programming language has a large, friendly, active, diverse community behind it. Hawthorn recommends contributing to Python because the project offers supportive user groups and a Python Core Development Mentorship.
Jacob Kaplan-Moss, one of the lead developers of the Django Python Web framework, got his start with this project. "I was aware of open source before then, but Python was the first thing I ever felt motivated to contribute to," he says. Kaplan-Moss points out that, despite being a friendly and welcoming project with a mentorship program for new contributors, contributing to Python comes with a catch. "Python's quite mature, so the bugs that are left to be fixed tend to be difficult, obscure, and very much corner-cases," he says.
Whereas other projects have struggled to attract female contributors, Python offers a bit more diversity. In late 2012, the Python Software Foundation recommended that Python conferences create and apply a Code of Conduct, and the foundation no longer funds events without one in place. The Python community has an established Diversity Statement and offers financial aid to help first timers attend PyCon conferences.
The Python community includes PyLadies, an international group of women developers and mentors. PyCon 2013 organizers recently helped raise $10,000 for PyLadies through a charity auction, and the funds will be used to help get more women into the community.
LibreOffice: Founded in 2010, the not-for-profit The Document Foundation (TDF) leads the LibreOffice project, a community-developed free office suite that's an offshoot of OpenOffice.org. Freelance tech writer Dmitri Popov says that his first open source contribution was an extension he wrote for OpenOffice.org, and he recommends LibreOffice to first-time contributors because of its The EasyHacks. The EasyHacks page walks newcomers through the process of contributing to the project and offers a list of bugs and feature requests to help get you started.
PostgreSQL: PostgreSQL is a well-established open source object-relational database system. Selena Deckelmann, a data architect at Mozilla and PostgreSQL contributor, explains, "We are a C-based project as well, and many of our contributors learn C while contributing, or help fixing bugs in parts of the project that are not exclusively C." She recommends starting with the PostgreSQL ToDo page and the Developer FAQ. The PostgreSQL community also has mailing lists, weekly news, and an active IRC channel.
Ubuntu: Open source evangelist Benjamin Kerensa recommends Ubuntu because the project's strong community. He points out Ubuntu's range of areas for contributors, including development, documentation, art, and support. My experience with Ubuntu supports Kerensa's recommendation.
My first Linux install was Ubuntu a few years ago, and then I helped launch and edited the first print Ubuntu magazine, Ubuntu User. Ubuntu's community is huge, international, and diverse. The project offers a wealth of online documentation to help new contributors get started, and local community teams (LoCos) can be found around the world. I've been a beta tester a few times, which means I've also contributed (albeit, accidentally) to Ubuntu by reporting bugs to the QATeam. Really, the barrier to entry doesn't get much lower than the Ubuntu project.
PC-BSD: If Ubuntu sounds interesting, but you want something a little off the beaten path, Dru Lavigne, Director of Community Development at iXsystems, recommends PC-BSD. Based on FreeBSD (which is based on BSD UNIX), PC-BSD is a relatively young desktop operating system funded by iXsystems.
Lavigne says that the PC-BSD Users Handbook makes it easy to get up to speed. "A whole chapter of the User Handbook is dedicated to the various ways one can get started contributing to the project," she says. If documentation is your thing, simply create a wiki account, and get started. "Editors review and discuss changes to help the writer clearly explain the concepts they are writing about," Lavigne explains.
If you're not ready to dive right in to PC-BSD yet, the forums and IRC channel can help you get familiar with the project community. "The project and its regular contributors work hard to keep the atmosphere friendly, nip inappropriate behavior in the bud, and provide an area where users are comfortable helping each other," Lavigne says.
Documentation: Well, documentation isn't exactly an open source project, but it is a weak spot for many of them. Osier-Mixon, Yocto Project community manager, recommends open source project documentation to first-time contributors. Osier-Mixon explains, saying, "Open source is now widely accepted and one of the biggest things missing across the board, which I read as one of the biggest opportunities, especially for those of us who are not hardcore coders, is documentation. Writing skills are always valuable, and technical writing is actually a really fantastic job."
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.