summaryrefslogtreecommitdiff
path: root/doc/TODO
blob: cd28a412597f0de78187d1ff3386ad9eade6eb98 (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

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

 -  Add support for removal of class devices - we should probably remove
    the properties merged and send out a d-bus signal; see comments in 
    hald/linux/osspec.c:remove_class_device(). This can now easily be tested
    with modprobe and rmmod on the sg kernel module

 -  Persistent device store
    Device should be persistent (e.g. saved in a file) so i) we don't need
    to check fdi files each and every time we start up; and ii) device 
    properties are persistent across time

    - How this should be implemented should probably be discussed on the
      mailing list; one way is to use a binary format (performance), another
      way is to use a human-readable file (maybe even, ugh, xml). I personally
      opt the the binary format

    - There should be a commandline tool for the administrator to easily
      purge the database

    - We still need to scan all devices at startup; most of the logic is
      already implemented but it's a bit tricky to figure out.

 -  Support for more bus-devices and class-devices

 -  Testing framework; probably only feasible for non-os specific code, e.g.
    the whole device and device store framework

 -  Support for more filesystem sniffing and volume label extraction
    (see hald/linux/block_class_device.c:detect_fs)

 -  Caching in libhal; the API is ready for it. Remember you cannot use
    glib or other dependencies; we can only depend on libc and dbus!

 -  Property access control and per-user properties
    Non-root users should only have read-access to the devices except
    in properties where the key starts with 'user.'. Also properties
    starting with 'user.' should be per-user (and per-box, e.g. don't
    save them in a dotfile or dotdirectory in the users homedir; see TODO
    item for persistent device store)

 -  Support for signed fdi files
    One way to implement this is using an existing PKI framework.
    There should be an easy way to sign an .fdi file e.g. a hal-sign-fdi 
    tool. There should also be a directory where vendors can easily 
    drop the public key. 
    Also, we should probably consider emitting a dbus-signal or setting
    a property so desktop environments can figure display an appropriate
    dialog with the .fdi file is unsigned. Probably needs discussion on the
    mailling list.

 -  Callouts should listen for SIGCHLD and send a byte over a pipe which
    is watched with a GIOChannel instead of using a 250ms timeout like
    we do now.

 -  Callouts are currently called in order, so if a callout hangs then
    no others will be called.  There should be a timeout which kills the
    callout after a certain period of time.  (5 seconds?  10?  15?)

 -  Wait for callouts to complete before removing a device

 -  Don't remove a device before all the children are removed

Issues with Linux kernel 2.6.*:

 -  The ide%d, parent of IDE devices, are no under /sys/bus or /sys/class.
    In HAL we call it ide_host

 -  16-bit PCMCIA devices (e.g. not CardBus) is not in sysfs

 -  It would be nice if the kernel could poll for media by itself; right
    now we poll for media in hald/linux/block_class_device.c:detect_media

 -  The ide_cs driver for PCMCIA card readers has a bug where it removes
    and inserts the block device when we do a simple readonly open on the
    top block device (to poll for media)