Versioning policy
My old versioning policy was to assign just a release code and a
patchlevel, in the form of RELEASE.PATCHLEVEL. This was enough
for my projects, but it is no longer because it was very difficult to tell
if an increment in the PATCHLEVEL meant just a bugfix or a change deep
enough to make impossible to use the new version as a drop in replacement
for the old version. This would force an increment in the RELEASE number
for medium importance changes, and probably will confuse the users.
So I've decided a change in the versioning policy and adopt the common
schema of using a major release code, a minor release code and a
patchlevel, in the form of MAJOR.MINOR.PATCHLEVEL. A change in
the version code will show more exactly how deep is the update in the
software. Here is a reference about the meaning of a code change:
-
A change in the PATCHLEVEL will indicate a bugfix or a very
minor code change that doesn't make the application to work
differently, and WON'T be user visible changes. You
can use the new version just in place of the older one, and in the
case of a library, it remains binary compatible with the old one.
-
A change in the MINOR code will indicate an important change
in the code that require to read the list of user visible changes to
correctly replace the old version with the new version, due to a minor
feature added, changed or removed. The changes needed to do the update
will be very small (a file rename, maybe, or something like that) but
needed. The change may or may not affect all users of the software. In
a library this means that the API has been modified to add or
deprecate (but NOT delete) an entrypoint. So it still
remains binary compatible with the old version.
-
A change in the MAJOR code will indicate a very large, deep
and important change in the code, probably a major rewrite or even a
change in the behaviour so important that you cannot use the new
version without reading the full documentation, not only the user
visible changes. If you want to update, be prepared for some work. In
a library, this means that the API has substantially changed: some
entrypoints have been added, some changed and some removed, and the
library is no longer binary compatible with the older versions.
To summarize: a PATCHLEVEL increment just means bugfixes, a
MINOR increment means a minor feature change and a MAJOR
increment means that the application or library has changed substantially.
This site is best viewed with
and .
©2004,2005,2006,2007 Raúl Núñez de Arenas Coronado
Et non erat qui cognosceret me
[14451]