All, since I'll be doing some releasing, I started thinking about what goes into a version number. The Apache Portable Runtime says this:
(http://apr.apache.org/versioning.html) = The Basics = Versions are denoted using a standard triplet of integers: MAJOR.MINOR.PATCH. The basic intent is that MAJOR versions are incompatible, large-scale upgrades of the API. MINOR versions retain source and binary compatibility with older minor versions, and changes in the PATCH level are perfectly compatible, forwards and backwards. It is important to note that a library that has not reached 1.0.0 is not subject to the guidelines described in this document. Before a 1.0 release (version 0.x.y), the API can and will be changing freely, without regard to the restrictions detailed below. == Source Compatibility == We define "source compatible" to mean that an application will continue to build without error, and that the semantics will remain unchanged. Applications that write against a particular version will remain source-compatible against later versions, until the major number changes. However, if an application uses an API which has become available in a particular minor version, it (obviously) will no longer build or operate against previous minor versions. == Binary Compatibility == We define "binary compatible" to mean that a compiled application can be linked (possibly dynamically) against the library and continue to function properly. Similar to source compatibility, an application that has been compiled against a particular version will continue to be linkable against later versions (unless the major number changes). It is possible that an application will not be able to successfully link against a previous minor version. = Examples = Here are some examples to demonstrate the compatibility: || Original Version |||| New Version |||| Compatible? || || 2.2.3 |||| 2.2.4 |||| Yes Compatibility across patch versions is guaranteed. || || 2.2.3 |||| 2.2.1 Yes |||| Compatibility across patch versions is guaranteed. || || 2.2.3 |||| 2.3.1 Yes |||| Compatibility with later minor versions is guaranteed. || || 2.2.3 |||| 2.1.7 No |||| Compatibility with prior minor versions is not guaranteed. || || 2.2.3 |||| 3.0.0 No |||| Compatibility with different major versions is not guaranteed. || || 2.2.3 |||| 1.4.7 No |||| Compatibility with different major versions is not guaranteed. || Note: while some of the cells say "no", it is possible that the versions may be compatible, depending very precisely upon the particular APIs used by the application. ---------------------------------- Should we adopt this? /LS --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
