This TODO list can only touch on some larger issues, but there are a great
many open bugs on various components of the installer. See all bugs tagged
d-i in the BTS. Also, there are many unprocessed installation-reports.


Status for different parts of debian-installer.  The numbers are
approximate (as in +/- 50%) and may change in any direction, at any
time.

[0%] Not begun
---------------------------------------------------------------------
	- some architectures
		hurd-i386 (we will ship w/o this)
		sh (we will ship w/o this)
	- support for non-free udebs
		Driver disks are already supported, but that is not really
		good enough for etch.

[30%] Might need large rewrites. Current implementation might
      work by accident
---------------------------------------------------------------------
	- GUI frontend to cdebconf.
		There are some basic implementations. The trick is to make
		it a GUI that does not suck, while still using debconf
		underneath.

		Currently the main blocking point is getting the various
		libraries etc needed to get a GUI up available as udebs.
	- ppp support
		Not as important for analog dialup, as for ISDN, pppoe.
		Broken following base-config removal.
	- persistent disk device names
		With udev, the best approach, according to Md, is to use
		the /dev/disk/ persistent devices which should always be
		the same. Would need partman, bootloader installer,
		probably other changes.

[60%] Needs some work, but does its grunt work
---------------------------------------------------------------------
	- I18N
		Mostly done, still filling in minor holes.
	- translations
		Varying languages translated to varying degrees.
		http://people.debian.org/~seppy/d-i/translation-status.html
	- boot loader installers (lilo, grub, etc)
		Work, except for when they don't. See BTS.
	- anna
		Works, mostly.  Needs support for Release files.
	- disk selector, partitioner
		We have switched to partman everything except a couple of
		subarches and s390.
	- web site
		http://www.debian.org/devel/debian-installer/
		Could be better laid out, lacking some sections, other
		parts are quite good.
	- archive integration
		No automatic propagation to testing.
		No source propagation for udeb sources!
		http://people.debian.org/~joeyh/d-i/testing-summary.html
	- hw-detect
		Working, but various issues with specific hardware.
	- pcmcia support
		Much improved, generally works now.
		Automatic PCI resource range exclusion based on probing
		still needed, work in progress.
	- low memory support
		Where "low" is 24-46 mb!
		Works, but user must be careful to set up swap ASAP.
		There is no sanity checking, and some bad failure modes.
		More work needed for 16 mb installs.
	- user documentation
		Installation manual is up-to-date for i386.
		Needs sanity checking for other architectures.
	- developer documentation
		We understand it, but it could be improved.
	- 2.6 support
		Works on i386, hppa, ia64, sparc, amd64.
		Works on powerpc, at least newworld. Testing on
		other subarches needed, especially G5 and oldworld (with
		mkvmlinuz).
	- preseeding
		Works pretty well.
		Some things still cannot be preseeded. This is generally a
		bug in the udeb's use of debconf.
		Some problems with kernel command line limits (ameliorated
		by 2.6.9+).
		Too many things need to be set at the kernel command line
		for netboot preseeding.
	- udev
		Needs lots of testing, particularly of unusual partitioning
		methods.
	- integrate/document rescue mode support
		Needs a new section in the manual.
		Needs bootloader configuration (done on x86, sparc, ia64).
		Needs easy ways to do common tasks like reinstalling a
		bootloader (done for grub and yaboot).
	- most architectures
		i386
		ia64
		powerpc
		mips
		mipsel
		m68k (some subarches)
			- bvme floppies need root to build
		alpha
		sparc
			- floppies need root to build
		arm (some subarches)
		hppa
		amd64 (unofficial)
		s390

[90%] Single missing important feature or bug.
---------------------------------------------------------------------
	- iso-scan
		Works, but does not flag the disk the iso is mounted from
		as unusable by the rest of the installer.
	- netcfg
		Working, pending rewrite for IPv6.
	- bts
		Still need a non-manual way to tag our bugs.
	- localechooser
		The perennial problem is how to order/present the list of
		languages. Many complaints, but it works.
	- base system installer
		Improve kernel selection. Much of this is done in unstable,
		but knowing about some kind of preference order for kernels
		would be good. (Kamion)

[100%] Those shouldn't need to be touched any more 
       (famous last words)
---------------------------------------------------------------------
	- udpkg
	- cd installs
	- net retriever
	- cdrom retriever
	- ethdetect
	- cdebconf
	- floppy retriever
	- main-menu
	- choose-mirror
	- busybox integration
	- install media build system
	- kernel-package integration
	- library reduction
	- wireless support
	- save-logs


Post-sarge goals
================

	- 2.6 floppies on i386 (zboob)
	- fix pkg-lists names to match images (joeyh)
	- fix udeb dependencies to not refer to library debs (joeyh)
		(largely done)
	- consistent indentation of all shell scripts
	  (with a style that minimises size on initrd! :-) (joeyh)
	- 16 mb installs
	- graphical installer
	- finish partman (anton)
	- handle debian upgrades in partman (anton)
	- fai integration (markos)
	- cloning from installer system (luther)
	- use same device names in installer and installed
	  system (kamion)
	  	(should be done for nics with udev, disks still need work)
	- non-linux d-i (jbailey)
	- libc udeb renamed to include version number (jbailey)
	- "vague thoughts of making debian-cd my bitch" (jbailey)
	- moon-buggy udeb (cts@debian)
	- britney and udebs
	- fai disk config files in d-i (holger)
	- low(er) mem (zboob)
	- etch in 2005^H6 (or bust) (jvw)
	- uml for testing d-i (anton)
	- udebs and debs of same name (gaudenz)
	- post reboot network configuration (kamion)
	- real deb from archdetect udeb (luther)
	- getting rid of hardcoded paths in d-i (kamion, joeyh)

Common problems and transitions
===============================

This is a list of common mistakes that need to be corrected throughout the
code base:

  * All debconf commands that INPUT, GO, GET or SET questions should check
    their return value. This is pure evil:

    debconf->command(debconf, "GET", "mirror/suite", NULL); /* unchecked return code ! */
    asprintf(&command, "foo %s", debconf->value);
    system(command);

  * cdebconf's debconfclient.h has a set of macros for calling debconf
    (debconf_get() and so on)
    These should perhaps be used consistently throughout the code for
    clarity.

  * udebs should not include md5sums files, or postrm, prerm, preinst
    scripts. This includes ones generated by debhelper. Linda will find
    these pretty well.

  * There is no need to set the seen flag anymore. All code that does so
    should be removed, unless that code is expected to also possibly run on
    a normal debian system (choose-mirror). Seen flag munging can break
    preseeding.
