[SyncEvolution] D-Bus bindings: C++ or C?

Jussi Kukkonen jku at linux.intel.com
Fri Aug 14 07:43:57 UTC 2009


Marcel Holtmann wrote:
> Hi Patrick,
> 
>> I'm having second thoughts about the decision that Jussi and I made back
>> in January about using dbus-glib as the main interface to D-Bus in the
>> syncevo-dbus-server. The main rationale at that time was that it is
>> readily available and a known quantity.
>>
>> However, after looking at some of the code that Jussi had to write to
>> make our C++ classes work as part of a D-Bus server I'm wondering
>> whether this advantage of dbus-glib is really worth it. Much of it is
>> manually written glue code between dbus-glib/GObject and C++.

Partial reason for the large amount of code was the decision to make the 
client side a C library. I notice that Josh has just backtracked his 
similar decision in carrick/gconnman because of the reasons you 
stated... On the other hand, the client code is pretty nice when using 
the library.

I had two concerns with dbus-c++ then (and I guess I still do):

1. maintenance: there are at least three forks right now and it seems at 
least two are quite incompatible.

2. completeness/reliability,
My expertise in C++ or (or D-Bus) is not deep enough to evaluate how 
complete or tested these bindings are.


> inside BlueZ, ConnMan, oFono etc. we are using libgdbus which is a nice
> and small helper library for writing D-Bus servers in C without any big
> extra bloat. We even duplicate the source in all projects to make it
> simpler for packages and integrators. I am not saying that this is the
> right solution for you, but you asked ;)

Thanks, that may make sense. It's just that dbus-glib was a known evil 
for me at the time... I've looked at connman and gdbus does look like a 
  nice and clean API at least from server POV.

However, I have to point out that from my GTK+ application POV a 
syncevolution-dbus-abstraction gobject is not bloat, it's a feature.

  - Jussi




More information about the SyncEvolution mailing list