On Fri, 17 Mar 2017 at 22:08:11 +0000, Paul Jakma wrote:
> There was a goal of keeping libquagga ABI and API stable, in earlier days. A
> past maintainer did not believe in that, and it went out the window.
> 
> The API/ABI for libzebra from Quagga is therefore unstable and private.

Thanks for confirming this. I assume you are an upstream maintainer of
Quagga?

You could help downstream distributors like Debian to get this right by
installing unstable libraries in ${pkglibdir} instead of ${libdir}
(pkg_LTLIBRARIES if you're using Automake/libtool) in future releases,
as a signal that they are not meant to be public, and by not installing
unstable headers (optionally with an --enable-headers or similar option
to install them).

Linking the libraries with "libtool -release ${VERSION}" instead of
"libtool -version-info 0:0:0", so that the SONAME changes for every
upstream release, is another good way to signal that unstable ABI
is intentional.

libgvfscommon in gvfs is an example of a private library:
<https://sources.debian.net/src/gvfs/1.30.3-1/common/Makefile.am/>
although for some reason they use -avoid-version instead of -release
there.

> I'd like to return to that goal. That will almost certainly be done by
> creating a new libquagga, and a quagga/ header-namespace, and slowly adding
> reviewed APIs to it.

This is an excellent approach to creating a stable API/ABI, and I'd
recommend it.

    S

Reply via email to