
CVSID:$Id: TODO,v 1.3 2003/12/24 00:55:38 david Exp $

This document is the TODO list for the HAL project. Feel free to add/remove
entries if you get an idea or implement one of the tasks.

Short term issues

 - veryify that we got all the necessary hardware parameters for
   physical busses, e.g. pci, usb... We won't really know before people
   start using HAL though

 - add device persistency across invocations of the hal daemon so we
   don't have to scan N fdi files for M devices, resulting in N*M scans

 - fix all property string values to be UTF8 compliant

 - add Lock()/Unlock() methods to the network API (and libhal) for obtaining
   exclusive device access

 - fix memory leaks; especially those when getting strings from D-BUS
   [ongoing, partially resolved (libhal seems clean, still need to audit
    hald)]

 - add a device representing the computer system with properties on kernel
   name, version, xserver version etc. Make all devices that currently doesn't
   have a parent, children of this

 - extend .fdi file format to be able to reference the device representing
   the computer system and match on e.g. kernel.name and kernel.version, so
   as to merge properties dependent on that

 - replace mii ethernet monitoring with netlink sockets

 - figure a way to detect block.device (e.g. /udev/hda2, already we know 
   major:minor) when detecting a block device on hald startup.
   The hotplug case is already solved by receiving a signal from udev

 - until available in sysfs, parse /proc/sys/dev/cdrom/info, to provide
   information about capabilities of optical discs such as CD-RW, DVD etc.

 - work more on packaging, put some daemon-fork-fu into hald and make it
   read a configuration file, make initscripts for various distros and make
   hald run as a unprivileged dedicated user

More long term issues

 - signing of fdi files

 - add code/scripts for regression testing

 - access control logic (only daddy can use daddy's camera etc.)

 - network transparency; think diskless X terminals with USB ports
   integrated into the desktop environment running on a LTSP server

 - get HAL to work on other OS'es than those based on Linux 2.6

 - lots of other 'crazy ideas'

Fishy issues we need to work around, and don't yet do in a perfectly
reliable way (Linux 2.6 specific)

 - userspace is faster than kernel when hotplugging, so sometimes certain
   attrs are missing; should be addressed in libsysfs 0.4. Seems also to
   be a problem with /proc/bus/usb/devices; sometimes information derived
   from /p/b/u/d such as USB version and USB speed is missing because of
   this issue

 - input hotplugging not giving same range of attrs as on detection time;
   need support for input in sysfs

 - various key bus-specific properties missing all over the place, 
   especially for SCSI (I also need SCSI hardware to test with)

 - sysfs is missing key information only available in /proc such as USB
   version and speed (/proc/bus/usb/devices), model of IDE disk (e.g.
   /proc/ide/hda/model), optical drive caps (/proc/sys/dev/cdrom/info).
   Until this is fixed we have to read stuff from /proc.
