the next step
I feel that the design discussions have reached the point where we'll be
more productive if we're talking about actual code. There are still many
decisions to be made, but most of them are on the level of how an
individual module should work, and we don't have to firm up all those
details yet. So I'd like to lay out a plan for the next couple of months.
I want to accomplish several things: focus effort on producing a
working proof of concept system that can install onto a limited range of
hardware in a limited set of situations, lay the groundwork for everything
else, and produce something fairly cool to start with so more people will
become interested in working on the project.
So how about this as the first cut at the new Debian installer:
A one or two floppy system, that gets networking going and downloads and
installs Debian from the net, using http. Hardware support limited at first
to i386, IDE hard drives, and the same set of network cards supported by the
compact boot floppies in potato. The user interface will be limited to one
type, probably a console text UI that is either sorta like dbootstrap, or
like debconf's text frontend.
I picked this configuration because:
* It's easy to develop for -- it's easy to write a floppy and boot it,
easing the test cycle.
* The hardware is pretty common so a lot of people will be able to
* It's pretty cool, especially if we fit it on one floppy.
(Once we get this written, we will be able to start plugging in other
modules -- other retrievers like ftp, other UI's, more hardware support,
and so on, until we get something with the same set of capabilities as
the boot floppies.)
My target for a working first cut at the installer supporting the above
configuration is 2 months from now, at the start of December. That's a
pretty close date. Here are the main pieces that are required:
* mini dpkg (mostly done)
* base tarball creator (don't have to write, we can just use
boot-floppies to make base tarballs for the first cut)
* mini debconf (with 1 frontend and a basic database)
* main menu generation code
* http retriever
* kernel build (with modules)
* NIC autodetection (limited)
* network configuration (manual method)
* disk partitioning and formatting
* base tarball installer
* lilo setup
* library reduction
* bootable image build system (take all necessary pieces and make a
bootable floppy image)
The interesting thing is, most of these tasks can be worked on
independently. The main menu generation code, network configuration,
lilo setup, and disk partitioning may all need debconf, but they can be
initially written and tested on a full debian system using the perl
debconf, before the mini debconf is written. The http retriever needs a
network, but it can be tested on a full debian system before the other
networking stuff is available. The network configuration code can
be written before/concurrently with the NIC autodetection. The disk
partition and formatting (with care) on a spare drive. And so on.
So we can have a lot of teams (or just individuals) working on different
parts at the same time. That's what I'd like to do in the next month.
Then in November, we can work on the pieces like actually building the
floppy image, and library reduction, that depend on other things
If we're agreed that this is a decent plan and that the target
installation system and method for the first cut are reasonable, we can
get started. I'm ready to write some code and I'd like to work on the
main menu generation module (I can do it on my own in a week, I think),
provide assistance with the mini debconf (but not write most of it; once
was enough), and help with the network configuration, and the lilo setup.
Let me know what you can work on so I can tell if this 2 month timeline is
see shy jo