Launchpad Branch Management

This is an overview spec covering different topics related to the management and presentation of baz branches in the Launchpad web infrastructure, and the supermirror.



This is an overview spec covering different topics related to the management and presentation of baz branches in the Launchpad web infrastructure, and the supermirror.

A number of sessions has been budgeted for this topic at UDU, it's likely that it will result in several spin-off specifications, listed below in the scope section.


We are pioneering the brave new world of massively distributed branch based development, across the entire distribution and thus the entire span of the open source world. All of those products, each featuring potentially hundreds of branches, is a recipe for a morass of branches.

Launchpad, including the SuperMirror (see SuperMirrorLaunchpadIntegration), aims to be a comprehensive web front-end to that network of branches, both those created by upstream and those created for HCT package management in the distro. We need to ensure that developers can use Launchpad to "visualize" the state of the branch network - what branches are out there, which are more important, which are "hot" this week, which result in releases (stable, or milestone branches), and what the relationships between branches are. We may also want to highlight long lived branches that belong to high profile / key developers. For example we could base this on roles in the project or karma, or other heuristics.

We will in effect need to describe a taxonomy and lifecycle for branches, so we can identify branches that have died and been merged to the mainstream, as well as branches that are more or less "alive" and "active" and "important".


This specification provides an overview of the big picture for branches in Launchpad.

We can picture this management as trying to make sense of a large amount of raw branch data. At the bottom level we need to infer and record BranchMetadata. At the top end, towards the user, we need to present that data in various ways.

Most previous tools have concentrated on presenting lists of branches in various forms: simple lists, trees, graphs. This is fine, but will not scale up to extremely large numbers of branches, and tends to depend on the user knowing what they're looking for. Instead, we need to guide them to the information that makes most sense for their goal.

As for a search engine, this may take the form of a prioritized list, with the possibility of either refining the query or drilling down from an initial approximate result to better results in the manner of, or It should be possible to see the matched branches not merely as names but in the context of each other: which one has more changes, is more stable, etc? The URLs just mentioned demonstrate approaches to deliver these outcomes.

Consider different user roles: developers looking for best code to work on, distributors, users, etc.

Use Cases addressed in the broken out specifications

  • John wants an RSS feed of project activity, or commits to an archive - see LaunchpadPersonalSubscriptions

  • Some branches are sealed or old / inactive : BranchMetadata

  • Sometimes a branch needs to be deleted : BranchDeletion

  • I may wish to hide branches I've created but are 'boring' from the WebUI . see BranchVisibility

  • John, a web user, wants to see what branches are associated with Mary. see BranchOwnership

  • Bob wants to see the most recent commits across the entire community. see BranchActivityVisualisation

  • John is looking at the Project page for GnomeBaker. John should be have provided for him relevant information such as the hottest branches, recently merged -> mainline branches. see BranchMetadata

  • Bob is looking at bug 400. He should see that it has been fixed in branch Foo, and that Foo has been merged to the mainline. See MaloneBazaarIntegration

  • Peter signs up for the launchpad having used Bazaar for a while. Launchpad asks him about branches with his email address - 'Are these yours' see BranchOwnership

  • John wants to see what the latest patch for GnomeBaker looks like. Launchpad should allow drilling down all the way into the diff. Perhaps via the SuperMirror? See ViewBazaarBranches

  • Mary wants to tell Launchpad that a particular branch is her main branch. See BranchMetadata

  • Mary also wants to tell us about her in-development feature Foo, which should be linked to bug 400. See BranchMetadata and MaloneBazaarIntegration.

  • John has fixed bug 400 and wants to tell the community that its fixed in his Bar branch. See MaloneBazaarIntegration

  • Grumpy wants to pull all the bugfixes for GnomeBaker and add them to the package. GrumpyMergingBugfixes

  • Fred is browsing the launchpad and finds an interesting branch that adds a feature he wants. See SoyuzDynamicBuilds.

    • Fred requests a package with that branch included
    • Launchpad builds the package for his architecture and gives him a temporary URL when its ready.
  • Rosetta can be told to watch a branch for translation. See RosettaTranslatesBranch

  • Peter is the project leader for GnomeBaker. He would like to be emailed whenever someone links a branch to a GnomeBaker bug see MaloneBazaarIntegration.

  • Some branch metadata is inferred and some is explicit. See BranchMetadata

  • the Baz client should be able to offer and retrieve launchpad data. See BazaarLaunchpadClient.

CategoryUdu CategorySpec

UbuntuDownUnder/BOFs/LaunchpadBranchManagement (last edited 2008-08-06 16:41:04 by localhost)