Hardest parts:
- Connections
- Interface to the data structures (map, struct, array)
  - Do it like QDBusArgument: doesn't need any non-primitive data types, very binding-friendly
- Multithreading - need to talk to Thiago
- Well-defined names, special names: might be really easy, might be surprisingly hard / ugly
- Server
- Dispatching messages to/from interfaces, (interface registration?)

Other stuff:
- Build system
- Serialization, probably not hard
- Authentication
- Event loop integration. Easy enough at least with Qt on Linux because epoll() is only available
  on Linux. An epoll set has a file descriptor, so it can be watched like a file using a single
  QSocketNotifier which then tells d-sel that something happened. d-sel then uses epoll() the
  usual way to find out which file or socket is ready for reading or writing.

Some ideas for classes:
- Message
- Connection
- Interface?
- Address?
- Path?
- Authenticator or AuthenticationMethod

Scope (aka for now: features not planned):
- probably not in scope: code generator for the XML interface description format
  because it needs to work against the consumer API (Qt, GLib, ?)

Hardest parts:
- Connections
- Interface to the data structures (map, struct, array)
  - Do it like QDBusArgument: doesn't need any non-primitive data types, very binding-friendly
- Multithreading - need to talk to Thiago
- Well-defined names, special names: might be really easy, might be surprisingly hard / ugly
- Server
- Dispatching messages to/from interfaces, (interface registration?)

Other stuff:
- Build system
- Serialization, probably not hard
- Authentication
- Event loop integration. Easy enough at least with Qt on Linux because epoll() is only available
  on Linux. An epoll set has a file descriptor, so it can be watched like a file using a single
  QSocketNotifier which then tells d-sel that something happened. d-sel then uses epoll() the
  usual way to find out which file or socket is ready for reading or writing.

Some ideas for classes:
- Message
- Connection
- Interface?
- Address?
- Path?
- Authenticator or AuthenticationMethod

Scope (aka for now: features not planned):
- probably not in scope: code generator for the XML interface description format
  because it needs to work against the consumer API (Qt, GLib, ?)

Need to implement (server) / talk to (client) the following bus-owned methods:
org.freedesktop.DBus.Hello
org.freedesktop.DBus.ListNames
org.freedesktop.DBus.ListActivatableNames
org.freedesktop.DBus.NameHasOwner
org.freedesktop.DBus.NameOwnerChanged
org.freedesktop.DBus.NameLost
org.freedesktop.DBus.NameAcquired
org.freedesktop.DBus.StartServiceByName
org.freedesktop.DBus.UpdateActivationEnvironment
org.freedesktop.DBus.GetNameOwner
org.freedesktop.DBus.GetConnectionUnixUser
org.freedesktop.DBus.GetConnectionUnixProcessID
org.freedesktop.DBus.AddMatch
org.freedesktop.DBus.RemoveMatch
org.freedesktop.DBus.GetId
Add a list of bus-owned methods required by the spec.
Add a list of bus-owned methods required by the spec.

The list of them in the spec is hard to skim due to suboptimal
formatting.
