D-BUS: Somewhere OBVIOUS, explain _specifically_ why D-BUS vs
CORBA, vs. DCE, vs. SOAP, etc.
Fri Jan 21 19:07:40 PST 2005
(Reading this now, after my other reply.)
Basically I don't feel this defensive about it, or have a need to "sell"
D-BUS; my core contention is that just because two things are both "IPC"
that doesn't mean they are the same thing, any more than two things
being "a file format" means they are the same thing.
There's a unique problem space when implementing a UNIX desktop
environment as a swarm of processes (that's what GNOME/KDE are). If you
implemented the UNIX desktop as one big process (like the Lotus
Workplace desktop) or had a different architecture entirely as Windows
does, then you would have a different set of problems.
Why is D-BUS right for what we're doing?
- *because* it isn't standard, we are free to make it do what we need
for the two
use cases we have in mind; there's a simple control issue
- we can also avoid implementing a bunch of useless stuff just to be
- it's intended to be sufficiently similar to dcop
- it has the right implementation properties (licensing, plain C, etc)
- someone happened to write it so it's there
There isn't really a fancy justification. If you say that IIOP could
have been adapted to work for this, then I won't disagree with you;
maybe it could. If you say d-bus is useless outside of the two intended
use cases, I won't disagree with that either.
In computing a custom-designed solution is almost always better-suited
to the problem than a standard one. The standard one may have benefits
that outweigh that: a larger ecosystem to participate in, prebuilt
implementation, or whatever. Or it may not.
For this particular problem I don't think the standard IPC systems offer
much. GNOME uses the standard nature of CORBA maybe in one place (so
Java can access the accessibility bridge), and our implementation of
CORBA has countless extensions and policy additions vs. the CORBA spec.
It's an open question whether dbus itself is any better, but I hope it
is. It at least seems to work OK as the systemwide bus.
Anyhow, in short if someone thinks dbus is a wheel reinvention and they
want to use CORBA, then they should use CORBA... why shouldn't they? I
have no idea a priori whether dbus is actually better for whatever they
are trying to do.
More information about the dbus