Desktop/InstallExperience

= Problem Definition =

Our goal is to spread Fedora. This is a challenging task. Expecting a user to overwrite their existing OS is a tall order. Some of these issues we can't address through technology alone. That said, we should make every attempt to ensure the installation process is not yet another impediment to achieving our goal. We want the process of installing Fedora to be as streamlined and as enjoyable as possible.

= Principles =


 * Don't do today what you can do tomorrow
 * Simple steps, easy decisions
 * Achieve the user's goals efficiently
 * Only prompt for essential information
 * Defer configuration
 * Choose good defaults
 * Allow modification post-facto
 * Protect the user's data

= Requirements =

We can divide the installation process into two parts: that which occurs before reboot and that which occurs after. That which occurs before the reboot operates in an environment that does not run off the physical disk. That which occurs after reboot operates in an environment running off the freshly installed system. Therefore, based on the principles listed above, the only things the installer should do before reboot are those things required for reboot.

Before Reboot

 * Show examples of how Fedora will improve user's life and will fit into it
 * Convince user they have to have it!
 * Need to fall in love with it
 * Ensure the user knows what to expect
 * Display a tour of the OS experience
 * Select a device to use for the install
 * Verify installation will succeed
 * Prompt for Install type:
 * Install
 * Upgrade
 * Repair?
 * Reset passwords?
 * Other?
 * Preserve user data if applicable
 * (optionally) Allow device customization / modification
 * (optionally) Support dual-boot
 * Inform and delight the user while she is waiting

Before Inital Login
None of these tasks are applicable to upgrade type installs.


 * Determine language
 * Should be able to be suggested based on location

Automatically create the first user account (if none exist) and autologin to it and configure it on the fly.

Post Login
None of these tasks are applicable to upgrade type installs.

These are things that we could technically do post login.


 * Determine timezone / location
 * Can we automatically suggest one?
 * Not necessary to fix the time - that can be done in the desktop
 * Determine keyboard type / layout
 * Should be able to be suggested based on language
 * User profile
 * Real name
 * Username
 * Avatar
 * Password or autologin
 * Computer name
 * Ask if this person should be the administrator of this computer
 * If so then add to sudoers
 * Can we actually disable root if there are no administrators?
 * Choose network
 * Suggest based on strength / security

Questions

 * Do we support connecting to external directories (eg. LDAP) from this tool?
 * Note that language and keyboard need to be configured initially for the user to be able to complete the pre-install steps. In a live installer, we can get away with relying on the desktop configuration for this.

= Relevent Art =


 * http://people.redhat.com/mclasen/anaconda/
 * http://people.redhat.com/mclasen/ubiquity/
 * http://www.youtube.com/watch?v=TqyxcEg6jtA