The Great Source Code Supermarket

Launchpad is kinda hard to describe. When I’m asked what it is, I normally use three or more of the words “open source free software support project Q&A code registration bugs management listing bazaar planning hosting”. Most people make comparisons to Sourceforge, Savannah, Berlios and Google code hosting, and while those are useful, it’s only a part of the picture. The other part, which is perhaps not as well understood, is that it’s also a public project registration service, similar to Freshmeat. Well, except for a twist.

Launchpad’s source code directory

In addition to providing a project registration service open to the public for free (with probably the best Google juice out there; this has caught some people off-guard before!), Launchpad takes this to a next step, and actually provides a unified interface for interacting with each project registered. The most obvious unified service that you can use today is our code directory, which I want to introduce here.

Now Launchpad provides some key features related to source code for free software projects:

  • Project registration: you can register any free software project on Launchpad (and separately, of course, have it hosted here — if you own it and want to).
  • Bazaar hosting: you can host Bazaar branches for any project, and you can fetch code using the bzr client.
  • Code imports: we allow you to request code imports for any externally-hosted project that uses CVS or Subversion.

There’s a really cool thing that falls out of the combination of code imports, branch mirrors and Bazaar: you can use bzr and Launchpad to fetch any piece of software we have registered code for. And Bazaar even provides a little shortcut that makes it even easier to grab the default branch for any project: bzr branch lp:<projectname>.

An open source supermarket

The effect is that you can, right now, pull a /lot/ of software in less than 30 keystrokes, without knowing or caring about what its native version-control system is, or where it’s hosted. Want to grab the Python source code? Just do bzr branch lp:python. How about Storm? bzr branch lp:storm. In fact, there are thousands of native Bazaar branches and over one thousand imported branches. Here are just a few examples of major projects you can pull right now:

  • Ruby on Rails:
    bzr branch lp:rails
  • Blender:
    bzr branch lp:blender
  • F-Spot:
    bzr branch lp:f-spot
  • Grub:
    bzr branch lp:grub
  • Twisted:
    bzr branch lp:twisted
  • Bazaar itself:
    bzr branch lp:bzr
  • GCC:
    bzr branch lp:gcc

Couldn’t find a branch listed for the project you want? We can sort this out for you, too. If it’s in CVS or Subversion elsewhere, you can just follow the instructions for setting up an import. If it’s a Bazaar branch, just register it and we’ll hook it up with the project’s mainline series record.

More on project branches

If you visit you’ll notice that it has an abbreviated project cloud, which lists all the projects with branches in Launchpad. The project’s name is rendered in different sizes and intensities according to how active the actual project is; the size of the name in the cloud is defined by the number of branches that the project has, and the intensity of the tag in the cloud is determined by how recent the last commit to any active branch is. And green indicates that there’s a default branch for the project, which means that the bzr branch lp:foo abbreviation works for it. There’s a also a page with the full code cloud.

So each of those projects has active source code branches that you can pull from Launchpad using Bazaar. For instance, to check the source code for Apport, you could click on its entry in the listing and getting there you could inspect the branches available and select one of them for pulling. For instance, if you chose Will Woods’ Fedora support branch you get instructions on how to pull it: bzr branch or even just
bzr branch lp:~wwoods/apport/fedora

Imports and today’s deliveries

Import requests are handled in a queue by Launchpad code ninjas; normally this it Michael Hudson’s responsibility but starting today I’ll be helping out too. Of the import requests I handled today, the following succeeded and are ready for grabbing in the great bzr-get-lp-colon fashion:

I’ll keep you posted on new imports as they come online. Meanwhile, go grab some branches and post some comments telling me what you think. If you have any problems or questions about our code hosting service, feel free to ask on the Launchpad code section in

4 Responses to “The Great Source Code Supermarket”

  1. n Says:

    Hi. I have some idea for launchpad. Sorry, I dont known where write this so write on here.
    – code references (like lxr, gnu global) over all sources.
    – code documentation (like doxygen)
    – server-side unittest infrastructure (like tinderbox)
    – server-side coding style, warning and typo checker
    – project import feature. if sourceforge, like
    – release info
    – distro patch pool on each project page
    – nightly build
    – project tagging and project dependence
    – project fork/split/merge
    – sub-project feature
    – manpage translation feature
    – mozilla-related programs translation feature (*.dtd and *.properties)
    – *.desktop translation feature
    – translation launchpad own
    – user review feature (usability, stability, etc.)
    – discussion place, poll and idea pool 😉

  2. ZIM Says:

    While I do have to say that launchpad is pretty neat, it is disappointing that one cannot do “bzr branch lp:launchpad.” What I am saying is that launchpad will only be accepted in the free software world once it is itself free software. Of course launchpad isn’t about being a infrastructure to develop free software, software that respects and even protects the users’ rights, but instead “An open source supermarket.” And since it isn’t about rights, but instead a software development model/process that launchpad is about, I high doubt that it will ever the source willever become free.

  3. kiko Says:

    n: Well, we do have a code browse feature hooked up to the branch imports. I’ll write about it in my next post relative to Launchpad’s code hosting. We don’t have sub-projects (components, in Bugzilla) but we do have project groups. We certainly have project release information (and announcements!) As for discussions, we have the launchpad-users mailing list, and the #launchpad channel on See you there.

    ZIM: I understand where you’re coming from, but I don’t agree with your assessment. Launchpad /is/ for promoting free software development, even if it’s not released as free software yourself. At any rate, it’s worth pointing out that the source code for the code import infrastructure is released as open source, and there are bugs that need fixing: — and there will be more code released as we complete the necessary work.

  4. Launchpad Blog Says:

    […] calls it the great source code supermarket. Using Launchpad and Bazaar, you can access the code and version control history of projects who […]

Leave a Reply