I’ve been talking with some people at Red Hat about improving their installer. This is not as impressive as it sounds. Red Hat is local to where I live, and several of their developers are members of the local Linux Users Group, to which I belong, and the corresponding mailing list, to which I subscribe. On that mailing list, one employee recently asked an open-ended question: how can we make our installer better?

Coincidentally, I just installed Red Hat Linux 7.2 this weekend. I’m not a usability guru, but I’ve played one from time to time, including at a previous job where I led a major usability overhaul of an ERP system that eventually led to our getting Windows 2000 certified. I don’t know what that means exactly, and it certainly wasn’t why I started the project, but they seemed to care a lot about it at the time. Ours was one of the first 10 products in the world to get this hallowed certification, and I think they were hoping to get into a Microsoft press release. That didn’t happen, of course, and I think that failure indirectly led to our marketing director getting fired.

But I digress.

Anyway, I’ve spent some time thinking about Red Hat’s installer. Overall, it’s very good. First of all, it works; I installed Windows 2000 from scratch on the same laptop on the same day, and Red Hat correctly identified and set up my wireless network card (which Windows identified but couldn’t set up) and my video card (which Windows couldn’t even identify). I don’t care how fast it is or how much on-screen help it has or how pretty the wizard is; if it doesn’t work, nothing else matters.

The biggest problem comes when you want to configure a dual boot machine. Le me reiterate that all of this does, in fact, work. But from a user interface perspective, it’s a disaster. First, you must first decide on which partition you want Linux to be installed. In my case, during my Windows 2000 installation, I had intentionally left enough unpartitioned free space for Linux, and “install into unpartitioned free space” was an option, so I chose that. (”Install over existing Linux partitions” is also an option. Otherwise, you’ll have to brave a partition manager.)

This all sounds quite reasonable, and in fact it is much friendly than it used to be (when your only choice was braving the partition manager), but notice that it’s task-oriented instead of goal-oriented. Installing Linux on unpartitioned free space is not a goal; installing Linux while keeping my existing Windows 2000 installation intact is a goal. I want have preferred to answer a question like this:

Would you like to keep your existing Windows 2000 installation?

[X] Yes
[ ] No

Note that this requires the installer to figure out that I have an existing installation, and that it’s Windows 2000. (The more little details like that you can get right, the more trust you’ll create with the user, who is probably quite nervous about this whole process.) It also is humble enough to assume that I want to keep my existing operating system. This is probably true for workstations, false for servers, but the default should still be “yes”; believe me, those who don’t want to keep it will take great pleasure in clicking “no”.

If there is a Windows installation with no unpartitioned free space, then something has to go. This is inherently difficult from a UI perspective, since you need to ask the user to make a very serious choice that could destroy data and that, once done, can not be undone. However, this does not mean that it has to be impossible. The installer could check if there are multiple partitions already; if so, maybe there’s a secondary partition that the user is willing to give up.

As a Windows user, the user is probably more familiar with the terms “C drive” and “D drive” than “partition”, so frame the question in these terms:

You can install Linux on one of your existing drives, such as your D drive. This will DESTROY ALL DATA on that drive, but it will leave your other Windows programs and data untouched. Where would you like to install Linux?

[x] D drive
[ ] E drive [note: only if found]
[ ] F drive [note: only if found, and so forth]
[ ] More choices

“More choices” would fall back to the partition manager. Note that this requires the installer to figure out the drive letters of each partition. I have no idea how to do this, but the Disk Administrator in Windows NT does it, so it must be possible. The important point here is that we’re framing the question in terms that the user is most likely to understand (drives instead of partitions), and we’re speaking of goals (”install Linux on my D drive”) instead of tasks (”select partition to format”).

Of course, if the situation is more complicated than this (like several installed operating systems), then the choices will have to be more complicated as well. And if the user has a single big C drive with Windows, and wants to keep it, they’re SOL. As far as I know, there is no Linux installer that can shrink an existing partition. This would require rearranging the files on it safely to move all the free space to one end, and it is probably beyond the scope of any installer, present or future. But boy, that would be sweet.

