My First Commit to an Open Source Project
I've been working as a developer for a long time now. However, I've avoided contributing to open source projects. I guess the main reason was that I was somehow uneasy with the kind of reviews my contribution would receive. What if my contribution is met by a review similar to the review by Linus Torvalds in this article?
As I mentioned in my Hello World post, I read Scott Hanselman's blog. Recently I've been going through some old posts of his. I came across this post from 2014 and the message got through to me. I decided to take the plunge and to contribute to an open source project. This article describes my journey on submitting my first contribution to an open source project.
Finding a Project
The first step was obviously to try to find a project or issue to contribute to. I was unsure as to how to proceed. Luckily there are sites meant to help you find projects which need assistance, such as firstimersonly.com and up-for-grabs.net.
I opened up-for-grabs.net and started going through the list and trying to find something that interests me. Somehow, I ended up in the GitHub repository for the Humanizer library. I had heard about this library before but I've never actually used it. Nothing struck me as particularly interesting when I had a look at the issues available. I then opened the Contributing.md file and this line "One area where Humanizer can always use your help is localisation." gave me an idea!
Now, according to Wikipedia, Maltese is only spoken by just half a million people. Luckily for me the subset of programmers who use C#, have heard about the Humanizer library and are willing to contribute to open source projects seems to be 1. This meant that I could go ahead with my plan.
Contributing to the Project
Read the Contributing Instructions
I went through the Contributing.md document so that I would ensure I would follow the rules in my submission. I then browsed to the First Contributions page on GitHub for additional guidance. I forked the Humanizer repository and cloned it onto my machine.
I created a feature branch, compiled the project and ran the unit tests. I then started to add support for the Maltese language. This post is not meant to be an instruction manual on how to use git or on development on the Humanizer library, so I will skip some of the details.
Feelings During Development
I initially underestimated the amount of work that I had to do to include support for the Maltese language. I also got stuck, as my initial code was not working at all. It was at this point that I realised that there was a step missing in the documentation. I decided to follow the Boy Scout Rule (leave the playground cleaner than you found it) and updated the documentation so that the next developer would not encounter the same issue as I had.
At one point I realised that I was tackling one of the tasks in an incorrect way. I decided to scrap the code I had written and to start again from scratch. I started worrying a bit about the code review process. However, I decided that I'm going to go ahead and rein in my anxiety.
Submitting the Pull Request and Code Review
In the end, I was satisfied with the code that I had written and that all the unit tests were passing. I checked whether the original repository had any new changes which needed to be merged into my repository. There were none, and this meant that I could submit my pull request. I built the pull request and submitted it.
The Humanizer repository is setup to do various checks via continuous integration. I crossed my fingers and hoped that I hadn't messed up anything. The checks passed which meant that I now had to wait for the dreaded review. I had stayed up late to finish the code, so I went to sleep not knowing when the pull request will be reviewed.
As soon as I woke up the next morning, I opened my inbox and found a short e-mail from the reviewer which said "Thank you! I'll get this pushed to nuget shortly". So, at the end of the day, my fears were unfounded. Furthermore, I had succeeded in my first attempt, which I considered quite a feat since I had been so apprehensive.
Conclusion
Having been wary of contributing to open source projects for a long time, my first experience in contributing to the Humanizer project surpassed all my expectations. The best thing about the whole experience is the exhilaration you feel when you realise that your contribution is appreciated by someone you've never met before.
I will keep on taking the plunge and will contribute to more open source projects. I believe this will facilitate my personal growth. My work experience so far has shown me that you grow the most when you venture outside your comfort zone and collaborate with other people.
Have you been wary of contributing to open source projects? Push yourself, take the plunge.