I’ve been wanting to contribute to an open source project for quite a while now, but haven’t gotten around to it until recently. Over the past year or so, I’ve been perusing open source projects that I use and seeing how each community works. I concentrated mostly on projects that I use extensively, among them, Rockbox, Django , SparkleShare and Mozilla (Firefox).
Rockbox is a great replacement for the firmware on my MP3 player. I prefer the interface and it provides a lot more features. I even write firmware in my dayjob, so Rockbox was originally the first project I wanted to contribute to. A lot of Rockbox development discussion take place on their development mailing list which I started subscribing to. That’s when I decided it was not for me. A lot of chippiness and arguing occur there and I wanted to avoid that. I know open source project development is sort of known for harsh abrupt discussions, but I knew more developer-friendly communities exist and wanted to find one of these to contribute to first. Why take abuse when it’s something I want to do for fun?
Django has great documentation, and that’s also the case with regards to contributing to it. They have an “easy pickings” list of easy first bugs that newbie developers can tackle. I hope to contribute to Django some day because I think it is a very useful project, but some things I came across with SparkleShare and Mozilla made it easier to start contributing to them instead.
SparkleShare is an open source version of Dropbox. Its Windows client is still very much in its infancy, but it works well enough for me. I came across a problem in trying to use it with some non-default settings though, and was able to fix it myself as I described here. My fix was accepted into the main project. The reason I was able to so easily contribute right away is because they are hosted on GitHub. GitHub makes it extremely easy to contribute to a project. I just forked the repository, made my fix, and had them pull my changes. I’ve since went on to make minor enhancements to their web client, SparkleShare-Dashboard, as well.
Though I successfully found an open source project to contribute to, for reasons of my own, I wanted to work on a more well-known and challenging project. And everyone knows Mozilla Firefox. Like Django, Mozilla has great intro documentation as well for anyone who wants to contribute. To start with, I downloaded the Firefox source code and compiled it by following their clear instructions here. Then, I looked for a bug that sounded simple enough for a newbie to start with. Mozilla also has a good-first-bug list similar to Django’s easy pickings list. Nothing caught my fancy there though. So I started browsing through new bugs recently entered and found one that sounded simple enough for a first-timer. I’ve been working on it on and off since, whenever I have some free time. The majority of the effort has been figuring out the best way to debug the code, how to configure the debug logging and where the log statements appear. Mozilla has excellent (though some out-dated) documentation on this and their developer IRC channel has been a big help. I’m 95% of the way to a patch that I will then submit and test (a whole other learning experience).
I’ve had a good time contributing to these two open source projects so far and plan to continue as time allows. I look forward to being able to (soon) say code I wrote is in Firefox.