Progress on Distributed Development

James Westby jw+debian at jameswestby.net
Wed Jul 15 13:09:57 BST 2009


Hello all,

You may have been receiving emails from Launchpad that say something
like

  Branch linked: lp:ubuntu/karmic/<package>

or variations on this and wondered what is going on. Hopefully this
email will explain some of that.

== Launchpad Features ==

The Launchpad Code team have been working hard to allow us to host
branches of Ubuntu packages on Launchpad in their own namespace, and
with extra features that we would like for Ubuntu development. Not all
is complete yet, but some of the major parts are in place.

Firstly, you can now push branches to

  lp:~<username>/<distro>/<series>/<package>/<branch name>

rather than having to create a project for every package. This works
for Debian and Ubuntu, any series such as lenny, karmic, hardy etc.,
any source package name that has ever been in Debian, Ubuntu or a PPA.
This is your own area, and you are free to do what you like with
it.

The next feature is "official branches", which are supposed to be the
branches that correspond to the package in a particular
distro+series+pocket combination. These branches get an alias, such
as

  lp:ubuntu/karmic/gnome-session
  lp:debian/sid/kdebase-workspace
  lp:ubuntu/hardy-proposed/thunar

which allows you to grab them more easily.

Hosting these branches on LP means that you can now get access to all
the LP codehosting features, e.g.

  * Branch subscription: email with or without diff whenever a branch is
    changed.
  * Merge proposals: a dedicated area for code review with diffs, status
    etc. This avoids having to mis-use bug reports for some things we
    do.
  * Online code and history browsing.

Over and above the benefits you get from having the code in version control.

== Import of Ubuntu branches ==

We also want to provide branches on LP for every source package, so that
you don't have to think and can rely on them being there. For this
reason we are currently in the process of importing every source package
and pushing it LP as an official branch.

Because discrepancies between what is in the archive and what is in the
branch are a pain, these branches will also be kept up to date with what
is in the archive. Meaning that even if an upload is done and not
pushed, you will at least get the code in to the branch.

== What's left to do? ==

Firstly there are some more LP features that are being worked on, most
importantly the linking of branch write permissions and upload rights
for the official branches. This means that if you can upload a package
you will be able to write to the official branches for that package.
Also, we must complete the import of all packages and push the branches
to Launchpad.

Our work is certainly not done at that point though; we have just laid
the foundations.

There will be lots we want to improve in the client tools and Launchpad
to make working with the branches easier. If you have suggestions then
please talk to me. I'm not short on ideas though :-)

== How can I use the branches now? ==

There is some documentation at

  https://wiki.ubuntu.com/DistributedDevelopment/Documentation

that explains the main points about grabbing a branch, building it,
getting sponsorship, uploading and the like.

Note that these branches are testing the next bzr repository format,
as it is a huge win in terms of both repository size and performance.
This means that you need a recent version of bzr, at least 1.16. You
can either get this from Karmic, or the ~bzr PPA.

In addition, there are plenty of bzr-builddeb fixes just uploaded to
karmic, so you may want to use that version, though the Jaunty version
should work in most cases.

There will be a full announcement when we have the permission changes
in place and the majority of packages are imported, so keep an eye
out for that.

Thanks,

James






More information about the ubuntu-devel mailing list