all this for a progress bar?

Over the past months we've been working on a big change in the debian installer, removing base-config from the installation process. Doing this has required a great many changes, some of them user-visible. The installer now configures the timezone, users and passwords, and apt all in the first stage instead of after rebooting. Some preseed values have been removed or changed, including base-config/early_command and base-config/late_command.

The biggest change of all, the the hardest to get working, has been moving of the selection of tasks and the installation of all packages into the first stage of the installer. Now tasksel pops up a debconf question that looks like any other question d-i asks, and the installation of packages is hidden behind a nice clean progress bar, and if any packages use debconf to ask questions, d-i will display those questions using its frontend too.

I'd include a screenshot, but really, it's just another progress bar, how boring is that?

By the way, if you maintain a debian package and it prompts without using debconf (when debconf is available), then your package will obviously break this, and it's well past time to fix it. I think that all the packages d-i installs do use debconf except for possibly a few like libc during upgrades. Upgrades are theoretically possible at this step for any packages debootstrap installs, so those will need to be fixed too.

This has been a long, long time coming. Some milestones include:

  • 1998: Wichert Akkerman and others do the design of debconf, and first draft of its specification. Without debconf, none of this would be possible.
  • 1999: At linuxworld, I see Stormix's Debian-based install. I remember discussing with them about how debconf could be used to clean up the install process. I don't remember what kind of hack they used to avoid the long dpkg log interspersed with the occsional question that a Debian install involved back then.
  • 1999: I begin writing the debconf program. And promoting its use.
  • 2000: Randolph Chung begins writing cdebconf; d-i begins.
  • 2000: Randolph writes the passthrough frontend for debconf. At the time this was expected to be used by tools like aptitude (deity?) to integrate debconf into their GUIs, but it mostly just rotted for a long time unused. Looking back this was a contribution of unexpected significance.
  • 2001: I visit Progeny, they show me their implementation of a progress bar running over a Debian installation. It's a special-purpose hack, but it works.
  • 2001: debconf enters Debian policy
  • 2003: debconf becomes the policy-accepted standard way to do installation prompting
  • 2003: Adam Heath adds --status-fd to dpkg.
  • 2005 (Jan): Matt Zimmerman dusts of the passthrough frontend and makes it usable to pass debconf questions from debconf running in a chroot up to cdebconf running in d-i.
  • 2005 (Jan): Michael Vogt makes apt support status fds too.
  • 2005 (Fall): Ubuntu pulls most of the above peices together and fixes some bugs, gets a progress bar running over apt with debconf passthrough.
  • 2005 (Dec): Colin Watson and I develop debconf-apt-progress, rest of the pieces fall into place for using this stuff in Debian.

So yeah, this has been in er, progress for 8 years, and at least three Debian derived distributions have come up with thier own approaches in between with only the last one being quite similar to the end result, and the other two being rather dead. I don't know whether this is a study in how Debian is slow, or a study in how we do eventually come up with infrastructure that is done right and ends up being used by everyone. Or both.