Summary

Tools and a workflow to provide truly localized CD images. This goes beyond merely installing the right translations, we also want to localize e. g. default bookmarks, or provide a custom background image.

Create a set of tools for providing these as ubuntu-defaults-name addon packages (as declarative as possible), and build CD images with this extra customization package. Through this spec, these packages will be referred to as defaults packages. name would usually be a language or region name, but it will just as well work for flavour/project names.

With this, concrete localization projects like desktop-o-qin-ubuntu-china will be a lot easier to implement.

Release Note

The new ubuntu-defaults-builder package allows you to easily create a "default settings" package for Ubuntu and then build a customized image with it. The main purpose for this is to provide a standard and safe way to create localized Ubuntu images, or OEM custom projects. Please see man ubuntu-defaults-template and man ubuntu-defaults-image for further information.

Rationale

Our only action after the user chooses his locale is to install the matching language packs and support (dictionaries, etc.), but true localization goes way beyond that: Locos want to customize default bookmarks, locale specific chat protocols, or preconfigured ibus input method modules. Right now Locos both have to figure out how to customize these settings by themselves, which is not easy and also rather intrusive sometimes. Often these changes can't be preserved during upgrades, and there is only little QA and advertising happening on those images.

By providing an official method for localizing CD images we want to make these Loco efforts both more visible and also much easier to implement. So far we have not made much use of the knowledge that Loco teams have, they are in a much better position than the core developers to know what should be adapted for their region.

This also mitigates the eternal CD size resource conflicts on which language packs to ship on the official CD releases.

User stories

Scope

This specification only deals with the mechanics of declaring, packaging, and shipping default settings, focussing on localizations, but settings are not limited to that. In particular, the following aspects are not covered:

This is also limited to settings which can be customized by just adding an additional defaults package (plus its dependencies). In some cases we might modify Ubuntu packages to look in additional data/override files/directories, but we don't support package removal or code changes with this system. If changes of that scope are desired, they need to happen with custom engineering, just as today.

Design

Customizable settings

For the initial version, the following default values will get customizable with defaults packages:

Workflow

Co-installability

Unlike existing metapackages like xubuntu-desktop, which are co-installable, the defaults package don't primarily define a set of dependencies, but a set of defaults. By nature it only makes sense to install one at a time, as they are meant to define what an image build result will look like. That is, while you can have an installation with both Ubuntu and Xubuntu packages, you have to decide whether the CD build you are about to do should be an Ubuntu or Xubuntu CD/product.

This will be enforced by

Implementation

In the following sections, Source is the user-provided file in the defaults package source, while Destination is where the defaults binary package will ship it.

The ubuntu-defaults-builder package will provide a dh_ubuntu_defaults debhelper program which will install all Source files into their destination location. With this, the logic can be maintained centrally in the ubuntu-defaults-builder source, and the defaults packages themselves only require a three-line boilerplate debian/rules. ubuntu-defaults-template will create an appropriate debian/control with the language name in the package description etc. It will also provide a standard debian/copyright with no templating, which the user can customize manually if desired.

Firefox bookmarks

Caveat: Right now these ini file bookmarks do not support favicons. If this is not sufficient, a fallback approach is to create and ship a /usr/lib/firefox/omni-l10n.jar based on the standard /usr/lib/firefox-4.0.1/omni.jar and change firefox to prefer using the former if present.

ubuntu-defaults-template pre-creates this file with just a comment about the format.

Firefox start page

ubuntu-defaults-template pre-creates this file with just a comment with an example.

Default Firefox search engine

ubuntu-defaults-template pre-creates this file with just a comment with some examples (google, wikipedia)

Note that the available search engines live in Firefox itself (it ships translated locale specific search engines), so if one is missing, we'd need to fix it there for the time being.

Unity launchers

ubuntu-defaults-template pre-creates this file with just a comment about the format and an example.

Radio stations in Banshee and Rhythmbox

ubuntu-defaults-template pre-creates this file with just a comment about the format and an example.

Background image

ubuntu-defaults-template pre-creates this file as empty. An empty file will be ignored.

Extra packages

ubuntu-defaults-template pre-creates this file with just a comment about the format and an example.

Requirements for the extra dependencies:

Language support

Defaults packages can't set the default locale, language, and keyboard layout. The installer and casper already assume that they can own these files (/etc/default/locale and /etc/default/keyboard), and change them according to the user settings. Likewise, for installing them into an existing system we do not want to change the current default, as this would be unexpected.

For these the defaults have to be set in the script which generates the ISOs, i. e. live-build. This will set the defaults for gfxboot and casper, which will then write it to the /etc/default/ files.

Test/Demo Plan

You can also build an image with the Chinese default settings (ubuntu-defaults-zh-cn package in Ubuntu 11.10) with:

in an empty directory with lots of free space (some 6 GB). You can then boot and test this with

Possible future improvements

References


CategorySpec

DesktopTeam/Specs/Oneiric/LocalizedCDImageTools (last edited 2011-10-29 18:06:45 by jpickett)