Status

Introduction

This specification describes our strategies to allow for the effective branding of Ubuntu and derivatives. Some branding can be attained without affecting packages, other branding initiatives will require derivatives to rebuild or even modify and rebuild packages. We will also refer to aspects of Rosetta that should affect distro branding.

Rationale

Scope and Use Cases

Implementation Plan

We have discussed several approaches to branding, and in which cases they are useful. By necessity, our plan to improve the branding situation for derivatives is a combination of these approaches.

The Rosetta team has done some initial work to mark branded strings.

Many strings can simply be neutralized. This is the simplest case to handle, and subsequently requires no effort to re-brand for each derivative. We should apply this technique wherever possible, although it does not always make sense: for instance, the installer does need to talk about the distribution it's installing at some point. Similarly, development work is proceeding on debootstrap to avoid having to rebuild debootstrap simply to change the contents of the base system.

Runtime substitution strategies are appropriate for simple circumstances (e.g., Apache version string, Mozilla version string). In some cases, we can use the lsb_release command and have a reasonable chance of having the code passed upstream. Since it is not always appropriate to call an external program, we will need to add a liblsb-release to provide the functionality of lsb_release as a library and use it for identification strings.

A number of items of branding can be refactored by collecting branding data into central locations. This works well for artwork and for gconf configuration data.

Some items really require build-time branding. There are hard problems to be solved in the packaging system and in Launchpad before we can manage a separate build for every derivative. This isn't achievable for Breezy, so for the near term we must avoid it as far as possible.

The hardest part of the problem is branding human-readable strings. These must be translated, so retranslation is required after branding them. Upstream software rarely uses distro-specific branding, so we can deal with that on a case-by-case basis. Most branding applies to debconf templates, and most of that is in the installer; other packages, and indeed much of the installer as well, can and should be neutralized. For the remaining cases, we have the following (non-exclusive) options:

Tasks that need to be done once and for all

Tasks that need to be done for every derivative

Even after the above, it still remains to make some changes to source packages. We propose to create a tool to perform these changes in a guided fashion, with feedback from the user. This could be a script that uses HCT to make source package changes and publish them to a personal APT archive. (There are already similar projects around, see Branding System).

The following changes need to be made:

Having done this, Launchpad can perform CD builds (once it knows how to do this); it is simple to replace the splash image and bootloader text with appropriate branding at CD build time.

Outstanding Issues

Considerations for future development

More discussion required

UDU BOF Agenda

UDU Pre-Work

Implementation Notes

2005-05-10 ColinWatson: Added lsb-release-udeb. Initial work on using lsb_release in the debian-installer build process to get the distribution name.

2005-06-03 ColinWatson: Debian branding removed upstream from base-installer, partman-auto-lvm, partman-efi, quik-installer, and yaboot-installer.

2005-07-20 ColinWatson: Patch accepted upstream to base-config that removes huge piles of Debian branding, although not quite all of it. Stopped mirror/suite from being displayed, which allows removal of a difficult-to-brand string from all translations of base-config, cdrom-detect, choose-mirror, and iso-scan.

2005-08-05 ColinWatson: Debian branding removed upstream from anna, partman-target, and prebaseconfig.

2005-08-07 ColinWatson: choose-mirror changed upstream to read the preferred distribution from /etc/lsb-release.


CategoryUdu, CategorySpec, CategoryDerivativeTeam

DerivativeTeam/UDSNotes/UDU/Branding (last edited 2008-08-06 17:00:18 by localhost)