Bazaar 0.12 released – check out the smart server!
Tuesday, October 31st, 2006Congratulations 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.