The Git and the Bazaar
When looking for an alternative way of doing source code management, I came across a number of distributed version control systems, among them git and Bazaar (or bzr). While the former may be technologically the most elegant and efficient system around, Bazaar is so far ahead in usability, documentation, and support that the choice is really quite easy.
I've been using Subversion for several years now, but I was never really happy with it. The potential for problems when updating code on different machines or when several people work together in a loose way is very high. I am also about to release a program we are working on as open source, and would like to do that in a way that encourages people to mess with it, rather than put lots of roadblocks in their way (like having to sign up for sourceforge, getting permission from me to be able to contribute, etc.).
Also, I want to encourage my students to check in their work more often to have a more fine-grained history of changes, and be able to do that when they're not connected to the net or only through our WLAN, which blocks most ports, including SVN. Since we are using Eclipse, and some of my students are not very comfortable with using the command line, integration with that particular IDE is very important.
So I came across git and started reading, and it sounded great. A very efficient model, in use for the Linux kernel (which means it must be stable), and a storage system that made a lot of sense to me. The problems started when I wanted to actually use it. The program itself has an installer for the Mac and packages for Linux, but Windows is only supported through Cygwin (and they essentially warn people not to use it). Apart from the very technical documentation about how it is implemented, I did not find a clear explanation how to actually use it for practical work. An Eclipse plugin is in the works, but it's only available as source, and it didn't even compile on my machine. The git web interface is also annoying and hard to navigate (another hosting service is github, which is a huge improvement).
When looking for more information, I found Bazaar. Bazaar (or bzr) has is based on very similar model but was clearly developed with users in mind. It is used by the Ubuntu project, and follows many of the same ideas that have made Ubuntu so successful. There is ample documentation (a short tutorial, a long tutorial, a user guide, development guides, etc.) included with the installation package. There are installers not only for the Mac, but also for Windows, and there is an Eclipse plugin that is still alpha, but that works quite well (and it can be installed using the standard Eclipse way, rather than having to compile, export, and then add manually). There is also a hosting service for Bazaar projects called Launchpad, which is very comprehensive: in addition to code hosting, there is bug tracking, translations, discussions, and feature to-dos called blueprints.
Bazaar's command-line user interface is quite easy to learn and makes a lot of sense. This is in contrast to git, which has around 150 commands that may all be very powerful, but that are frankly impossible to figure out. When introducing Linus Torvalds (who wrote git) for a talk at Google, the introducer called git "a version control system only he can understand" - well put!
While I have found no mention of this in the git documentation (that really doesn't talk a lot about usage), Bazaar supports a number of different collaboration styles, from the single developer who keeps his files locally to centralized svn-style repositories to completely decentralized open-source style development - as well as many hybrids. Another thing that works for my students and me in particular is that Bazaar uses sftp for communication with a repository (it also has its own server and protocol, but use of that is currently discouraged), which works well over restrictive WLANs.
So while I won't argue about the technical merits, I think that what I have described shows how important documentation and support are for the success of a system. Both work very well and are in use with large software projects, but for somebody who wants to use them without caring about the nitty gritty, documentation, user interface, and support make all the difference. With the backing of Ubuntu and Canonical, Bazaar is poised to become the most used distributed source control system once people start realizing what they're missing with Subversion.










