Undergraduate Capstone Open Source Projects

Winter 2010 Project #5: Mercurial

Posted by Greg Wilson on 2009/11/12

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)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: