Jezuz-h-christ-on-a-crutch. I just got done reading the libtool source, which was indeed the only way to understand wtf goes on with the version number. I also of course read the libtool documentation, which is a laugh, because it tells you in one section in a fairly ominous tone *never* to try to sync the libtool version number to your release number, and then goes on in another to say in an equally chastizing manner that if you don't let libtool name the .so then your libraries will be forced by libtool into some sort of a state of binary build-time incompatibility. <sexist grumblings about the gender of libtool deleted> SO, anyway, here's how it breaks down. You have a version-info in the Makefile.am of A:B:C. Based on whatever is the custom on an OS, it is made into a .so name. On linux, A.C.B is used as the .so number. A should be incremented whenever there is a change in interface, even if compatibility with the old interface is preserved. B should be set to 0 when A is incremented, but if A stays the same then B should be incremented, to put it simply, whenever a public release is made. C should only ever be non-zero when the release has retained binary compatibility for an older version. It should be set to the difference between the value of A now (in the to-be-released version), and the last value of A for which binary compatibility is maintained. Fortunately, this means that, if we decide the Beta versions shouldn't be "prosecuted as adults" and promise to behave ourselves from now on, 2:1:0 == 2.0.1 is correct for the next LibGGI release and 0:8:0 == 0.0.8 for libgii/libgg is fine too. 2.0.0 was NOT correct for the last release, but that's water under the bridge now. My guess is that the next major release of LibGGI will retain compatibility with the LibGGI 2 interface, and so, the next major release would be 3:0:1 == 3.1.0 So, it really boils down to what we want to *call* our releases. It would make more sense to use the libtool system, because we are not a linux specific library and despite the nasty warnings it's not that horrible a convention. In that case, we should probably keep the ":" notation to make people realize we are doing this, and the upcoming release will be called "2:1" or "2:1:0" when speaking of it. If we go this way, perhaps we should also explain that we are shifting to this convention in the webpage announcement. Anyway, those are the pickles, if we want to stick to libtool's way of doing things. If not, then I'd like us to have a reason, e.g. using another system, hopefully a popular one, because I really don't like fish unless it is deep fried, and mackeral is general a not good for deep frying. -- Brian
