I was really passionate about programming since my school days. I knew about Google Summer of Code before coming to my college and wanted to apply for the program since then. But, unfortunately, due to the academic load of the first year, I failed to find time for GSoC. However, I found time to do some hobbyist programming with my peers of MetaKGP and Kharagpur Open Source Society by making fun projects at college. After the regrets of the first year, there comes the second. I had a knack of python since school and wanted to work on a codebase which evolves around python. So, I searched for suborgs under Python Software Foundation and found Mercurial exciting to work with.
I was quite familiar with version control systems and Mercurial being a version control system written in python was a way to go. I started experimenting with Mercurial from the month of October and felt that intriguing. I joined their communication channel, #mercurial on IRC. This was my first time with IRC. I had written a blog post about IRC after spending enough time with that. I was in search of a good start to explore Mercurial in deep. At that time, one of the active contributors Pulkit recommended me to read Mercurial: The Definitive Guide by Bryan O’Sullivan. Surprisingly, he became my mentor for GSoC. This book even contained a chapter called, “Behind the scenes” which was interesting. My learning curve was very steep since then. I finished reading this and after having done enough experiments with hg and getting my mid-semester exams over, I started to focus on contributing to the project. I read the contribution guidelines and setup development environment. Searched bugs and picked one which adds a new feature to one of the core commands. I made my first PR in the last week of December. The development workflow was completely new to me. I usually used to work with git and GitHub for managing my opensource projects. Mercurial had a separate bugtracker, Bugzilla and a patch review platform, Phabricator. It took me almost a month to learn this workflow. Even fixing the first bug was easier than this effort. After around 3 hrs, I got my first review on the patch. It was Yuya. His comment was so precise and motivated me to work on that further. It took almost one week to get merged. The community is very much interested in improving their codebase and they really care to make it less prone to bugs. Mercurial is used by companies like Facebook, Mozilla, et al. to track their code because of its scalability nature compared to git and other VCSes. I managed to find time for contributions and had sent PRs by a gap of 2-3 days which were on core issues itself.
When the projects were announced, I chose the one which can make a great impact on Mercurial. I chose the one on adding functionality to store an unresolved merge-state. The project description is given here. I felt this one as really challenging and exciting to work on. I came to know about another VCS called Pijul. It was pretty new and was based on patch theory. I started to read a research paper on category theory of patches, saw some videos on it and read Joe Neeman’s blog posts on them. The last one gave me more user-friendly insights into the concepts behind the theory. I discussed things I learnt with the community on #mercurial and #pijul. People started to discuss it and the whole night went on that. They were happy to clear my doubts. When I looked around, there was the Sun. Days passed. My learning curve was always steep. The days to proposal submission came closer. But, knowledge at the implementation level to write the proposal was missing with me. I reached out to my seniors and discussed with friends on the style of a good GSoC proposal. I saw some of their proposals and almost all of them had details at the implementation level. There was hardly one week left for the submission deadline and I hadn’t started writing my proposal. My class tests and lab exams also got started then. From the help of my friends, I managed to keep motivated and started writing my proposal after finding time in the hectic schedule. I sent my first draft very late and asked my mentor for suggestions. He was there with suggestions and told me to write how I thought of this project from what I’d understood so far. I wrote a 16 paged proposal from what I’d grasped so far. I was even making edits to the proposal in the last 5 minutes before the deadline.
Then comes the result day. Despite getting a good number of PRs merged and having a good interaction with the community, I was really tensed as my proposal was more hypothetical and was chilling by watching some episodes of Brooklyn Nine Nine. I had a bottle of beer with me at that time which I thought can cure my heartbreak or happiness as necessary. When it was 11:30 AM IST, one of my mentors, Sangeet messaged me a simple “Congrats”. I can’t forget that feeling. I was really happy and excited for the summers. Thanks to my mentors and the hg community for having faith in me.
The period until May 27 is community bonding. I’ll write my second blog post when it ends.