Background
==========

- Priority scale: High, Medium and Low

- Complexity scale: C1, C2, C4 and C8.
   The complexity scale is exponential, with complexity 1 being the
   lowest complexity. Complexity is a function of both task 'complexity'
   and task 'scope'.


Core
====

- Personal firewall

   Priority: Low
   Complexity: C8

   Discuss and implement a basic and safe firewalling strategy into
   Connman. Provide a D-Bus API for personal firewalling.


- PACRunner extensions

   Priority: Low
   Complexity: C4

   Support more URI schemes, support multiple connections, tighter
   security integration.


- Check logging produced by connman_info()

   Priority: Medium
   Complexity: C1

   Check that logging produced by connman_info() contains meaningful messages
   and get rid of the unnecessary ones.


- Remove --nobacktrace option

   Priority: Medium
   Complexity: C1
   When: 2.0

   Remove the --nobacktrace option or change it to --backtrace depending on
   the level of systemd integration or other factors.


- Clean up data structure usage

   Priority: Medium
   Complexity: C4

   Use hash tables, queues and lists in the code. Check on the currently used
   data structures and see if something can be simplified.


- Unit tests for DHCP, DNS and HTTP

   Priority: Low
   Complexity: C4

   Create unit tests for these components starting with DHCP. Use gtest
   from GLib for this task similarly to what has been done for OBEX in Bluez
   and oFono in general.


- Support other time sources than NTP

   Priority: Low
   Complexity: C2

   Support other time sources like cellular, GPS in addition to NTP.


- Get interface names from src/device.c

   Priority: Low
   Complexity: C2

   Instead of using ioctls in connman_inet_ifindex and connman_inet_ifname,
   utilize the information already provided by netlink in src/device.c.


- Support D-Bus ObjectManager

   Priority: Medium
   Complexity: C4

   Support D-Bus ObjectManager by using functionality already present in
   ./gdbus. Method calls and signals are already registered with gdbus, but
   properties and replies especially in Agent are still handled with plain
   dbus library function calls.

   With this, Manager API is removed, and a WiFi P2P API based on
   ObjectManager common to Linux desktops can be implemented.


Tethering
=========

- Verify if bridge has been correctly created and configured

   Priority: Low
   Complexity: C1

   When enabling tethering check if there was any error while creating and
   configuring the bridge before continue. It has been done only for WiFi
   technology, for other tethering technologies it should be evaluated
   and implemented in case it is advantageous.


WiFi
====

- Clean up WiFi data structure usage

   Priority: Medium
   Complexity: C2

   Struct wifi_data is passed as a pointer in some of the wifi plugin
   callbacks. For example removing a WiFi USB stick causes RTNL and
   wpa_supplicant to call the wifi plugin at the same time causing the
   freeing of the wifi data structure. Fix up the code to have proper
   reference counting or other handling in place for the shared wifi data
   and the members in the data structure.


- EAP-AKA/SIM

   Priority: Medium
   Complexity: C2

   This EAP is needed for SIM card based network authentication.
   ConnMan here plays a minor role: Once wpa_supplicant is set up for
   starting and EAP-AKA/SIM authentication, it will talk to a SIM card
   through its pcsc-lite API.


- EAP-FAST

   Priority: Low
   Complexity: C1


- Removing wpa_supplicant 0.7.x legacy support

  Priority: Low
  Complexity: C1

  Removing global country property setter in gsupplicant, and removing
  wifi's technology set_regdom implementation. Removing autoscan fallback.
  (Note: should be done around the end 2012)


Bluetooth
=========


Cellular
========


VPN
===

- IPsec

   Priority: Medium
   Complexity: C4


- L2TP & PPTP compatibility prefix removal

   Priority: Medium
   Complexity: C1
   When: connman 2.0

   The VPN config file provisioning patchset contains code that makes
   PPP options to be marked by "PPPD." prefix. The code supports also
   old "L2TP." and "PPTP." prefix for PPP options. Remove the compatibility
   code and only allow "PPPD." prefix for PPP options.


- Update VPNC and OpenVPN with Agent support

   Priority: Medium
   Complexity: C2

   Update VPNC and OpenVPN with VPN Agent support to request possible user
   ids and passphrases.


Tools
=====

- Add Clock API support to connmanctl

   Priority: Low
   Complexity: C2

   The connmanctl command line tool should support Clock API.
