using dbus in the platform
Brian J. Tarricone
bjt23 at cornell.edu
Thu Oct 18 13:47:50 PDT 2007
Alp Toker wrote:
>
> I think you might have joined this discussion from the wrong angle.
> There is no real debate that using D-Bus makes sense for traditional
> desktop environments. NDesk, another GTK+ desktop environment,
> implements dozens of Freedestkop standards, including several fdo D-Bus
> specs.
Ah ok, I see -- I think I'd picked up on that a bit, but I didn't
realise that that was the central issue/argument at hand.
> The issue is that Havoc is proposing to use libdbus, his own D-Bus
> implementation, directly in GTK+. This means that desktop environments
> like NDesk which use their own D-Bus library will incur the overhead of
> multiple connections and conceptual breakage of two D-Bus
> implementations in one process.
I believe Havoc said that there's a potential solution to the problem of
multiple connections. Can this be done, or does that only work in the
case where you have multiple connections open that all use the same
low-level library?
The code size/data size overhead of having two implementations of the
same thing in the same process is unfortunate, of course.
> The problem is not unique to NDesk. Some half a dozen GNOME applications
> also use NDesk.DBus or dependent libraries. Dozens of third party
> applications that are neither part of NDesk or GNOME also use
> alternative D-Bus libraries and will be affected by any decision to use
> libdbus in GTK+ proper.
>
> There is no reason why the proposed libdbus-specific functionality can't
> be provided by some "libdesktop" library to be used by GNOME, XFCE and
> traditional desktops. This has the added benefit that such functionalty
> can simply be avoided by, say, GTK+ applications running on DirectFB, on
> deeply embedded custom OSs etc.
Well, I guess that depends on where you think the functionality that
requires dbus (or whatever other IPC mechanism) belongs in the toolkit
stack. D-Bus is an implementation detail of that functionality. The
same functionality could be implemented using CORBA/orbit, a custom
protocol on top of XShm, yet another custom protocol over a unix socket,
etc. What matters is the functionality: regardless of implementation,
where does GtkUnique, GtkHelp, GtkUrl, etc. belong? I'd be very
skeptical of the suitability of an API designed based on its low-level
implementation details, details which could change drastically at any
point in the future.
So, where does it belong? With the current trend/belief that gtk should
contain higher-level app-building primitives, I'd say these
dbus-requiring things belong in gtk, and not in a 'libgtkdesktop' or
whatever.
As for multiple implementations, why can't gtk have a simple pluggable
IPC module, sorta like the IM modules or GtkFileSystem? I know, I know,
it's one more layer of potentially-unneeded abstraction, one more API
that needs to be carefully designed since it can't really be changed
later, etc... But it would make it possible for ndesk (for example) to
provide its own IPC backend (a thin wrapper around the ndesk dbus
library, in this case) and avoid using libdbus at all.
Or is there another way to solve this problem without creating Yet
Another Platform Library[tm]?
-brian
More information about the xdg
mailing list