Provide additional functionality and polish to oem-config. Keep oem-config in sync with changes in ubiquity by merging the two projects into a single source tree.

Release Note

A number of changes have gone into oem-config to make it more flexible for OEMs looking to deploy Ubuntu.


OEMs and OEM engineers have expressed a desire for a number of specific changes to be make to oem-config, to bring it more in line with their needs.

User stories

  • Bob's graphics card will not work properly until after oem-config has been run.
  • Mario would like to provide a EULA for software his company is distributing with their Ubuntu image.
  • Dave is confused as to why he has a number of language pack updates to install for languages he does not speak.




  • Investigate falling back to bulletproof-X or failing that, the console-based oem-config when X fails.
  • Add success and failure preseedable commands to oem-config, to match the ones in ubiquity. (Implementation: Done by merging oem-config and ubiquity.)

Merge ubiquity and oem-config

ubiquity and oem-config are similar in structure and function, but are not built from the same source. This has created a number of problems in the past as copy and pasting code shared between the two projects is often forgotten. For this reason, the two projects should be merged and built as separate packages from the same source tree, or alternatively built as a single application that changes functionality based on a command line parameter.

Care should be taken to preserve history. This can also serve as an opportunity to clean up some of the cruft that has accumulated in the structure of both projects as they've evolved.

If this portion of the specification is not completed in time, recent changes to ubiquity should be carried over, such as a newer version of the timezone map and the keyboard selection UI.

Implementation: Done. The work was tracked in the branch lp:~mterry/ubiquity/oem-config-merge

Timezone selection

  • Provide translated timezones in the drop down lists. (implementation: Done. This work was tracked in the branch lp:~mterry/ubiquity/translated-timezones)

  • Add country information to the timezone selection logic, so that when someone clicks south of Austin, TX they do not end up with a Mexican city selection. This will involve adding multiple colors to the color coded map for the same timezone, and modifying the timezone code to account for the change. (implementation: Done for Mexico-US border.)

  • Add GeoIP support (already being worked on by cjwatson) to make a better default timezone selection.

Network setup

  • Copy Network Manager portion of the keyring to the target system at install.
  • Look into embedding network-manager-netbook or some other NetworkManager frontend in the interface when running in only-ubiquity mode or when in oem-config.

Extra language pack removal


Some OEMs preseed all of the language packs to be installed, but the user only ends up using one set, which leads to lots of unnecessary updates for the user. It was suggested that an interface to choose which language packs to keep and which to remove be added to oem-config, but doing this strikes me as dumping the problem created by how we deal with language selection and language packs on the user, who likely doesn't want to be bothered with this kind of question. This should be investigated further and automatically removing unneeded language packs or moving the functionality into computer-janitor be considered as alternative options.

Ability to add pages

It should be easy for OEMs to add pages to oem-config using a component that either does not require a backend (asking questions for itself) or a component that automatically picks up and handles confmodules. Either one will feed information to the frontend in a stanardized form it can use to construct an interface.

It should also be made easy to add translateable EULA pages, either by dropping them in a known location on the filesystem, or by a pointing a special EULA oem-config component at them.

Implementation: Done. The work was tracked in the branch lp:~mterry/ubiquity/plugins.

Test/Demo Plan

Test cases already exist for oem-config and ubiquity as part of the CD testing procedures.

Unresolved issues

  • Investigate whether it's now possible to create a user with non-latin characters in the username.

UDS Lucid Notes

OEM Config Improvements Suggested by OEMs or OEM Services Engineers

What Got Done Last Cycle

  • Ubiquity/OEM-Config merge
  • Translated timezones
  • Basic plugin system
  • US/MX border line

What Did Not Get Done Last Cycle

  • Fallback for when X fails
    • Mostly done for Lucid
    • Except if oem-config dies: need to hook up oem-config-dm to bullet-proof X
  • Copy NM setup to /target (in non-oem mode)
  • Embedding NM (deferred for now, low priority, embeddable NM being developed elsewhere(?))
  • geoip (only tells us country, not more specific without a partner deal)
    • could use geoclue instead, but geoip has the potential to be more specific with a partner
    • Canonical RT #33677; IS say that this should be possible for Lucid
  • Extra langpack removal
    • Pull out scripts/install.py:remove_extras.
      • Need to be careful about not ripping the ground out from beneath us. Could push the call to the very end of the install.
    • Show only languages that have language-support packages available at oem-config time?
    • oem-services has a patch for this (prefers a different list and fallsback to normal list -- will share)
  • Support for adding packages (on disk) like langpacks and codecs after install (oem-services has a whole system for this and we can share if interested)
  • Removing OEM config package after finished doing work
  • Not all pages are plugins (http://wiki.ubuntu.com/Ubiquity/Plugins)

  • Some bits of plugin system could be more useful (allow subclassing)
    • Basically just add the plugin directory to PYTHONPATH
  • Expose hostname question during oem-config
    • race condition with NM (fixed for karmic in 2.0.9 by not setting hostname in oem-config)
  • Can't type to select in timezone drop-down due to a GTK+ bug - escalate with DX
  • non-ascii passwords are allowed in ubiquity, but disallowed in later password prompts like gksudo
  • after install, jockey doesn't have an up-to-date apt cache


FoundationsTeam/Specs/KarmicOEMConfigImprovements (last edited 2009-11-19 17:07:32 by 63)