Mark Shuttleworth announced at OSCON 2008 that Launchpad will be open source within 12 months. This is good news. A lot of people have whinged about Launchpad's lack of open source status as the reason they don't use Launchpad for their project hosting (although it does seem that they are quite alright posting projects to Google Code). What people don't realize is that many of Launchpad's elements are already open source.
Recently, Canonical helped the Gnome community set up a "Bazaar Playground," a server which contains Bazaar branches created from the trunk and branches of Gnome's various Subversion repositories. This allows all the Gnome hackers to give Bazaar a test run and find out how wonderful their workflow can become using Bazaar. Everything from this project is available as open source software. I thought I'd post about the software used in the playground, as well as other software that can be used tho achieve similar functionality of Launchpad.
Bazaar and Friends (Plugins)
Obviously, Bazaar is the big part of this mix. If you're setting up a bazaar playground, it makes sense to that you'd need Bazaar. However, one of the great strengths of Bazaar is in its plugins. In this case, the bzr-svn plugin that will allow you to create bzr branches from an svn repository and push and pull from it just like you would any bzr parent branch. It's an excellent starting point for getting comfortable with bazaar without completely dumping subversion. It was a good transition for me as well, because I wasn't quite willing to commit (no pun intended) to bazaar when I first tried it out. Without bzr-svn, I wouldn't have been able to give bazaar a fair chance in working with my stable projects.
Loggerhead
I've never liked the Loggerhead name, but it's a great little piece of software. Loggerhead is a web viewer for bzr branches. A good example of what loggerhead looks like can be found here. It's always helpful to be able post a url for a specific revision, a diff between revisions, etc. The Gnome theme for Loggerhead took more work than expected, and so work is planned for making Loggerhead more easily themable in the future.
Patch Queue Manager
PQM has seriously changed the way that I feel about merge management. Just like Ian Clatworthy points out in his paper "Community-Agile Software Guidance", trunk should be release quality all the time. PQM makes it IMPOSSIBLE to break trunk, so trunk is always reliable. The basic idea of PQM is to take the whole queue of approved branches and merge them automatically if they pass all the tests. This leaves out the human error of merging, and keeps the quality of trunk up, so that development time isn't wasted trying to figure out who broke trunk, why, and how to fix it.
Bundle Buggy
The more I see and use Bundle Buggy, the more impressed I am with it. The code review voting is a new feature in Launchpad, but the Bazaar developers have been tracking code reviews and votes on the mailing list for quite some time. Bundle Buggy detects emails prefixed with [MERGE] (usually sent from bzr send), and tracks the comments made about the patch, until it has received the right amount of votes from the right people. All of this can be managed from the mailing list, so it doesn't require too much interaction for the review and merge process.
The last thing that I would like to point out is that, while you can still build an infrastructure close to that of Launchpad, you still can't just up and build a community around your project. While I've blogged about this before, Launchpad is about building communities of people around open source. So sure, you can use tools that work together similar to Launchpad, but do you really want to put your project in a corner of the internet where not many people will find it?
Comments on "Building Your Own Bazaar Playground"