DBus XPCOM

Gary Cramblitt garycramblitt at comcast.net
Mon Nov 13 15:21:12 PST 2006


On Monday 13 November 2006 15:20, Mohamed Attar wrote:
> Hello,
>
> First, I'd like to say the DBus technology is great. Congrats on the
> release of Blue Bird.
>
> I am a student at Seneca College, and my friend and I are trying to
> start or continue a DBus XPCOM project.
>
> My professor, David Humphrey, is teaching an Open Source coarse, and is
> closely involved with the Mozilla crew. http://zenit.senecac.on.ca/wiki
>
> We are planning to start some integration between the two technologies.
> We probably won't be able to finish, but other students from the next
> semesters would most likely carry it on.
>
> We checked out Christophe Nowicki's DBuzilla project. I tried contacting
> him about his project, but I didn't get much info. Looks like the
> project has put on a halt for now.
>
> We, the students, are new to Open Source technologies, so forgive our
> ignorance.
> We are curious as to the direction we should go with this project.
> The DBuzilla projects looks like it implements DBus natively to XPCOM
> objects, but I also see there are many bindings to DBus (GLib and that
> openwengo's DBus-CPP looks interesting).
>
> Does anybody have any recommendations as to how we should wrap XPCOM
> around DBus? Would it be possible/best to use the DBUS-CPP library with
> XPCOM? or must it be done natively (like DBuzilla
> http://www.csquad.org/category/d-bus/)?
>

Just some general thoughts.  D-Bus is not a component system -- it is a 
messaging system.  This means you will need to address the following issues:

1.  Object references.  In D-Bus, objects are referenced indirectly via a Path 
Name, rather than a pointer.  You will need to define a protocol for passing 
your object references across the D-Bus.  If you send many such references, 
you may need a way to "shorten" the names by providing an object reference 
registry and pass integer IDs instead of Path Names.  Some projects are 
proposing to use XAtom for this.

2.  Object lifetime and reference counting.  After passing an object reference 
to another process via D-Bus, how do you know when the object may be 
destroyed?  Typically, as is done in XPCOM, this is managed via reference 
counting.  Trying to do reference counting over D-Bus is challenging.   
Performance could become a big concern.

3.  Threading.  As in the DBuzilla project, threading will be an issue.  This 
will have a big impact on which bindings you choose.

4.  Asynchronous versus Synchronous messaging.  In all likelihood, you will 
want to implement asynchronous messaging, but when combined with managing 
object lifetime, you'll discover that avoiding race conditions will be 
problematic.

These are some of the issues you will encounter.  If you work out solutions, 
I'd be interested in them, as we have similar issues trying to implement the 
Assistive Technology - Service Provider Interface (AT-SPI), which is 
currently CORBA-based, over D-Bus.
-- 
Gary Cramblitt (aka PhantomsDad)


More information about the dbus mailing list