Waaay back in winter 2000 I met Adam Di Carlo, then the leader of the boot-floppies team, at a wild after hours Linuxworld party in some club in New York City. Those were heady times, and giddy with all that was going on, I told Adam that I'd like to lead the installer team for the next release; I thought it was time to rewrite the crufty and much maligned Debian installer. Adam was surprisingly accepting of the idea. Little did I know..
A new installer for the next Debian release didn't happen (the boot-floppies stuck around through the releases Debian 2.2 and 3.0), but here I am 4 years later, on the eve of the unveiling of the first debian-installer release candidate. Luckily, this project was never about coming in on time and under budget, but about doing something right. And though I can see the barely apparent flaws when I look at our work, I think in the whole, we have.
I began to design the new installer in the summer of 2000, between June and August. I really feel that if I hadn't stepped up to do it, someone else would have soon thereafter. It was time. Some of the first bits of code were also written in this period, and notable early contributors were my old college pal Randolph Chung, who wrote udpkg (and later with Anthony Towns, cdebconf), David Whedon who did the first work on hardware autodetection, James Troup who (eventually) added udeb support to the archive, and Wichert Akkerman, who modified dpkg-dev to work with udebs. And probably a half-dozen others whom I'm forgetting. With this and some other groundwork laid, and a reasonably complete design (with some huge gaping holes in it) done by mid September, it was just a simple matter of coding up each component of the installer. In theory.
By December of 2000, the first d-i demo image was released. All it could do was load some bits of itself, and it didn't even run chrooted. By January of 2001, d-i was booting from a floppy (I found this part of the development very painful: real floppies!), and downloading the rest of itself over the network, but not doing much else of interest.
By this point we were six months into the project, which really seems like enough time to write a complete working linux installer, but with less than a dozen people working on the installer, and the need to code large chunks of it from scratch, we were making slow (if steady) progress. At least the groundwork we laid then has proven quite firm. Unfortunately at this point we were nowhere near having an installer suitable for a Debian release, and the next release was (we thought) going to happen soon. So in a very hard decision, we put d-i on the back burner, and Adam came back and dusted off the boot-floppies for one more go.
Over the lifetime of the d-i project, there have been a total of 18,837 distinct commits to its CVS (and later, subversion) repository. This is a plot of number of commits per month. The effects of bringing back the boot floppies are clearly visible in the decline that began in mid-2001. The spike of renewed development beginning in July 2002 exactly coincides with the release of Debian 3.0.
Looking back, there was too much emphasis on avoiding working on d-i to avoid stealing development time from the boot-floppies, and this was a mistake. In fact, several of us d-i contributors had little to do with the boot floppies, and found other projects to work on in this time period. (I wrote 22 thousand lines of code for another project; half the size of d-i.) In hindsight, we could have kept working on d-i without slowing down the boot-floppies development significantly, and d-i would be a year more mature today, and you'd probably be complaining that etch was not released yet and that sarge was looking old and crufty right now.
Some work was done during the slowdown, mostly by those who needed something other than the boot floppies for their own purposes. Raphael Hertzog did probably the first successful Debian install in using a system based on the installer (but with many local enhancements and changes) and much of his work was folded back into d-i. Not much later, Tollef Fog Heen and other developers at Skolelinux poured a lot of effort into d-i to get it into shape for their Debian-based distribution.
Around then I passed the d-i leadership to Tollef, and took a break. I don't know much about development between then and July 2003, as I was not much active in it, but it seemed to be going slowly, and was becoming one of the main blockers for sarge's release. There was even talk about digging up the boot-floppies, stitching its head back on and reanimating it for one more release, but that seemed .. distasteful.
That July, I attended DebConf3 in Oslo, met many of the current d-i developers, and was astounded to see that we had a working installer. Sure, it had lots of problems and warts; it crashed a lot; it only installed on i386 -- but it worked! I witnessed my first successful d-i install at DebConf3, a full three years after beginning the project. I was hooked.
And now development began to explode. By September 2003, installs from CD, floppy, and the network were working, USB keychain support was on its way, and we had a working powerpc port and starts on other ports. At this time I began leading the project again, and the number of d-i developers mushroomed.
While it doesn't represent all of our contributors, 142 people have committed to the d-i tree during its lifetime. Here's a plot of how many joined the project by month. The really big surges are when we moved to being hosted by alioth, and when translation of the installer began in earnest. 55 of our committers are not Debian developers, and may of them are translators.
The past year has featured milestone after milestone, and it seems that d-i just keeps getting better with each beta release. We've had our share of problems and slowdowns for various reasons, but the team has pulled together and really gotten things done. It's now typical, and not unusual, for someone to install Debian and tell us things just worked great. We're ported to 11 architectures besides i386, and lots of fun features like OS detection, LVM, and even pcmcia have been added to the installer this year. At least three Debian based distributions are in the process of releases using d-i as their installer.
Was it worth it? There were probably quicker and easier ways for the project to get a new installer for Debian. PGI, Anaconda and other installers exist for Debian now, alongside d-i. And while we used many pieces from elsewhere, d-i's design required a lot of code that is not normally part of an installer -- things like its own internal package manager. After all, d-i is not just an installer, it's a miniature linux distribution.
According to sloccount, the boot-floppies totals only 30 thousand lines of code, about 7 person-years of work, which is close to accurate as it was developed between 1994 and 2001 by a team of several part-timers. Sloccount says d-i is 51 thousand lines, or 12 person years (1.5 of them mine?). (For reference, Anaconda is ~62 thousand lines.) Of course these metrics don't begin to cover the enormous amount of testing, data collection, etc that it takes to do a linux installer.
So we surely could have avoided a lot of work if we'd based d-i on an existing installer, but one thing people don't take into account when they make this critisim is that d-i is itself based on several core things that Debian had spent years developing before we began to write d-i: The Debian package system and tools, debconf, debootstrap, the Debian development process -- all of these are key underpinnings of the Debian installer that have shaped it in unique ways and made its internal workings much different from a traditional linux installer.
Now d-i is four years old (counting its initial 9 month gestation), and while that's old for much software, it's in a sense quite young for an installer. There's so much hardware that d-i has not yet run on, and the tens of thousands of users who have tested it are only the beginning. After sarge releases, our next challenge as a team will be to decide where to go from here, and take advantage of the excellent base we have in d-i to do interesting and useful new things.
For me working on d-i has been a continual challenge and a delight. I've learned a ton, I've traveled to far-off countries and met unique and interesting people. I've installed Debian thousands of times. Aside from Debian itself this is the largest development project I've ever been a part of. I'm very glad that I was foolish enough to start writing a new Debian installer and that so many people believed in the idea and made it happen.