Anaconda/NewInstaller

From FedoraProject

< Anaconda
Revision as of 18:07, 9 January 2013 by Duffy (Talk | contribs)

Jump to: navigation, search

Fedora 18 features an installer that is rewritten and redesigned from the ground up. The installer development team determined that a rewrite of the installer was necessary for a myriad of reasons, including the following:

  • The previous installer had an aging (around 13 years old) infrastructure that was difficult and time-consuming to maintain and improve, constraining new feature development. One current install team developer refers to the old infrastructure as "an incredible mess."
  • The performance of the old installer left a lot to be desired. Long-term tasks could not be performed in the background. This required long wait times and pauses throughout the installation experience. For example, as CPU and time-intensive tasks were processed, the UI would freeze for several moments until a given processing task completed.
  • The previous UI was not very responsive. This manifested in various ways, including a failure of the UI screens to redraw when the display was changed between a TTY and back to the UI.
  • The text-only version of the installer interface was a completely separate codebase, which increased the maintenance burden of the installer. This also increased the amount of work needed to implement new features as they would need to be written twice, once for each codebase.
  • The previous codebase was not written in a modular fashion. This caused issues where similar functionality in different modes (for example, GUI vs kickstart) used different logic and resulted in inconsistencies for users.
  • The automated kickstart mode of the installer was separate and incompatible with the UI modes of the installer. A separate utility, system-config-kickstart, was created solely to provide a UI for creating kickstarts since the existing UI could not be used for this purpose without a completed install.
  • The old installer's interface had a 'point of no return' past which any changes you'd made to your storage configuration could destroy data on your disk(s) and you couldn't go back to change it. Since the UI followed a linear path, this exact inflection point occurred close to the middle of the screen flow and required a rather discouraging pop-up dialog to explain the impact.
  • In previous versions of Fedora, the installer's interface followed a wizard design pattern , consisting of multiple linear screens with occasional nested modal pop-up dialogs. (See diagram below) While nothing is inherently problematic with wizards as a design pattern, the sheer number of screens required by the installer made it unwieldy. You could end up several screens into the process and need to go back and change something on an earlier screen, requiring a lot of clicking and screen flipping to go back and return to where you left off.


Linear-wizard-diagram.png


In order to address these and other issues, the installer development team changed the UI model from a linear wizard-based model to a hub and spoke model. Essentially, the installer UI has been distilled into two main menus, from which you can optionally visit various option screens. Each menu list out each sub-screen and summarizes the choices selected for each sub-screen so you can skip screens that you don't need to configure if you'd like. See the diagram below for a visual illustration of how the hub and spoke model works.


Hub-spoke-diagram.png

The new installer available in Fedora 18 addresses a number of issues that were difficult to solve in the old codebase:

  • The new installer is written in a modular fashion, so there aren't multiple copies of code that does the same thing scattered around the codebase.
  • Long-running tasks can be performed in the background as you use the installer. For example, when you first start the installer and land on the first screen for language selection, the installer is - in the background - attempting to auto-detect your network settings and set up a network connection for you.
  • The UI of the new installer has been written in such a way that it does not block and freeze up while waiting for CPU and time-intensive tasks to process.
  • The new installer is primarily based on kickstart, whether or not you are using the automated & unattended kickstart option to install, the text user interface, or the graphic user interface. All three share a common codebase, providing a more consistent experience across installation methods as well as a more easily-maintained codebase.
  • With the change to a hub-and-spoke model rather than a linear wizard model, the new UI allows users to entirely skip screens that they aren't interested in interacting with, streamlining the install process to only those screens that are most essential for installation to proceed.