Time to write some code
The community bonding period finally came to an end on 30th May. During this period I learned a couple of things about my organisation and also discussed some important things about my project with the mentors. In the previous post, I told about how I would be working with Mercurial for my GSoC project. In this post, I will describe in detail about Mercurial as an organisation and also about the project that I am working on.
About Mercurial
Mercurial is a cross-platform, open source, distributed version control system. The primary codebase of mercurial is implemented in Python, which is a big reason why the developers contributing to it are really experienced with Python. For contributing to mercurial, one has to send patches on its official mailing list. One can easily discuss its usage and development related issues on the IRC at #mercurial.
From development POV, the organisation is extremely active. It has been 3 months since I subscribed to the Mercurial mailing list, and everyday there are at least 10 to 15 patches sent to the mailing list. All the discussions related to the patch is held on the mailing list itself, although one is free to discuss it on the IRC as well.
About the Project
I will be working on a project titled Release Notes extension for Mercurial. Now before I tell more about my project, I would first like to discuss what an extension exactly is?
Mercurial allows users the access to powerful features with a very easy interface. Extensions in mercurial allow us to add additional features like colour settings or integrating it with other services, for eg. Bugzilla to Mercurial. There are a couple of extensions that come bundled with the core when you install Mercurial but you can also add custom extensions by yourself. One of the most powerful extensions that I have got to know till now is ‘evolve’. You can read more about extensions and test many of them from this link.
Coming to my project, my objective is to have a release notes extension for mercurial. In short, the extension will enable the users of the repository to generate release notes automatically by parsing the commit messages/description. To simplify the process of parsing and notes generation, the commit messages will be written in reStructuredText (ReST). I’ll be working on various things ranging from text parsing, text similarity to interactive merge methods for these notes.
Mentors
I have been assigned three mentors for this project, which is a really nice thing as I get a wider range of opinion and advice on my work. My primary mentor is Kevin Bullock. He is a really experienced person and has been contributing to mercurial since 2009. He is also the person who is partly responsible for the release notes for mercurial. The other two mentors are Augie Fackler and Pulkit Goyal. Augie is a software engineer at Google, and also has good experience with mercurial. Pulkit was also a GSoC student last year in mercurial. He is a really helpful person and guides me on anything related to mercurial whenever I have an issue.
Community Bonding Period
The first part of GSoC is community bonding period. It is a very important step in this journey because it provides the student with enough time to get comfortable with the existing code base. It is also the time when students get introduced to the mentor and discuss in more detail about how to go about with the project. As for me, during this period I discovered a couple of things related to the existing ReST parser in mercurial. I also talked to Kevin regarding the project who suggested me to write a few tests for the existing patch by Gregory Szorc, and also talk through about it with Greg.
For now, I just started the coding period with a series of three patches which also contains the initial patch by Greg. I plan to send some really good patches so that I am able to accomplish the deliverables mentioned in my proposal.