With permission, I'm forwarding an email from Mark Shuttleworth about Bazaar-2 (aka Bazaar-NG), a distributed source control system (not entirely unlike bitkeeper, I presume) written in Python and in use by the Ubuntu system. What do people think of using this for Python? Is it the right model? Do we want to encourage widespread experimentation with the Python source code?
--Guido van Rossum (home page: http://www.python.org/~guido/) ---------- Forwarded message ---------- From: Mark Shuttleworth <[EMAIL PROTECTED]> Date: Aug 11, 2005 12:13 PM Subject: Distributed RCS To: Guido van Rossum <[EMAIL PROTECTED]> Cc: Steve Alexander <[EMAIL PROTECTED]>, Martin Pool <[EMAIL PROTECTED]>, Fredrik Lundh <[EMAIL PROTECTED]> Hi Guido Steve forwarded your mail to me regarding distributed revision control, so I thought I'd follow up with some thoughts on why I agree with Frederick Lundh that it's important, and where we are going with the Bazaar project. First, distributed RCS systems reduce the barrier to participation. Anybody can create their own branches, and begin work on features, with full revision control support, without having to coordinate with the core RCS server sysadmin. So, for example, if someone gets an idea to work on PEP X, they can simply create a branch, and start hacking on it locally, with full RCS functionality like commit and undo, and logs of their changes over time. They can easily merge continually from the trunk, to keep their branch up to date. And they can publish their branch using only a web server. With Bazaar, these branches can be personal or shared group branches. The net effect of this is to make branching a core part of the development process. Each feature gets developed on a branch, and then merged when its ready. Instead of passing patches around in email, you find yourself passing out branch references, which are much easier to deal with since they are always "up to date". In Launchpad, we have evolved to work around this branch-per-feature approach, and built a review process so that each branch gets a review before the code is merged to the trunk. It also has a positive social impact, because groups that are interested in a feautre can begin to collaborate on it immediately rather than waiting to get consensus from everybody else, they just start their branch and get more testing when it is reaching a reasonable state of maturity - then the project decides whether or not it lands. That results in less argument about whether or not a feature is a good idea before anybody really knows what it's going to look like. Those who are interested, participate, and those who aren't reserve judgement till it's done. As for Bazaar, we have just wrapped up our latest sprint, where we decided that bazaar-ng (bzr), which is being written in Python by Martin Pool, will become Bazaar 2.x, in the first quarter of 2006. The current 1.x line of development has served us well, but the ideas we developed and which have been implemented as a working bazaar-ng reference by Martin are now proven enough that I'm committing the project (Ubuntu, and all of Launchpad) to it. Martin will continue to work on it full time, and will be joined by the current Bazaar 1.x team, Robert Collins, David Allouche and James Blackwell. That makes for a substantial chunk of resources but I think it's worth it because we need a truly superb free revision control system when dealing with something as large and complex as an entire distribution. The whole of Ubuntu will be in Bazaar in due course. Currently, we have about 500 upstreams published in the Bazaar 1.x format (see http://bazaar.ubuntu.com/ for the list), all of those will be converted to Bazaar 2.x and in addition we will continue to publish more and more upstreams in the 2.x archive format. We actively convert CVS and SVN upstreams and publish them in the Bazaar format to allow us to use a single, distributed revision control system across all of those packages. So there's a lot of real-world data and real-world coding going on with Bazaar as the RCS holding it all together. Perhaps more importantly, we are integrating Bazaar tightly with the other Launchpad applications, Rosetta and Malone. This means that bug tracking and translation will be "branch aware". You will be able to close a bug by noting that a commit in one of your branches fixes the bug, then merging it into the relevant mainline branch, and have the launchpad bug tracker automatically mark the bug as closed, if you wish. Similarly you will be able to get the latest translations just by merging from the branch published by Rosetta that has the latest translations in it for your application. The combination of distributed revision control, and ultimately integrated bug tracking and translations, will I think be a very efficient platform for collaborative development. Bazaar is free, and the use of Launchpad is free though we have not yet released the code to the web services for bug tracking and translation. I hope that puts bazaar into perspective for you. Give it a spin - the development 2.x codebase is robust enough now to handle a line of development and do basic merging, we are switching our own development to the pre-release 2.x line in October, and we will switch over all the public archives we maintain in around March next year. Cheers, Mark _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com