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