Features/Firstboot

= Firstboot improvements =

Owner

 * Name: Ben Konrath, Chris Lumens

Current status

 * Targeted release: N/A
 * Last updated: 2007-09-27
 * Percentage of completion: 0%
 * What works: Modules, sets of modules partially work, navigation mostly works, running under X
 * What needs work: Running under GDM/RHGB/whatever, writing real modules, better documentation, packaging, init scripts

Detailed Description
This ties in with other efforts to improve the boot experience in Fedora (see Releases/FeatureBetterStartup, Releases/FeatureNewInit and Releases/FeatureBootShutdownSpeedup ). The overall goal is to give firstboot a modern look, remove unnecessary steps, and make the remaining ones more useful.

Detailed tasks:
 * Rewrite the firstboot module framework: Create a well-defined firstboot module API.  The main reasons for this are to make navigation much easier from the programming side and to provide an interface that module writers will really be comfortable with.  It will also provide the ability to more properly define a whole set of modules that operate together, like how RHN is presented on RHEL currently.  As many of the current firstboot features as possible should still be supported provided they make sense.
 * Run firstboot on the gdm X server to avoid flickering.
 * Language: it is already possible to select the session language on the login screen. We could just make gdm ask "Use this language system-wide ?" after language changes (with PolicyKit integration). This screen may still have to stay around for selecting the language in which firstboot runs.
 * Welcome screen: fine
 * License screen: fine, required to be there
 * Keyboard screen: it will be possible to select a keyboard layout on the login screen. We could just make gdm ask "Use this keyboard system-wide" ? Needs more thought
 * Root password: needs to stay
 * Network setup:
 * Timezone:
 * Firewall: should ideally go away. We may need better firewall support in the desktop to make this feasible.
 * SELinux: Should just go away
 * Date and Time: The desire is to turn ntp on by default (and have the service started via NetworkManagerDispatcher. Changing the clock may be moved to the clock on the login screen
 * Create User: We currently have 4 or 5 places where new users can be created and edited (anaconda, firstboot, system-config-users, about me capplet, bigboard). They are all pretty different and bad. We want to have a new user dialog that asks for the right information and leaves out unimportant stuff.
 * Pick a user photo (using a webcam, or from the login faces we ship)
 * Ask for the name name, and generate the the login from it
 * Ask for an email address (which might allow us to pull stored settings from e.g. mugshot after login)
 * Sound card detection: Already gone

Benefit to Fedora
Better first-time user experience (which is the most important one!)

Scope
This feature requires changes to firstboot, gdm and perhaps anaconda and various system-config utilities.

Test Plan

 * Verify that firstboot starts on the first boot after installation
 * Verify that firstboot presents the screens that we want, and no others
 * Verify that user creation works successfully, including the features that we want to add to the user screen

Dependencies
The "run on gdms X server" part will interact with the upstream gdm rewrite.

Documentation
Not much yet. The major classes that module writers care about (Module and ModuleSet) are documented with pydoc strings but everything should be verified after the API settles down. A module writing tutorial would be helpful too.

Source
The source code is available through git at http://clumens.fedorapeople.org/firstboot.git.