An introduction to collaborative development with Launchpad

By Ryan Paul | Last updated February 10, 2010 7:20 PM

Launchpad is a Web-based platform for collaborative software development, and it’s designed to enable collaboration among programmers, users, and the wide spectrum of other kinds of contributors who participate in the process of building and deploying software. It provides free project hosting for open source software developers and offers a number of important features, including a bug tracker, a version control system, a package building service, mailing lists, and an integrated framework for managing crowdsourced translations.

The Launchpad service is developed and operated by Canonical, the company behind the Ubuntu Linux distribution; it is one of the key enablers of Ubuntu development and is used extensively by the Linux distribution’s multitude of contributors. When it was originally launched in 2004, the service itself was not an open source software project. In response to strong encouragement from the Ubuntu community, Canonical released Launchpad’s source code last year under the open source GNU Affero General Public License (AGPL).

In addition to facilitating Ubuntu development, Launchpad is the home of over 16,400 open source software projects, including some well-known applications like MySQL and Zope. It hosts more than a quarter of a million code branches and over half a million bug reports. It is arguably one of the most popular project hosting destinations for open source software projects.

Bazaar

Launchpad’s sidekick is a distributed version control system (DVCS) called Bazaar. The current incarnation of Bazaar was developed in 2005 by Martin Pool, an employee of Canonical. One of the chief advantages of Bazaar is its intuitiveness and ease of use. It has excellent documentation and offers a much gentler introduction to distributed version control than some of its competitors.

(Readers who are unfamiliar with concept of distributed version control might want to have a look at the article we wrote about it last year, which includes an introductory explanation and a comparison of some of the popular implementations.)

Bazaar encourages a development workflow that makes heavy use of branching. When an individual contributor wants to work on a project, they create their own branch into which they push their changes. When the changes are ready, the contributor will propose merging the branch back into the trunk. The maintainers will evaluate the code and then either perform or reject the proposed merge.

There are no limits to the number of branches that a contributor can create. Branches can be made for minor changes that fix a few lines of code or for major overhauls that touch every corner of the code base. The beauty of this branch-centric model is that it makes it easy for third-party developers to actively modify the program and publish their changes in parallel without needing direct commit access to a central repository.

Using Bazaar for version control, Launchpad is largely designed to facilitate that development process and make it as seamless as possible. It hosts branches, offers support for proposing merges, and has a built-in code review system through which maintainers can discuss changes with contributors; it totally obviates the need for individual developers to e-mail patches.

The Bazaar command-line and graphical tools are designed to integrate well with Launchpad. When you commit a revision, for example, you can specify the ID numbers of bug reports on Launchpad that are associated with the code change. The branch where the revision is pushed will show up on the Launchpad pages that display those bug reports. In the project’s bug report list on Launchpad, a little icon will appear next to every bug report that has an associated branch. This makes it very easy for a maintainer to see, at a glance, which bug reports have pending fixes from contributors.

Leave a Reply