New and Improved Text UI
The current text UI in the installer is difficult to improve and extend as we add features to the GUI. We really don't want to be maintaining two complicated UIs.
- Name: Chris Lumens <firstname.lastname@example.org>
- Targeted release: Fedora 11
- Last updated: 2009-02-04
- Percentage of completion: 50%
What do I mean by "simplifying text mode"?
- Text mode is not going away, contrary to what you might have heard.
- I have removed many of the more complicated parts of the UI, turning text mode into the truly minimal install experience that a lot of people have asked for. You get a package set that's small but still able to install updates and new packages. You get the initial partitioning screen (choose your disks and handwaving layout) but not the second screen.
- We more strongly suggest VNC or xdriver=vesa, but text is still there if you want and still as a fallback should the graphical installer fail to start. Maybe that last bit should be changed.
- For kickstart, there is an additional wrinkle. If you don't leave anything out of your kickstart file, it'll work just like always. However if you do leave a section out (like %packages), anaconda stops and prompts for input. This works fine for some steps, but not for the ones we've removed from text mode. So if you leave out the %packages section, anaconda will crash because there's no longer a package selection step in the UI. I believe we should halt and error out on these sorts of problems, but that we should also detect that information is missing from the kickstart file very early on and halt before doing anything permanent. pykickstart gives us the power to do that.
There is an updates image that can be used with anaconda to see the current state of the simplified text mode. If you want to give it a try, simply add the following parameters to your boot command line:
Benefit to Fedora
Currently the text UI is a place where a lot of bugs and unwanted situations have the potential to occur. A direct benefit to fedora is the reduction of the anaconda code base (less is more). Moreover it gives the anaconda development team a change to concentrate on the anaconda backend and the graphical GUI.
- Text mode and graphical mode are completely separate codebases as far as the interface is concerned. We don't have some magic interface language that can display under both modes. What this means is that anything we add to the graphical mode needs to be coded up again a second time for text mode.
- Text mode only supports a subset of the graphical mode's features. For instance, you can't do LVM in text mode. Nor can you do encrypted filesystems, resizable filesystems, add repos, or edit repos. This situation is only going to get worse over time. Why is this the case? First, because it involves duplicating all the tedious work of writing a UI and no one wants to do that. Second, the screen real estate on the console is quite limited and things like LVM just don't fit in the space available.
- We already have alternate install modes available. You can do automatic installs via kickstart, or you can use VNC.
- If the graphical installer doesn't work, the fix is not to have a completely different path to go down. The fix is to fix graphical installs. Having said this, we still do have work arounds possible. You can always add xdriver=vesa as a boot parameter if the normal driver for your card doesn't work under X. My latest patch to the list makes it more obvious that you can do this.
There is no formal test plan, aside from doing regular text-mode installs both interactively and through kickstart and verifying there are no crashes. The test matrix probably needs to be changed to take into account some of the changes I'm making, though. In particular, we'll need to test missing sections of kickstart files in text mode as well as interactive kickstart installs in text mode.
We have already had one test day which came up with a few important problems:
This work is being done on a separate branch of anaconda and is being tested through an updates.img. Should it not be done in time for the release or fatal bugs be found, we can simply not merge the branch and continue working on it for the next release.