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