Call for testing bzr 0.8

Monday, May 8th, 2006

I believe distributed revision control is essential for healthy free software community development and I’ve been funding some R&D in that regard, which has turned into “bzr” (short for Bazaar-NG Version Control System). The latest release, bzr 0.8, has all the core functionality that we wanted and performs pretty darn well too for something that has had no optimisation and is written in Python with no C extensions.

The new release will be in Dapper, and in fact they hope to get a 0.8.1 out the door before Dapper ships so please test 0.8 and if you do find any issues let them know.
We’ve put a lot of effort into the “feel” of the system. Version control has to be like Goldilocks porridge – “just right” – but it’s difficult to describe exactly what just right is all about other than that it should be a smooth experience from start to finish. I think with 0.8 the Bzr guys are nearly there.

It’s trivial to start versioning a directory or tree of directories, and then to start passing those versions around to collaborate with friends. It has some unique capabilities, like the ability to work on a shared branch (like subversion) and then trivially to split off and work on your own branch, then merge back to the shared branch. This ability to be online and collaborative, and offline when I need to be, is what really makes me more productive. The new version supports a more efficient file storage format, called knits, which has radically improved the speed of network pushes and merges.
Here’s the short version of how to use bzr:

  1. Start versioning files in a directory with bzr init
  2. Make changes, and commit locally with bzr commit
  3. Get status on that tree with bzr status
  4. Push the branch to an sftp server with bzr push sftp://where.com/here/
  5. Merge from another branch with bzr merge http://there.com/thatbranch/

In short, it’s fast, easy to use and “just works” the way you expect it to. I’m really pleased with the work that Martin and the bzr team have done. The community is shaping up to be nice and vibrant too. There are about 40 regular participants in discussions about bzr implementation, and there’s a nice plugin model with lots of interesting plugins coming from the community to do cool stuff like graphical representations of trees and merges.

It does a really fast annotate, so if A changes a line, and B merges that change from A, and C merges that change from B, and you merge from C, you can still quickly see that the line was changed by A. That still blows my mind. Gets and pushes are not as fast as git but the guys want to focus on network latency optimisation and local performance in the next major version, for now the emphasis is on the “revision control experience”.
To test Bzr you can:

  • Download the latest release
  • On Ubuntu Dapper, apt-get install bzr bzrtools

And of course it’s all under the GPL. Now, if only we could merge some of the good work being done in the Mercurial project into Bzr we would have one kickass Python VCS… I like their single-tree performance but far prefer our user experience.

6 comments:

  1. Bartolomeo Nicolotti says: (permalink)
    May 8th, 2006 at 12:22 pm

    Have a look at this, it’s version 1.06

    http://abridgegame.org/darcs/

  2. michele says: (permalink)
    May 8th, 2006 at 8:58 pm

    I love bzr, packaging it as an egg and uploading it to the cheese shop [1] will also help spreading the world. ;-)

    Keep up the great work.

    [1] http://cheeseshop.python.org/pypi

  3. Sam Ruby says: (permalink)
    May 10th, 2006 at 11:54 am

    With Breezy, and apt-get install -t dapper bzr bzrtools, I’m getting the following in response to a bzr push:

    bzr: WARNING: This transport does not update the working tree of: sftp://rubix/home/rubys/foo/

    I’m hesitant to report a bug as it undoubtedly is a user error.

  4. Elliot Murphy 28:1 » Blog Archive » bzr 0.8 is out says: (permalink)
    May 11th, 2006 at 3:05 am

    [...] On his blog, Shuttleworth calls for testing of the new 0.8 version of bzr, which will go into the upcoming Ubuntu Dapper Drake release. He also talks about performance, which is the weak spot of bazaar-ng. The OpenSolaris folks just picked mercurial over bazaar-ng, and I suspect performance was a key reason (the Solaris source tree is large). Good to read that Mark knows performance is an issue, and I agree that the effort put into the bazaar-ng UI/user experience makes a big difference. I also really like the plugin model. [...]

  5. Anonymous says: (permalink)
    May 18th, 2006 at 8:06 pm

    See; http://www.kdedevelopers.org/node/2024

  6. The Evil Blog » Blog Archive » Long due status update… says: (permalink)
    February 5th, 2008 at 12:44 am

    [...] Inspired by Mark Shuttleworths post about bzr, I tried it out. I know I fanboyed git as a revision control system lately, but bzr beats it by [...]