The Mercurial distributed version control system is used by thousands of developers. NetBeans, OpenJDK, OpenOffice, and Python itself are just a few of the projects that have adopted Mercurial as their version control system. But as much as Mercurial has been making incredible inroads in the open-source community, it has some key deficiencies that make it a poor choice for real-life commercial development.

Here at Fog Creek Software, we’re about to release a brand-new source control management system called Kiln that’s based on Mercurial. As part of that project, we want to fix the problems in Mercurial that currently prevent commercial development shops from adopting it with the same enthusiasm as their open-source counterparts.

That’s where you come in. In UCOSP, you will focus on improving Mercurial’s performance and user. More specifically, you’ll:

  • Improve the handling of binary files
  • Improve support for very large repositories
  • Add support for secure password management
  • Improve end-user feedback during lengthy network operations
  • Improve history viewing tools

Once you’ve implemented these improvements, we’ll be sending them to the Mercurial project, which has a highly supportive developer community and a predictable release schedule. So you’ll have a really high chance of seeing your code in production soon after the project ends.

Mercurial is written in high-level Python and low-level C, and has relatively complex on-disk formats and network protocols. Because we’ll be touching most of the stack, you’ll feel most comfortable if your past experience runs the gamut from high- to low-level work.

Mentor: Benjamin Pollack (Fog Creek Software)