internal fragmentation

a personal journal of hacking, science, and technology

November update and Mercurial release numbering

Mon, 26 Dec 2011 17:18 by mpm in Uncategorized (link)

As always, things have been busy here, and it’s taken a while to get all the paperwork for this year’s fellowship lined up so my updates have dropped off for a few months. But work has continued apace and here’s what happened in November:

  • released Mercurial 2.0 and python-hglib 0.1
  • reviewed and merged 136 changesets
  • authored 43 csets
  • 138 mailing list messages
  • worked on 80 bug tracker issues
  • work on case folding, revsets, test harness, error messages, phase support
  • daily IRC office hours

The big item above, of course, is the release of Mercurial 2.0. So what are the big exciting new features in 2.0? You may be surprised to learn that 2.0 is actually a pretty boring release and that’s the way we like it.

For many projects, an x.0 release often means a major rethink/rewrite/break with the past. And if you look at projects like Python 3.0, Gnome 3.0, KDE 4.0, and so on, you’ll see that that kind of approach is often extremely unpopular with existing users.

Mercurial has a different philosophy: we recognize that an SCM is something that people plan on using for years if not decades. People often build elaborate frameworks and build systems around them and breakage here can mean losing many developer-days of time. So we take care to avoid affecting people’s existing work flows and automation. Regressions get more attention than other bugs.

Further, Mercurial takes an evolutionary approach to development.: steady accumulation of reliable small improvements, with regular releases. So almost all of the changes in the three and a half years since 1.0 have been in users’ hands for a while now. Our 2.0 release is simply 1.9 + .1. So why not just call it 1.10? First, we already know we will never do a release of the traditional 2.0 style, so there’s no point sticking on 1.x forever. Second, the difference between 1.0 and 2.0 is actually huge, notwithstanding the fact that most of the intermediate development has already been released to the public.

Similarly, I can tell you today when Mercurial 3.0 will be released: May 1st, 2014. And it will contain a huge number of interesting new features. But you won’t have to wait for 2014 to use them: they’ll all be released as soon as they’re ready. And none of them will require you to “upgrade” your repositories or all your users’ installs to keep working.