All About Ubuntu Flavor Development

Most of Ubuntu flavor development does not require any coding skills, as the first time reader might soon find out. But, to be able to get one foot in, one probably needs to get some sort of overview of how a Ubuntu flavor is developed.

Also, to be able to perform tasks efficiently, one needs to have easy access to information on how each related development task can be performed.

This documentation is written for those two purposes, and aims at simplifying the process of becoming a Ubuntu flavor developer, both for the unskilled newbie as the veteran developer.

Not all of this might be interesting to you, depending on what you intend to do, but should contain all of the information you need in order to develop a Ubuntu flavor distribution.

What Makes Up a Ubuntu Flavor Distribution/Operative System?

Quick Links:

Simply put, what a Ubuntu flavor distribution consists of is:

  • Package repositories - where all the installable Debian binary and source packages reside (shared by all flavors)

  • Seeds - lists of package dependencies for the flavor, used for creating the meta source package

  • Meta package source - When built, results in one or many installable meta packages,

  • Default settings and other custom packages
  • ISO installer - the ISO image, which can be used to install the actual operative system

Package Repositories

Quick Links:

All of the community maintaned flavors share the same repositories for installable package. The repositories for Ubuntu are currently called:

  • main - officially supported by Canonical

  • universe - community maintained

  • multiverse - non free software

  • restricted - officially supported non free software

The universe repository holds the flavor specific packages, but a flavor also consists of core packages from the main repository.


Quick Links:

When building a meta package, it looks for the dependencies from what we call seeds. The seeds are basically a set of text files, where all the package dependencies are listed.

Task Installs (correct term?)

The seeds are also used for creating "task installs", which are selectable from a expert install medium, such as the Ubuntu netinstall.

The Meta Package Source

Quick Links:

The flavor meta source is a single package source, which, when built, may result in a multitude of binary debian meta packages. For example, ubuntustudio-meta is a source package, and when built will result in a number of installable binary packages, all beginning with the name ubuntustudio-.

The metas themselves are always empty, but depend on a set of other packages, some of them core packages that all flavors share, and others which form what you could call a package set - a list of packages that make up that flavor.

see all existing package sets here:

The flavor meta packages are all installable from the Ubuntu Universe repository, which as said is shared by all the flavors.

You can quickly take a look at a meta source package by getting it trough apt. For example (replace <flavor> with your flavor of choice):

$ cd /tmp
$ apt-get source <flavor>-meta
$ cd <flavor->-meta
$ cat update.cfg
$ cat debian/control

The files that are primarily interesting to look at are probably:

update.cfg - has the instructions where to find the seeds, and which to include for the build
debian/control - list of meta packages that will be built

Default Settings and Other Custom Packages

At the very least, each flavor will have a package called <flavor>-default-settings. This is not an empty package, and includes some specific system settings for that flavor.

Some flavors will have additional special packages, such as theming packages, or flavor specific applications.

The ISO Installer

There may be several build systems. One is for the live ISO.

Ubiquity is the Live installer, and contains instructions for each flavor.

Where to begin?

Install The Development Release

If you're planning on doing any kind of testing, the first thing you need to do is make sure you have the appropriate flavor installed, and ready to be tested.

Set up a Launchpad Account

Launchpad is the central administrative tool used, where bugs are reported, where plans are blueprinted and where packages can be uploaded to PPAs for testing, etc. So, no matter what you do, you will need a launchpad account.

Set up basic dev tools

Even if you are not planning on doing any packaging, at the very least you will need to set up a gpg key with which you need to sign the code of conduct at Launchpad. The gpg key is also used to sign packages, when building them. Signing the packages is required if you wish to upload the source package to a PPA in launchpad.

If you're going to do any kind of private source management on launchpad, you will need a ssh key. SSH is a protocol used to create encrypted connections to remote places.

Planning - Blueprints

Planning done in Launchpad, using the blueprints system, with workitems, etc

Testing/QA - Quality Assurance

Testing ISOs

Other Forms of Testing

Newly Uploaded Packages - Set Up Notification

Autopilot Testing

UTAH Testing


Two kinds of updates ..


When just wanting to add a newer version of an application to a release. This update does not fix any bugs, but may add some new features.

Stable Release Updates

When there is some sort of serious bug that causes major problems for users.

Bug Management

Setting up bug notification

Fixing bugs upstream


Anything from fixing minor bugs, to creating packages from scratch will require some knowledge of Ubuntu and Debian packaging.

Feature Development Strategy


Support, PR and User Interaction

So, where do we meet our users?

  • social channels
  • mail lists
  • IRC (chat)
  • website

Information on various Development Tools

UbuntuStudio/DeveloperDocumentation/Scratchpad (last edited 2013-05-17 01:50:29 by zequence)