summaryrefslogtreecommitdiff
path: root/doc/TODO
blob: fc6b363d24b8487977d60e312978288260d9aed7 (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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140


Ongoing items that always need work
-----------------------------------

 - Valgrind once in a while to check / fix memory leaks / memory corruption

 - Keep the spec in sync with the code

 - Write / check / update docs of exported libraries

 - Audit all code and drop privileges in helpers where appropriate


Items specifically planned for 0.5.8
------------------------------------

 - Move /usr/libexec to /usr/lib/hal/ - drop /usr/lib/hal/scripts -
   use /usr/lib/hal/methods

 - Think hard about the interfaces HAL exports to addons as out-of-tree
   code like NUT now starts to use it. Includes interface stability thoughts
   and what we guarantee and what we don't. Might have license implications
   too.

 - Finalize the work on org.freedesktop.Hal.Device.VideoAdapterPM
   including the XML file format matching most adapters

Other items
-----------

 - Provide mechanism for polling storage devices we can't poll regulary
   e.g. PC floppy drives and Zip drives. When that it is, actually go back
   to provide children for volumes detected like we did in HAL 0.4.x

 - Provide mechanism for tuning the readahead size. For example, a DVD
   player application (such as GNOME's Totem) might want to read ahead
   several hundreds of megabyte so the drive only needs to spin up every
   e.g. 20 minutes while watching a DVD movie. This enables the kernel
   driver to put the drive in a low-power mode to get substantially better
   battery life.

 - Provide mechanism for making an application inhibit polling of a drive.
   This is useful combined with the TODO right above. It will probably mean
   that the eject button on the drive is rendered useless but that is
   justified by the DVD player application displays a soft button for ejecting
   the media.

 - Use udev data instead of probing (whenever possible)

 - Performance! Profile and optimize! Too big of a task to describe in
   one bullet. Feel free to provide patches to this file to break it up
   after some analysis.

 - It would be nice if method calls could return string, bool int etc.
   Perhaps use dbus-send style, e.g. int32:<number>' or 'string:the_string'
   or 'bool:true'. Granted, this is already possible today through addons
   so maybe not important.

 - Finish up and merge mjg59's Bluetooth code

 - Configuration of serial and other legacy ports

 - Device firmware. It would be nice to export a property and some 
   DeviceCondition when a device asked for firmware that was missing
   and is such in a state where it cannot operate. Might need kernel
   work.

 - Devices with device files should export an interface with for
   requesting / dropping access to the device, e.g. 

    RequestAccess()
    GiveupAccess()   (better naming welcome)

   which will change device file ownership or add/remove an ACL.

 - Take a few days out of the calender and give some love to the spec

 - Export ink levels for printers
   https://bugs.freedesktop.org/show_bug.cgi?id=2295

 - LVM support
   https://bugs.freedesktop.org/show_bug.cgi?id=6427

 - Signal when a USB device doesn't have enough power
   https://bugs.freedesktop.org/show_bug.cgi?id=4452

 - Format volume methods

 - Disk partitioning methods

 - File system label renaming

 - CPU frequency stuff from hmacht

 - Teach HAL about multisession and partitioned optical discs - may
   require reworking the 'fakevolume' code as we'd be adding more
   than one fakevolume

Items that might be interesting or maybe not:
---------------------------------------------

 - Port hal daemon core to use dbus-glib bindings? I'm not convinced this
   will buy us much, the core code is already done, debugged and working
   plus dbus-glib bindings only support one interface per proxy...

External projects:
------------------

 - We need to finish PolicyKit, at least get 0.2 out and bring it to
   1.0 rather fast (ideally before Spring 2007).

 - D-BUS needs to go to 1.0

 - We need secure ways to track user sessions and from what user
   session a D-BUS call into HAL originates from. We also want
   to know when a user session is inactive (e.g. fast user 
   switching). This is Very Important, without this we cannot

   - clean up what the user did by invoking methods on HAL
     - e.g. unmount storage devices
     - adjust ACL's cf. RequestAccess() and GiveupAccess() above
     - other things

   - refuse service to inactive sessions
     - e.g. refuse Suspend() or Hibernate() from the inactive
       user when another user is active on the same console from
       e.g. fast-user-switching

 - pm-utils guys need to release their stuff - when a working
   release is out give a grace period of a number of months for
   distros to switch to pm-utils before ripping out the callouts
   to distro specific scripts.

 - Runtime power management in the kernel. This is still ongoing
   and AFAIK there is no concrete idea about the user space interface.
   Once the user space interface is set in stone we can easily
   export this via HAL for selective suspend and/or tuning of knobs.