- Handle threading. ORBit will create threads per incoming request, whereas DBus is single-threaded. For some backends this doesn't matter (addressbook file: backend creates threads for long-running tasks) but the LDAP backend will block the entire server. Either all backends need to be ported to be threaded, or the DBus port should create threads as required.
- Ensure installed headers don't expose implementation details such as Bonobo and ORBit
** libebook ** libecal ** libedata-book ** libedata-cal These are tricky, one reason is that the headers use types which are currently defined in the ORBit IDL. With a DBus build, these are not available.
** libedataserver e-component-listener.h exposes Bonobo. How about simply not installing the header?
** libedataserverui Nothing to do.
- Re-arrange source tree so that all source is in a single directory instead of being split into -orbit and -dbus directories?
- Rewrite e-cal.c to handle errors better
- Resolve g_object_ref vs bonobo_object_ref in the backends. Do they need to bonobo_object_ref the view object, or will a normal reference suffice?
Investigate use of bonobo outside the libraries