Summary

Re-investigate tasksel for use in our text-mode installer to provide finer-grained package selection.

Rationale

Users often request more fine-grained package selection in the installer. Now that tasksel is much improved from when we decided not to use it for Warty, and now that Ubiquity is available as the simplest installation method, it may be time to consider reviving tasksel as an option in the text-mode installer. To do this, we need to sketch out reasonable subdivisions of our existing seeds as sets of packages that a user might want to install to perform a particular common task, perhaps with reference to the existing Debian tasks; work out how to express these in a reasonable way in our seeds, and transfer this data automatically to tasksel; and resurrect the relevant code in pkgsel.

Note that tasks can be used after installation as well; for example, aptitude supports them, or tasksel can be run later.

ColinWatson actively doesn't want tasksel in ubiquity as standard; it's too much complexity, and adding it in d-i is generally sufficient. (It's possible that derivatives may want it, so in that case we can add it but make it not appear in Ubuntu.) The main target for this specification is the text-mode installer.

These are the existing Debian tasks found in the tasksel package. (Apart from language and "special" tasks, Debian task policy is generally that each task should correspond to a specific thing a user wants to do.)

Use cases

Scope

Technical implementation of tasks. While specific tasks are considered here by way of rationale, this specification only covers the implementation of the task selection mechanism in Ubuntu; UbuntuServerTasks goes into detail on specific tasks for the server edition of Ubuntu.

Design

General tasksel changes

tasksel should keep quiet if only one task is available on the CD, and just install that task; that will preserve current behaviour for our alternate install CDs (unless room is found on those for additional tasks).

We will add a facility to pkgsel to install individual additional packages (mostly a Kickstart requirement, but this has been an occasional user request too).

Task storage

We will store the list of packages for each task in seeds, to ensure that all task packages end up in supported (and thus main/restricted) and to facilitate integration with overrides in the archive (via cron.germinate).

Seeds are derivative-specific (Kubuntu seeds are a bzr branch of Ubuntu seeds, etc.). By contrast, Task fields are both in the Packages file in the archive (which is archive-wide and cannot easily be derivative-specific unless you namespace the task names as in kubuntu-desktop) and used to generate Packages files on each CD/DVD image (which can be derivative-specific). For now, we expect most tasks not to be particularly derivative-specific, as the use cases seem to be mostly server bits and the odd development task, so we will just merge tasks for all derivatives when creating the archive's Packages file and have a loose policy of not putting desktop-specific packages in task seeds for supported derivatives. If derivative-specific options do show up later then we can come up with some way to distinguish their seeds so that the archive can know to namespace their task names.

Add /usr/share/tasksel/ubuntu-tasks.desc to some appropriate package (if all else fails, tasksel itself) with descriptions of each known Ubuntu task. This only needs to be updated when structural changes are made to the list of tasks, not for minor changes to the contents of tasks.

Testing notes

(This section is informative, and technically out of scope for this specification, but will be useful to testers.)

The server CD should offer all tasks with "Task-Section: server" in the header of their seeds. Netboot installations should offer all tasks with any "Task-Section:" header, with the possible valid exception of standard.

BoF agenda and discussion

Discarded ideas, kept for the record

Metapackage debate:


CategorySpec

ReviveTasksel (last edited 2008-08-06 16:19:20 by localhost)