DerivativeDistroHowto

Table of contents

Scope

This page is unofficial guide how to create Ubuntu derivative distribution according to Ubuntu policies and common sense, so that cooperation between derivative distro and Ubuntu is maintained and both can benefit from it.

It is a collection of links to discussions, tools and useful pages, but note that even statements from Ubuntu employees are not legally binding and the final rules are set by legal documents . However, by obeying rules stated here you present good will and cooperation with the community.

Rationale

Ubuntu (and its main derivatives) are great distributions, but they do not fit all possible needs and use cases. By creating derivative distributions it is possible to spread Linux into more environments and Ubuntu itself can be improved by feedback from derivatives. It is also worth noting that Ubuntu itself is derivative of Debian distribution.

Ubuntu not only allows, but also encourages creation of derivative distros (if it is reasonable):

The creation of derivative distributions based on Ubuntu, where the
trademark is respected according to our policy[1], is not only allowed, it
is encouraged.  If your tool makes this process easier, then everyone is
happy.  Thanks for your concern.

[1] http://www.ubuntu.com/aboutus/trademarkpolicy

Source: Matt Zimmerman from Ubuntu (https://lists.ubuntu.com/archives/ubuntu-devel/2006-December/023054.html)

Derive or not?

The decision to create derivative distro should not be taken lightly. Improving Ubuntu is much easier when you work directly on Ubuntu and your changes will be much more widespread and will be for benefit of everyone, so before taking decision to create derived distro, please think carefully if it is really needed. There are many different ways to contribute to Ubuntu, so maybe you can fit your needs into main Ubuntu.

If you really think you cannot work directly on Ubuntu, consider joining one of existing Ubuntu derivatives. Splitting forces on many minor projects will not help fixing bug #1. It is better to join forces.

You can see list of Ubuntu derivatives in section "Existing ubuntu derivatives".

Kinds of derivative distros

Deriving from distribution can be done on many different levels, depending what are exactly your needs and reasons for creating derivative distros. Ubuntu recognizes the following types of derivative distros:

  • Level 1 (official flavours): Ubuntu Foundation endorsed and supported derivatives, including Kubuntu and Edubuntu
  • Level 2 (unofficial flavours): includes a different selection of packages but no modification of code
  • Level 3 (binary inherited): a derivative stored in a separate archive, with no modification of code
  • Level 4 (source derivative): binaries are rebuilt, no source code changes but possible configuration changes, e.g. hardened Ubuntu
  • Level 5 (standalone derivative): includes source code changes, e.g. Guadalinex

Source: Ubuntu wiki page DerivativeDistroProcess

It is also worth to note that there are also distributions which contain many changes and take packages from different sources (for example mix Ubuntu and Debian packages).

Usage of Ubuntu servers as sources of binary packages

If your derived distro is binary compatible with Ubuntu and you cannot afford providing your own servers with packages, it is OK to use Ubuntu servers as package source:

> Say that I would fork Ubuntu, making only small changes that does not
> effect the system's packages. Would it be OK for that system to use
> Ubuntu's official package archives, or are they for Ubuntu only?

Ubuntu mirrors are open and accessible to everyone who wishes to download
the data they hold.

Source: Statement by Matt Zimmerman from Ubuntu (https://lists.ubuntu.com/archives/ubuntu-devel/2006-March/016900.html)

The Ubuntu archives are a public service for anyone to use; mirror policy is
at the discretion of the operator, but these are also public as a rule.

Source: Statement by Matt Zimmerman from Ubuntu (https://lists.ubuntu.com/archives/ubuntu-devel/2007-January/023107.html)

Of course, if your distribution grows large enough you should consider providing your own repository or at least adding (possibly partial) mirror hosted by you.

Note: this statement applies to Ubuntu mirrors maintained by Canonical and other public mirrors, other mirrors might have different policy, so it is recommended to check thoroughly mirror policy before using them.

Trademarks

Warning: The only legally binding statement about trademarks can be obtained directly from Canonical. If in doubt, please contact their legal representatives.

Ubuntu trademark policy is stated on Trademark Policy page.

Advices below are not legally binding and should be considered only outline of what is expected to do when creating derivative distro.

File /etc/lsb-release

File /etc/lsb-release contains name of distribution used by some automated tools, but the name of distro from this file is also displayed in some places. The recommended solution is to change DISTRIB_DESCRIPTION in this file, but leave DISTRIB_ID intact.

Source: Statement by Matt Zimmerman from Ubuntu (https://lists.ubuntu.com/archives/ubuntu-devel/2007-January/023107.html)

Default user name

Default user in Ubuntu live CD is "ubuntu". It is probably not really trademark infringement to leave this name, but since it is easy to do, it should be changed. Source: Statement by Matt Zimmerman from Ubuntu (https://lists.ubuntu.com/archives/ubuntu-devel/2007-January/023107.html)

In Ubuntu Oneiric and Later the default user is automatically set to the distribution name specified in .disk/info file on the CD.

Logos embedded in packages

Some packages (for example Ubiquity) contain Ubuntu/Kubuntu logos which are displayed in application. They must be removed or replaced with distro logo in derived distributions or permission to use them must be obtained from Canonical.

Source: Statement by Matt Zimmerman from Ubuntu (https://lists.ubuntu.com/archives/ubuntu-devel/2007-January/023107.html)

Package names

Package names contain strings like "1.4.4-0ubuntu1". It is not necessary to change their names in derivative distro.

Source: Statement by Matt Zimmerman from Ubuntu (https://lists.ubuntu.com/archives/ubuntu-devel/2007-January/023107.html)

Stating relationship of derived distro to Ubuntu

It is OK to state that your derived distro is based on Ubuntu by saying "MyDistroName, based on Ubuntu". It is not legal to state that your distro is "Something Ubuntu" or similar.

Source: Statement by Matt Zimmerman from Ubuntu (https://lists.ubuntu.com/archives/ubuntu-devel/2007-January/023107.html)

Stating that your distro is based on Ubuntu is also a way of giving credit to community which you base your work on.

Tools for building distro

Live CD

The easiest way to build your own distro is to use Ubuntu live CD and customize it to your needs. There are 2 tools which make this easy:

  • Reconstructor - is a tool with graphical interface, which allows customizing Ubuntu. It can change splashscreen, boot screen, wallpaper and other Gnome settings.

  • Ubuntu Customization Kit - is a tool which provides both graphical interface and possibility of automatic building of live CD using scripts. It works for Ubuntu, Kubuntu and other Ubuntu derivatives. It allows customizing main filesystem image, initrd, and ISO. GUI allows installing languages, changing default boot language and spawning package manager and console for further customizations.

  • Remastersys - A graphical tool that can create a Live CD / install CD from an installation of Ubuntu.

If you do not want to use these tools, you can find description how to remaster live CD on this page.

Install CD

(TO IMPROVE)

  • Remastersys - A graphical tool that can create a Live CD / install CD from an installation of Ubuntu.

Feedback to base distribution

By providing feedback to base distribution (i.e. Ubuntu), you help improve base for all derived distributions and express gratitude for using other people work. It is strongly recommended to transfer patches, bug reports, docs, translations, etc. back to Ubuntu (if they are applicable), this way everyone can benefit from common work and we are growing stronger as a community.

Bugfixes and patches

Patches for bugs should be sent to Ubuntu and as far upstream as possible. For example, patches to kernel should be sent to kernel lists, patches to KDE to KDE lists, etc. As fixing bugs through upstream might not be possible or it takes long time to get to Ubuntu (for example patches might be applied to newest release of package while Ubuntu is using some older version), it is recommended to send fix also to Ubuntu. Recommended way is to attach patch to bug report, so that everyone interested in bug can use it and maintainers of package know how to find it.

Bug reports

Bug reports relevant to Ubuntu should be reported in Launchpad. It can be made very easy to share bug reports if you use Launchpad for your distribution. Then a bug can be attached to you distro and to Ubuntu. In Launchpad it is also possible to attach bug to upstream bug.

If you do not want to use Launchpad, please add relevant bug reports in Launchpad to Ubuntu distribution, stating clearly that it was found in other distro, but should also apply to Ubuntu.

If bug affects also upstream project (like KDE or GNOME), the bug should be also reported in proper upstream bug tracker, so that other distros, not derived from Ubuntu, could benefit from it. Launchpad bug report should be attached to such upstream bug.

Translations

Improved translations should be sent to proper upstream project and, if possible and appropriate, imported into Rosetta (using PO file import). Importing to Rosetta should be approved by proper translation team. If translation cannot be imported into Rosetta, but it is accepted upstream, it will be fetched automatically during next Ubuntu release by syncing translations with upstream translations.

Existing ubuntu derivatives

Other interesting links

DerivativeDistroHowto (last edited 2013-01-15 10:09:00 by shveloo)