Version Control: Thanks, BitKeeper ? Welcome, Bazaar

During the last month, MySQL code has been migrated from BitKeeper to Bazaar. Bazaar is a distributed, free revision control system sponsored and supported by Canonical, the company behind the fast-growing Linux distribution Ubuntu.

We have migrated all MySQL code trees that were available in BitKeeper. This means not just current GA and development versions of MySQL Server and MySQL Cluster, but also the history all the way back to MySQL 3.23.22 released about eight years ago. And we’ve also migrated non-MySQL-server FOSS applications to Bazaar, such as MySQL Workbench (formerly not in BitKeeper but in Subversion, also known as svn) and our internal QA suites.

We would like to thank BitKeeper for the fruitful relationship that has lasted for 5 years. BitKeeper has helped MySQL to achieve its goals in a professional way and to scale from simple version control to a more productive workflow.

Despite BitKeeper’s strong features, we wanted to find a more open product, since our goal remains to expand our external contributor base. For that, we need a freely distributable product to build a new policy of cooperation. For this, BitKeeper had published a free client for the community; however, this client is unfortunately limited to a few read-only operations. The community has been asking for more functionality, and we have taken these requests to heart.

It is because of our commitment to the development community that we decided to switch. We can’t encourage contributions without providing the appropriate tools for the task. Before opting for Bazaar, we evaluated several candidate Revision Control Systems, looking for the following features:

  • ease of use for a distributed development organization
  • feature set compatible with BitKeeper
  • availability in all major operating systems (Linux, Windows, Mac OS X, Solaris).

All the above requirements have played a decisive role in our choice, and countless email messages have been exchanged in the internal mailing lists to weight the pros and cons of replacement candidates. In the end, the features and openness of Bazaar was agreed to be the best alternative. The engineers at Canonical, under former MySQLer Elliot Murphy’s guidance, have worked wonders in adapting Bazaar to what they know about our requirements. Bazaar has been under intense development lately, resulting in 5 releases that have enhanced and stabilized the product since January, and these fixes have been of great benefit to us.

Side note: After being acquired by Sun, we learned that Sun will standardise on Mercurial. However, our decision on Bazaar was in the works already before MySQL was acquired and won’t affect Sun’s policy.

What is in it for the MySQL community? A more open environment for sharing MySQL code, and for working on it. Using Launchpad (http://launchpad.net), the Bazaar public web interface, Sun can now offer a better code repository for internal and external work on MySQL. This repository is now available at http://launchpad.net/mysql-server.

For readers not familiar with Bazaar and Launchpad, I recommend Canonical’s Projects page for clarifications. However, do note one thing: That page says that “Launchpad is a collaborative system developed by Canonical, and used to keep track of many aspects of open source development including bug tracking.”. We’re using Launchpad as a code repository, but we’ll continue to use our own same bug tracking system, at http://bugs.mysql.com.

The “Installing from the Development Source Tree” chapter of the MySQL 5.1 manual has been updated to reflect the switch to Bazaar.

Over the weeks and months to come, you can expect articles and blog posts about how to work with Bazaar. As we are still in the infancy of this new experience, we will welcome community advice and articles on this matter. Please contact us at ‘community’ ‘AT’ ‘mysql’ ‘DOT’ ‘com’, or just blog about your thoughts. We are listening!

Links: