Why We Use Bazaar for Version Control / SCM

Categories: Programming

At Media Dog, we handle some large, high profile, high traffic websites. Most of our websites are developed using our own proprietary ColdFusion based CMS, Conductor CMS. Almost every one of our websites has a little piece of custom functionality. Managing changes to these sites and pieces of functionality without a version control system is a disaster waiting to happen. It requires more time, has greater risk for manual errors being made while merging and just in general is a bad practice. We knew there had to be another way, and there was!

A few years ago we started playing around with version control for some of our larger projects. The tool of choice back then was Subversion (SVN). Subversion was good. It was easy to see how having a version control system in place could help development. Even better was the feeling, it just felt right to use version control.

A few months into using Subversion though, some flaws started to show; Setting up new projects required an administrator to create a new project on the server. Merging was, at times, successful, but quite often it was a scary thing that involved quite a bit of manual intervention. Overall the system seemed to be introducing more overhead then benefits.

Now, we only had a very basic understanding of version control and how it could help us at that time, so please don't let this blog post tarnish Subversion's image. It is a great piece of software that hundreds of thousands of companies and independent developers still use to this day. Many of the largest software projects are still hosted in Subversion repositories. Great code hosting sites such as Google Code and RIAForge still use Subversion as their version control tool. Even github has Subversion support.

But Subversion just wasn't for us. We continued to use it, but only once in a while and only for the largest of our programming projects (primarily our content management system and other large custom web applications). Commits only happened every week or couple of weeks. Merging just didn't happen. We continued working on a shared file server and just committed in order to commit.

Then a wonderful thing happened, distributed version control system (DVCS), specifically git was becoming all the rage among developers and it appeared as though many people were migrating from Subversion to git. At this time though, git was amazing on Linux but its Windows port wasn't so great. A couple of our programmers were playing with git themselves and found it good but the lack of perfect support on Windows and the slightly more technical knowledge required to use it prevented it from being adopted by the entire office.

Then we discovered Mercurial (hg) and Bazaar (bzr). Both seemed great at the time. Mercurial seemed like it was a lot like git, which makes sense given they were both developed to satisfy the need for a version control system for the Linux kernel, but we wanted something different than git. That's where Bazaar came in. Its focus was on the user experience, keeping things simple. It had a lot of the same great DVCS features that git and Mercurial. Its Windows client seemed far more mature than either git's or Mercurial's at the time. Bazaar's performance was a bit slower than git's or Mercurial's, but it was acceptable. It was still far faster than Subversion.

After some programmers played with it and tried it with some smaller projects, the true power of Bazaar (and source control in general) could be seen. Developers were branching and merging. Making useful commit messages that helped to resolve bugs in the future and explain why things were done. File diffs were examined before commits to reduce bugs being introduced by typos. Tags were used to mark commits as a particular version of a software. Programming became easier because there was less worry about overwriting something accidentally or removing a piece of code that may be needed later. No more 'bak or 'bak2 files existed. Great stuff!

Throughout the last couple years our experience with Bazaar has grown and it's hard to imagine life without it. Check Bazaar out at http://bazaar.canonical.com/

  • Twitter
  • Facebook
  • LinkedIn