In this post, I will talk about my experience with Mercurial and the proposal I submitted. When I was browsing through the list of organizations from GSoC 2008 website I just noticed Mercurial was a mentoring organization too. I knew about Mercurial well. Mercurial is a Distributed Revision Control System, written in Python. As I was a fan of Distributed Revision Control system and of course a follower of Python, I was anyways about to switch to Mercurial. Also being fed up with writing C/C++ code for some time I had also made up my mind to select a Python project for this Summer of Code. So I thought Mercurial was a good choice.
When I started going through the ideas page for GSoC 2009(but the accepted organizations list was not out yet), I found the idea of "Partial cloning" very interesting and started to do some research on it. I also contacted Peter Arrenbrecht, the prospect mentor for this project, in the mean time accepted organizations list was also announced by Google and Mercurial was selected. I started working on it and realized Partial Cloning includes two parts, one being Shallow Cloning, Cloning only the most recent of the history and another part being Narrow Cloning, Cloning only a subset of files and directories in the repository. As I started discussing with Peter I understood the problems and complexities behind implementing them. Also I learnt Narrow cloning was a failed GSoC 2008 project. Peter suggested me to take up just Shallow cloning, since Shallow cloning alone was a good enough project for Summer. I agreed upon. I later started working and doing some research on the existing code. I also submitted a patch to Mercurial. Peter used to give me some exercises and I used to solve them and mail him the solutions. He also sent me a document in which he had explained his plans for implementation of shallow clones.
Using all these resources, including Peter's plan, his branch of Mercurial code at bitbucket (hg-shallow, click here to browse the code) and discussion through mailing list, Google Talk chats, IRC discussions I came up with a proposal and submitted it. (Click here to read my proposal).
Update as of 22nd April, 2009
Even this proposal did not get thru for GSoC 2009. The reasons I guess for this are, may be Mercurial had better proposals than mine. Also the problem in itself was really really complex. May be Matt Mackall, the creator and project lead of Mercurial was not convinced that I understood the problem and complexities well and was not sure if I would complete this project in Summer. But what if I am not selected as a Summer of Code student for Mercurial. This is a project that has created a lot of interest in me. I really understand the implications of this project. Any one who implements this correctly becomes a respected figure in Distributed Revision Control Systems world. Also nothing bars me from working on this outside GSoC, since it is after all an Open Source project. I will definitely work on this and Narrow clones, if not in GSoC timeline, I will start working on it post GSoC 2009.