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

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, ?)

Add note about event loop integration.
Add note about event loop integration.
