dac2ea27666eb248273bcd5b095614ef588baa59
[platform/upstream/connman.git] / TODO
1 Background
2 ==========
3
4 - Priority scale: High, Medium and Low
5
6 - Complexity scale: C1, C2, C4 and C8.
7    The complexity scale is exponential, with complexity 1 being the
8    lowest complexity. Complexity is a function of both task 'complexity'
9    and task 'scope'.
10
11
12 Core
13 ====
14
15 - Personal firewall
16
17    Priority: Low
18    Complexity: C8
19
20    Discuss and implement a basic and safe firewalling strategy into
21    Connman. Provide a D-Bus API for personal firewalling.
22
23
24 - PACRunner extensions
25
26    Priority: Low
27    Complexity: C4
28
29    Support more URI schemes, support multiple connections, tighter
30    security integration.
31
32
33 - Check logging produced by connman_info()
34
35    Priority: Medium
36    Complexity: C1
37
38    Check that logging produced by connman_info() contains meaningful messages
39    and get rid of the unnecessary ones.
40
41
42 - Remove --nobacktrace option
43
44    Priority: Medium
45    Complexity: C1
46    When: 2.0
47
48    Remove the --nobacktrace option or change it to --backtrace depending on
49    the level of systemd integration or other factors.
50
51
52 - Clean up data structure usage
53
54    Priority: Medium
55    Complexity: C4
56
57    Use hash tables, queues and lists in the code. Check on the currently used
58    data structures and see if something can be simplified.
59
60
61 - Unit tests for DHCP, DNS and HTTP
62
63    Priority: Low
64    Complexity: C4
65
66    Create unit tests for these components starting with DHCP. Use gtest
67    from GLib for this task similarly to what has been done for OBEX in Bluez
68    and oFono in general.
69
70
71 - Support other time sources than NTP
72
73    Priority: Low
74    Complexity: C2
75
76    Support other time sources like cellular, GPS in addition to NTP.
77
78
79 - Get interface names from src/device.c
80
81    Priority: Low
82    Complexity: C2
83
84    Instead of using ioctls in connman_inet_ifindex and connman_inet_ifname,
85    utilize the information already provided by netlink in src/device.c.
86
87
88 - Simplify gateway selection code
89
90    Priority: Low
91    Complexity: C4
92
93    The service list is always sorted according to preference with the
94    first service always owning the default route. See if update_order and
95    find_default_gateway in src/connection.c can be modified to use the
96    sorted service list instead of walking through the gateway_hash.
97
98
99 - Support D-Bus ObjectManager
100
101    Priority: Medium
102    Complexity: C4
103
104    Support D-Bus ObjectManager by using functionality already present in
105    ./gdbus. Method calls and signals are already registered with gdbus, but
106    properties and replies especially in Agent are still handled with plain
107    dbus library function calls.
108
109    With this, Manager API is removed, and a WiFi P2P API based on
110    ObjectManager common to Linux desktops can be implemented.
111
112
113 WiFi
114 ====
115
116 - Clean up WiFi data structure usage
117
118    Priority: Medium
119    Complexity: C2
120
121    Struct wifi_data is passed as a pointer in some of the wifi plugin
122    callbacks. For example removing a WiFi USB stick causes RTNL and
123    wpa_supplicant to call the wifi plugin at the same time causing the
124    freeing of the wifi data structure. Fix up the code to have proper
125    reference counting or other handling in place for the shared wifi data
126    and the members in the data structure.
127
128
129 - EAP-AKA/SIM
130
131    Priority: Medium
132    Complexity: C2
133
134    This EAP is needed for SIM card based network authentication.
135    ConnMan here plays a minor role: Once wpa_supplicant is set up for
136    starting and EAP-AKA/SIM authentication, it will talk to a SIM card
137    through its pcsc-lite API.
138
139
140 - EAP-FAST
141
142    Priority: Low
143    Complexity: C1
144
145
146 - Removing wpa_supplicant 0.7.x legacy support
147
148   Priority: Low
149   Complexity: C1
150
151   Removing global country property setter in gsupplicant, and removing
152   wifi's technology set_regdom implementation. Removing autoscan fallback.
153   (Note: should be done around the end 2012)
154
155 Bluetooth
156 =========
157
158 - Remove Bluez 4.x support
159
160   Priority: Low
161   Complexity: C1
162
163   Remove plugins/bluetooth-legacy.c support in about 6 month (July 2013) or
164   when Bluez 4.x usage becomes minimal.
165
166 Cellular
167 ========
168
169
170 VPN
171 ===
172
173 - IPsec
174
175    Priority: Medium
176    Complexity: C4
177
178
179 - L2TP & PPTP compatibility prefix removal
180
181    Priority: Medium
182    Complexity: C1
183    When: connman 2.0
184
185    The VPN config file provisioning patchset contains code that makes
186    PPP options to be marked by "PPPD." prefix. The code supports also
187    old "L2TP." and "PPTP." prefix for PPP options. Remove the compatibility
188    code and only allow "PPPD." prefix for PPP options.
189
190
191 - Update VPNC and OpenVPN with Agent support
192
193    Priority: Medium
194    Complexity: C2
195
196    Update VPNC and OpenVPN with VPN Agent support to request possible user
197    ids and passphrases.
198
199
200 Tools
201 =====
202
203 - Add Clock API and MoveBefore/MoveAfter support to connmanctl
204
205    Priority: Low
206    Complexity: C2
207
208    The connmanctl command line tool should support Clock API and Service API
209    MoveBefore/MoveAfter.
210
211
212 User Interface
213 ==============
214
215 - GNOME3 UI
216
217    Priority: Low
218    Complexity: C4
219
220    A GNOME3 shell user interface would make it easier for mainstream distros
221    users to use ConnMan. Continue/restart the work at
222    https://github.com/connectivity/gnome-extension-connman