The other big problem with Red Hat’s installer is also related to dual booting, and it involves choosing and setting up the bootloader. I have absolutely no idea why this is so difficult; it should simply be automatic. (To their credit, the Red Hat employees I spoke with admitted that this is the worst part of the installer.) Currently, there’s an overcrowded page that forces to me to make a total of four separate decisions:

  1. Whether to install a bootloader at all. If I have multiple operating systems, I want a bootloader. Don’t ask. (A Red Hat employee said that this option is for those users who already have a bootloader. Hey, if I already have a bootloader, you should figure that out. Even better, you should automatically integrate my new Red Hat installation into that bootloader. Yeah, I know this would be difficult. You can start with integrating automatically with existing installations of GRUB and LILO, and branch out over time to cover the other less popular ones.)
  2. Whether to use GRUB or LILO. LILO is the legacy bootloader; GRUB was designed to replace it. GRUB is more flexible, more secure, easier to reconfigure later, and even prettier. I want GRUB. Don’t ask. (Red Hat’s employees admitted that they would like LILO to simply disappear in future versions.)
  3. Whether to install the bootloader in the MBR or the first sector of the boot partition. I’ve been programming computers for 18 years, and this “choice” still confuses me. Is there a good reason to choose one as opposed to the other? The on-screen help says I should choose one if I have Windows 9X, but the other if I have Windows NT. But I have Windows 2000, so is that more like Windows 9X or NT? Can’t you figure out what I have and make the right choice for me? Seriously, this should not even be a question. Do not, under any circumstances, force users to make such an arcane, technical decision.
  4. What operating system to boot by default. (The bootloader lists all your installed operating systems, selects the default one, and, if you don’t choose anything within a time limit (usually about 10 seconds), it boots the default one automatically.) This is actually important choice, and it’s the only thing that you really need to ask the user.

However, the current UI for changing the default operating system is atrocious. The page lists all the operating systems; to change the default, you select the operating system from the list, then the name shows up in an editable box outside the list along with a “default image” checkbox. There are also checkboxes in the list, but clicking them does nothing but select the entire row so that you can click somewhere else to change the option. It’s so confusing, I can’t even describe it adequately. Trust me, it’s bad.

Furthermore, it gives me too many options. Even if I had multiple operating systems before I started this install (say, Windows 98 and Windows NT), I’m not now going to change the default from Windows 98 to Windows NT while I’m installing Linux. I might change the default to my new Linux install, or I might not; that’s it. So how about this instead:

Would you like Red Hat Linux to be your default operating system? (You can always choose a different one when you start up your computer.)

[ ] Yes
[x] No

This is the sort of question that users are used to answering (from years of watching Windows programs fight for file associations), and it’s framed in a way that makes sense to them. It also dovetails nicely into the integrate-with-existing-bootloaders suggestion. Regardless of what bootloader I already have, regardless of what operating systems I was running before I decided to install yours, even if I only had one — I had a default operating system before, and I will have one after, and the only question is whether I want to change my default to be this new operating system that I’m installing now.

If I only had one before and no bootloader and I say “no”, then you should install GRUB and make the OS I used to boot into directly be the default selection in the GRUB menu. If I had 4 before and used LILO and say “yes”, then a “Red Hat Linux 7.2″ image should be added to my /etc/lilo.conf and selected as the default image and you should re-run lilo to make your changes stick. (On a side note, lilo.conf is where the phrase “default image” comes from. Shame on Red Hat for exposing this internal terminology to unsuspecting end users.)

Finally, note that “no” is the default. This is a judgment call, and probably bears further research. Most users are probably just getting their feet wet with Linux. Even if they’re experienced, the fact that they want a dual boot means they at least have legacy applications they can’t or won’t give up. (For home users, these are probably games.) Either way, defaulting to “no” is an admission by Red Hat of where they really stand in the world. Those who are truly ready to make Linux their default operating system (as I did this weekend) will take great pleasure in clicking “yes”.

§

Respond privately

I am no longer accepting public comments on this post, but you can use this form to contact me privately. (Your message will not be published.)



§

firehosecodemusicplanet

© 2001–8 Mark Pilgrim