Congratulations to the Bazaar team, who just released version 0.12 of my favourite free software distributed revision control system. Well done Martin, John, Robert, Aaron & co.
The big focus as they move to 1.0 is performance, and a key part of that is the performance of revision control across networks. Since the whole point of internet-based collaboration is to share code and innovation between developers in different parts of the world, network performance is a key issue for the team.
Bazaar has the neat property that you can publish your branches using only a web server, with no special features. Just exposing the files as a read-only tree over HTTP is enough to publish your branches. That’s nice and easy to setup – combined with SFTP support it means that just about anybody with some sort of personal web space can publish code in a format that is easy for other developers to collaborate on – with full revision control for everybody.
The disadvantage of this is that HTTP publishing (or any sort of virtual file system) requires that files be read one-at-a-time, with all the work being done on the client side. That means it’s difficult, or perhaps impossible, to make the whole thing super fast. For that, you need a server which understands “branches and changesets”, so that you can talk to it using a specialised protocol with meaningful questions and answers like “what’s changed in this code since I last came by and asked?”
This latest version of bazaar includes just such a smart server. It’s really easy to setup – if you have an ssh-based account on a machine, you can work with your remote branches very efficiently now – in fact, it’s much faster checking for updates using this smart server than using something like rsync.
This is just the first cut – over time, I think the smart server will become more capable, the conversations more “high-level” and, as a result, the performance even better. Robert Collins has written up a comprehensive page on how to extend and improve the smart server – Python coders with an interest in revision control should check it out. This complements his article on extending bzr itself with plugins. There are a lot of very cool plugins already – Jelmer’s “SVN branching and committing from BZR” plugin really shows how we can bridge the divide between different version control systems with bazaar, which has an underlying model that is a superset of the other major free systems.