1.0 ABI guarantees, static linking, reimplementation
Havoc Pennington
hp at redhat.com
Fri Oct 27 19:03:10 PDT 2006
Hi,
We need to describe the interface stability policy in the README and so
forth when 1.0 is released.
One question in my mind is whether we are ready to lock down the ability
to statically link or reimplement.
That is, 1.0 definitely freezes the ABI and semantics of libdbus the
shared library. Also, the protocol from libdbus to the bus or other apps.
However, to let people statically link and/or reimplement the library,
we have to also freeze:
- the locations/semantics of files read by the library
- the essential environment variables read by the library
- similar stuff
And to let people reimplement the bus, we have to freeze / document the
bus features that apps might rely on, the main one is .service files,
also ability to install security policy config files for the system bus.
That's four different interface guarantees:
- shared object ABI
- protocol and bus exported interfaces
- interface from the shared object to the system (files, env variables)
- interface from apps to the bus (policy files, .service files)
My opinion is that the minimum for 1.0 is:
- shared object ABI
- protocol and bus exported interfaces
- .service files for session bus
However, if we don't think it's ready, I consider it fine to document as
not-yet-frozen:
- interface from the shared object to the system
- bus configuration and policy files
This would basically mean that static linking is a bad idea. I'm pretty
sure static linking _is_ a bad idea whether we freeze these things or
not, but that's another story I guess.
I don't know whether the interface from the shared object to the OS is
ready to freeze or not, to be honest. As Thiago has pointed out, it's
not yet very well covered by the spec. We also have the outstanding
uncertainty about /var/lib vs. /var/run.
On the other hand, I don't think this interface is very big. It's
probably only a couple files and a couple env variables.
Don't know. However, for 1.0 we should spell out in detail what's frozen
and what isn't, and whether static linking is "safe," in the docs.
Havoc
More information about the dbus
mailing list