summaryrefslogtreecommitdiff
path: root/doc/TODO
blob: 3dfedacd4b32572f62b52b1abf38a2c0585d1c4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

CVSID:$Id$

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

 - Add void PropertyModified(string key, bool is_added, bool is_removed)
   and deprecate Property[Added,Removed,Changed]

 - Make all optional properties from the spec available but with empty values

 - Add infrastructure so updates to several properties happen as a single
   transaction

 - Make sure device is not added to GDL before all the key properties as
   specified in the spec is there

 - Add dbus_bool_t* not_found to all get functions in libhal

 - Possible bug: PropertyAdded being called several times

 - Possible bug: DeviceAdded/DeviceRemoved being called several time on a
   device?

 - 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 (useful for burning CD's)

 - 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. Might
   need to modify udev to be able to do something like
   'udev --get-device --major <num> --minor <num>'

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


Partially resolved

 - 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.). To come
   from distros?

 - 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.