Installfest: What's so Good (and not so Good) about the Ubuntu Installer?

The default Ubuntu installation is pretty is much ready to go, and that's another nice thing. There is some cruft, but it's mostly harmless. It's a bit quaint, for instance, that somebody thought the "Dive into Python" ebook should be in the default install. Still, there was very little additional work required after the install completed, and that's nice. This compares, for instance, to the experience I discussed in my previous entry, trying to setup a system with Mandriva Linux running the IceWm window manager, which required an awful lot of work after the install completed. (In my next blog entry, I'll discuss what additional work we did do before delivering the systems.)

The most surprising thing about the Ubuntu installation is that it's so easy to use—yet it's a text-based interface. Conventional wisdom says that ease of use demands a click-and-drool interface. The Ubuntu installer disproves that. Turns out that a well crafted interface is more important than pretty icons. Who'd a thunk?

You might expect from this glowing review that the Ubuntu Linux install procedure would be perfect for the installfest, but it isn't. The little rough edges that you can ignore in a single system installation are magnified when you scale up to multiple, parallel installs. Even if you aren't installing dozens of systems (which we weren't), you still need to interact with the installfest participants. This is difficult when the load procedure forces you to split your attention.

The biggest problem is the installation time. It takes about ninety minutes to do an Ubuntu installation. I think that's too long by half. That's a problem for two reasons. First, every additional minute of install time is a minute of lost productivity. When install time doubles, the number of systems you can produce is halved. Also, it's discouraging to tell somebody who wants Linux loaded onto their computer that you'd be glad to do it, but they'll have to wait about two hours for it. I don't know the install procedure internals, so I don't know where all the time is spent or what can be done to speed it up. I wish somebody who did know that would consider making it faster.

There are two disruptive breaks in the installation process that require attention, and that's another problem. The first break is a prompt to configure the time zone and setup a user account, at 25 minutes into the installation procedure. The second break occurs at 53 minutes to configure the display for the X window system graphics.

The problem with these breaks is that they split your attention among the machines. You have to babysit each installing machine, and that's bad. You want to focus your attention on starting the next install, and then, when all the installs are running, interacting with the installfest participants. The breaks prevent that.

In the ideal case, the installer ought to gather all the information it needs from you at the beginning and run to completion without further intervention. I don't know any installer that meets this ideal, but Fedora Core Linux comes pretty close. It has one break to remove media and reboot the system. (By the way, not all breaks are created equal. A break to remove a CD is a lot less disruptive than a break to create a new user account.) The Ubuntu load process would be greatly improved if it could gather the configuration information at the start, and not break to prompt the user in the middle of the load.

Finally, the only thing the Ubuntu installer supports is installation from CD media with a preconfigured package selection. Installation from network, for example, is not supported. You can't tweak the packages installed other than doing manual additions and deletions after the load finishes. There are workarounds, of course, but there ought to be a supported way to handle these operations.

(The workarounds may merit further investigation. For instance, maybe you can do a minimal Debian Linux install from media, and then load Ubuntu from a network repository using the apt-get command. Or, maybe you could use the kickstart system. There is a kickstart configuration builder available for Ubuntu.)

These problems, rather minor, add up in an environment where you want to build a lot of systems. That's a pity, because there is a feature called "oem installation" that otherwise would make Ubuntu an excellent candidate for large scale deployment. The oem installation is easy to do: you just say "oem" at the boot command line. When you do, the system is installed without a user account and with some configuration information unspecified (such as local language and timezone). The first time the system is booted after installation, the user is prompted for the required configuration information and then to create their login account.

Right now, Ubuntu Linux provides an excellent experience when you install a single system. It's still an easy and reliable load procedure when you scale up to multiple systems, but you start to see some of the rough edges. I hope some of these issues are addressed in a future release, to give a similarly excellent experience for multiple system installations.

I'll be back tomorrow (unless I'm abducted by aliens or Windownistas) to discuss how we addressed these load issues, and to describe our installfest procedure.