Thursday, 19 June 2008

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:

19 comments:

  1. Yay!

    Hopefully, it would now be easier for the community to track the MySQL code and provide patches! This has taken a very long time: It was in February of 2005 when it was announced the discontinuation of free BitKeeper. More than three years have passed since then.

    Regards,
    Antony.

    ReplyDelete
  2. 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.


    Does this mean that MySQL will eventually be moved to Mercurial? It's unclear from the "won’t affect Sun’s policy" comment.

    ReplyDelete
  3. @ D Rickard:

    No plans for us to move away from Bazaar. My point was: Other parts of Sun remain with the Mercurial policy.

    ReplyDelete
  4. this is very bad news given that Launchpad is closed source, *i’d like to know why exactly bazaar was chosen over mercurial.*. clearly mercurial is well (or is the best) supported by a wide variety of IDE, could you say the same for bazaar, just compare mercurial against bazaar for either the eclipse or netbeans plugin. i’m looking forward to your reply.

    ReplyDelete
  5. Interesting. I read most of the article look for their reasons for bzr over something else (darcs, git, hg, etc), but they didn't say much. Seems like git is out due to their requirements for windows ease-of-use, but the rest? Anyone who decided on bazaar have any input?

    ReplyDelete
  6. @MB, Bazaar is open source, GPL, a GNU Project. The bzr code browsing functionality in Launchpad is open source too, a project called Loggerhead. Launchpad is just a central place to register and publish branches for free.

    ReplyDelete
  7. Do I need to register in Lauchpad to branch?

    If true, that's insane.

    ReplyDelete
  8. @Mike no, you don't need to register in launchpad to branch. If you want to upload a branch to launchpad, you need to register so that you have an area to store your branch in, and so that we can keep people from overwriting each others work. But any branch published on launchpad can be branched anonymously, as you would expect.

    ReplyDelete
  9. Congratulations! :)

    Elliot: "bzr branch lp:mysql-server" should get you the main branch (trunk), which just took about 35 minutes here.

    See also http://datacharmer.blogspot.com/2008/06/from-bazaar-to-sandbox-in-5-moves.html for more technical information.

    ReplyDelete
  10. The MySQL source code has moved!...

    Even though we had been preparing the migration to Bazaar for a while now, today's announcement kind of caught me by surprise. But I am very happy about this move!
    While BitKeeper is an excellent tool and served us well the past eight (!) years, I wa...

    ReplyDelete
  11. MySQL Announces Move to Bazaar...

    It has been a while coming, but MySQL has announced their move to Bazaar for version control.  This has been a long time coming, and it is great to finally see it announced publicly.
    The published Bazaar branches include 8 years of history going back ...

    ReplyDelete
  12. I prefer gitorious or ShareSource because those sites are not closed-source like Launchpad.

    ReplyDelete
  13. Thoughts about OSS project hosting and the importance of controlling downloads...

    In a recent article, Matt Asay was musing about the aspects of hosting an Open Source project by yourself vs. using a public project hosting service like SourceForge, GitHub or Launchpad. He concluded that it's important for commercial/sponsored open ...

    ReplyDelete
  14. From Linus:

    And that's where it's important that the tool not
    separate out "top maintainers" from "other people".


    Does Bazaar follow this 'philosophy'?

    ReplyDelete
  15. [...] corso dell’ultimo mese, tutto il codice di MySQL è passato da BitKeeper a Bazaar. A darne notizia è lo stesso Kaj Arnö, attuale vice-presidente della società, il quale ci ha tenuto a ringraziare [...]

    ReplyDelete