Apart from writing Free/Libre Open Source Software, I have tried to contribute to existing ones whenever I can – mainly in the form reporting bugs, fixing documentation errors and so on. But I have always had the dream of making non-trivial contributions in addition to what I have been doing. In pursuit of that dream, I have been searching websites like OpenHatch for projects to contribute to, without finding a good starting point.
A few months back, I read somewhere (could be Hacker News, Planet Python or one of the many open source Planet feeds that I am subscribed to) about how the author made his first contribution to a Mozilla project. That inspired me to try and do something similar. So I went to the Bugs Ahoy website linked to from that article.
These days, almost all the code I write has been in Python and more often than not involves web development with Django. So I filtered the bugs using the criteria “Python” and “Simple bugs”. I looked at the summary of the listed bugs and tried to assess if I could fix any of them. There was a bug related to improving the 404 error page in a project called Input. I had never heard of the project before and only knew the popular Mozilla projects like Firefox, Thunderbird, Firefox OS. Still I decided to give it a try since the project was built using the Django web framework which I have used for my projects.
I read the bug report and the comments and could see from the history that a lot of people took up the bug to work on, but never completed it. It was a mentored bug and Will Kahn-Greene, working for Mozilla, (whom I had known earlier as the person behind pyvideo.org) was the mentor. He had requested interested developers to contact him on #input channel on Mozilla’s IRC network.
I contacted him only to find that someone else had started working on the same bug a few days back. Will told me more about mentored bugs and how to find them. With his help, I browsed through the list of mentored and simple bugs in the Input project and picked up a bug that appeared easy to solve.
At that point, I didn’t even know what the project was about and hadn’t read its wonderful documentation. Once Will pointed me to it, I started reading immediately. I came to know that ‘Fjord’ is the software that runs Mozilla Input (that collects actionable feedback from various Mozilla products in different states of development and offers a set of analysis methods for looking at the resulting data). I had to setup the dev environment virtual machine using Vagrant (which I had only heard about before). I read the steps mentioned in the ‘Getting Started’ section of the docs and completed the setup, understanding each step in detail.
When I was about to start assessing the code changes to be made, I saw that the VM was running Ubuntu 13.10 which had already reached end-of-life. I informed Will that I will fix it to use the LTS version of Ubuntu which is supported for 5 years from the time of its release. After reading up a little bit on Vagrant and with Will’s help, I made the fix and verified it. Will immediately reviewed my pull request and merged my first non-trivial contribution to any open source software that I had not developed.
Will encouraged me to help with other dev environment related bugs which some times involved just testing if things work. Slowly I was able to fix more issues surrounding the dev environment and even provide Will a few ideas in resolving some longstanding ones. Despite the encouraging beginning, I got distracted after about a fortnight and drifted off. It wasn’t until the beginning of this month that I regained some focus and wanted to contribute again to Fjord.
Will, as welcoming and encouraging as ever, helped me with fixing more bugs related to the development environment. Though Python and Django were the reasons that led me to Fjord, it wasn’t until 10+ merged commits that I even wrote a single line of Python 🙂 In the past week, I hung out on #input every night and informed Will regarding the things I wanted to work on. Then I did the code changes and sent pull requests. Will patiently reviewed all my changes and merged them. Whenever there were issues with my code, he helpfully suggested ways to fix them.
I wanted to continue doing this every day for as long as I could, but with Will’s year-end vacation coming up, I had to pause my contributions till the beginning of the next year. So I am eagerly waiting for the new year! 🙂
I have the annual year-end vacation from Christmas to New year and I intend to use some time to plan the work to be done in Fjord and also my own Xpens.
Whatever contributions that I have been able to make, I have to thank Will for being a tireless and enthusiastic mentor in spite of having his plate full. He has always encouraged and mentored me. He has nothing but praise for those who want to contribute to Fjord (case in point – see this and this). Without him, none of this would have been possible. I am glad and grateful to have such a great mentor! I hope to continue in the same vein and do much more and make a difference.
I hope my story inspires many more people to contribute to open source projects!