D-BUS API and ABI (was: Re: ANNOUNCE: D-Bus - 0.31 released)
joeshaw at novell.com
Mon Mar 7 17:00:35 PST 2005
On Tue, 2005-03-08 at 10:17 +1100, Daniel Stone wrote:
> Just out of curiousity, what's the status of 0.31 with regards to the
> ABI? 0.23.1, at least (a point release!) broke the ABI by removing
> a function (renaming it), and didn't bump the soversion -- everyone
> with stuff built against libdbus who used that symbol had to rebuild.
> And it silently broke, because packaging systems don't take ABI changes
> without soversion bumps into account.
I've been maintaining the 0.23 branch. The intent was to maintain API
stability for this so we could ship it in an upcoming SUSE release
without needing to patch HAL and having to depend on what was, at the
time, a very unstable version in HEAD.
To clarify: what ABI broke specifically? If you're referring to the
python change, that was actually an internal API incompatibility. If I
hadn't missed that bug, everything would have continued working, no?
Anyway, the patch was more than 1500 lines, and it was pretty tricky to
review everything. I missed something, and I apologize for that. But
what's done is done. The question now is, what should we do about it?
If there are actual public ABI incompatibilities, rather than just a bug
in the python bindings, is it better to revert the changes? Should I
just bump the soversion anyway?
> Which is a shame, because that's a *point* release, so I was really
> hoping to be able to integrate it, especially for all the Mono fixes.
Well, I think people put a little too much faith in version numbers,
particularly for something which is pre-1.0 and requires you to #define
something saying the API is unstable. :) I would have liked to have
called it 0.24, but that version was (presumably) taken at the time.
> And while it's nice to say that it's in beta, that doesn't make apps
> like HAL, Beagle, etc, just magically go away.
Well, speaking specifically for Beagle, the fact that dbus 0.23 and
earlier was buggy to the point of being unusable isn't an acceptable
> Also, breaking API in point releases is generally considered poor form.
Again, I don't think we should limit ourselves in this way at this
point. That said, I think everyone here understands the ramifications
of such changes.
More information about the dbus