Not logged in - Log In / Register

Derivative Distributions

As an OEM provider
I want to make a customized version of Ubuntu
so that I can ship the OS best suited to my hardware

As a Linaro partner
I want to create a new distribution/archive in the hosting software in 3 or 4 clicks
so that this does not require deploying a new instance for each distribution.

As a Linaro partner
I want this new distribution visible only to a certain set of people, and only a subset of that group can upload
so that it's easy to see who is in each of those groups on a single page, at most 1 click from the overview page of the distribution. It is also simple to modify each of the groups, with at most 3 clicks required to add or remove someone from one of the groups.

As Meg who works for a partner enabling pre-release hardware
I want to upload modified packages to an archive for a hardware project
so that others who are working on the project can then build on top of this work.

As Lou, the lead developer on the project
I want to go to a web page and see the current state of the archive
so that I am able to remove some obsolete packages. This can be done from a single page, and is at most three clicks to remove a package. Bulk operation should be possible.


We are doing this so it's easier for Linaro partners and Canonical's OEM team to build custom distributions.

This brings Launchpad's famous usability and feature set to more people who want to use it but currently have to use 3rd party products to do this.



Other blockers for stakeholder adoption


Nice to have



How will we know when we are done?

Bugs are at: Bugs for this LEP

From https://wiki.ubuntu.com/Specs/M/ARMArchiveBranching: There will be a number of milestone test cases that we have:

How will we measure how well we have done?


Creating a new distroseries

This is slightly simplified from the current one, and adds a help popup.


Initialising a distroseries

This is a separate step from the creation of distroseries since Ubuntu uses future uninitialised series as milestones.


New portlet for the distroseries page


This portlet can be replaced with a simple link to the initialisation page if it's currently uninitalised.

Questions for the derived distroseries portlet

Showing packages differences

Derived series differences


Questions for Derived series differences

Derived series missing packages


Questions for Derived series missing packages

Derived series unique packages


Questions for Derived series unique packages

User testing

Round 1

Took place as remote audio calls on July 28th and August 2nd 2010, with:

Transcripts and audio

Round 2

This testing took place at UDS-O in Budapest on Friday 13th May 2011. It was implemented as a user or users driving the beta state of the software as running on the staging server where Oneiric was set up as a derivative of Sid. The following points are noted as a result of this testing:

Trivial UI






I see three main "features" here:

  1. Creating distributions that can be uploaded to that will then build & publish packages.

  2. Synchronizing distributions and the associated UI & new controls.

  3. Creating derived distribution series.

There's also a bunch of associated stuff that must be considered:

Notes on Ubuntu New Release Cycle Process

Conversation w/ jml & cjwatson at Platform Rally January 2011.

Key steps from NRCP

These are steps 9-15 from https://wiki.ubuntu.com/NewReleaseCycleProcess

  1. Create symbolic links /srv/launchpad.net/ubuntu-archive/ubuntu-misc/more-extra.override.DSN.restricted -> more-extra.override.DSN.main, /srv/launchpad.net/ubuntu-archive/ubuntu-misc/more-extra.override.DSN.universe -> more-extra.override.DSN.main, and /srv/launchpad.net/ubuntu-archive/ubuntu-misc/more-extra.override.DSN.multiverse -> more-extra.override.DSN.main on cocoplum, where DSN is the new distroseries name.

  2. Notify Soyuz production team to run lp_publish:$ LPCONFIG=ftpmaster ./scripts/ftpmaster-tools/initialise-from-parent.py <new-distroseries-name> on cocoplum (takes around 8 minutes).

  3. Notify James Westby/Jonathan Lange to initialize the branches for the new series.
  4. Run the publisher once: lp_publish:$ LPCONFIG=ftpmaster-publish ./scripts/publish-distro.py -d ubuntu -vv -A -s DSN -s DSN-updates -s DSN-security -s DSN-proposed -s DSN-backports where DSN is the new distroseries name. This run will create the proper archive indexes for all suites (takes around 15 minutes).

  5. As lp_archive, use compare-archives to compare dists trees for previous and current distroseries and sign off on any differences; the only differences should be the distroseries name, that custom uploads (installer-*, dist-upgrader-all, and i18n) are missing from dists/DSN/main, that Release.gpg does not yet exist (this will be created when the full publisher cron job next runs), and that Contents-*.gz do not yet exist (these will be created when generate-contents next runs).

  6. Similarly, run the publisher once for the partner repository: lp_publish:$ LPCONFIG=ftpmaster-publish ./scripts/publish-distro.py -d ubuntu -vv -A -s DSN -s DSN-updates -s DSN-security -s DSN-proposed -s DSN-backports --partner -R /srv/launchpad.net/ubuntu-archive/ubuntu-partner/dists; compare and sign off on any differences. The new Packages and Sources files should be empty.

  7. Re-enable the Soyuz publisher cron jobs and wait for the first run to complete.

Old mockups

Creating a new derived distroseries: new-derivied-distroseries-mockup.png

New portlet for the distroseries page: derived-portlet-mockup.png

Showing packages differences: derived-series-diffs.png derived-series-missing-packages.png derived-series-unique-packages.png

Random notes

LEP/DerivativeDistributions (last edited 2011-07-25 09:29:56 by rvb)