development / build versioning
-- FILE ---------------------------------------------------------------------
-- name       : BuildVersioning.txt
-- project    : BoarderZone: Development Environment
-- created    : Leon Poyyayil - 2004-08-16
-- language   : English
-- environment: the human readers mind ... ;-)
-- copyright  : (c) 1990-2016 by Leon Poyyayil (private), Switzerland
-- license    : this is free software licensed under the GPL. see COPYING

This file contains a description of the release and versioning scheme for builds.

A description of the code changes between various builds can be found in the
file BuildNews.txt wherein the different builds are listed such that the most
recent one is located at the beginning of the file. The file ReleaseNews.txt in
contrast contains only those changes which are relevant to end users.

Tracking of changes in this manner started with build 100.

The status of a build can be one of the following:
- release:           a fully functional state
                     -> distribution to the customer for test & deployment
- beta:              a fully functional state for beta-testing etc.
                     -> distribution only to development/partner/customer
                     -> features are fixed
                     -> api is fixed
- alpha:             a feature frozen state which is intended to propagate
                     first to 'beta' state and then to 'release'.
                     will be used for functional testing.
                     -> features are fixed
                     -> api might still change
- developmental:     a build to freeze the current state for later reference
                     a most probably stable state of the whole system but
                     with still missing functionality
                     -> not intended for distribution
                     -> new features will get added and old ones removed
                     -> api will undergo (possibly heavy) changes
- proof of concept:  no longer used

Propagating a build from 'developmental' to 'alpha' means to freeze the
functional state for a later 'release' (after a 'beta' phase). Thus further
new development should go into a new 'branch' which should be indicated by
adapting the version numbers accordingly:
- The minor (and possibly the major) version numbers should indicate
  the new version, which means either of two possible scenarios:
  - The major version stays the same and the minor version is incremented
    by one. This indicates a next release with comparable feature set but
    some new functionality and enhancements.
  - The major version is incremented by one and the minor version is
    reset to zero. This indicates a next release with substantial new
- The build number should be incremented by some amount which allows further
  alpha/beta/releases to be created with distinct build numbers.
  It is suggested to increase the build number by at least twenty. Thus if
  the current (alpha) build is 117 then further development should go into a
  next build with number 140. This gives room for 22 builds for alpha and
  beta testing and possible hot fixes.

Thus a possible version/build history could look as follows:

0.1.100-developmental   initial build
0.1.101-developmental   new functionality
0.1.102-developmental   new functionality
0.1.103-alpha           feature freeze for testing and later release
0.1.104-alpha           bug-fixes
0.2.130-developmental   new development for next version
0.1.105-alpha           further bug-fixes
0.1.106-beta            beta testing release
0.1.107-beta            another beta testing release with some fixes
0.2.131-developmental   further new development for next version
0.1.108-release         the final release for distribution
0.2.132-developmental   new functionality
0.2.133-developmental   new functionality
0.1.109-release         hot-fixes for the distributed release
0.2.134-alpha           feature freeze for the next version
0.3.160-developmental   already new devs

So this means there is a main development trunk with continous build numbers
and ever increasing versions from which the alpha/beta/release branches fork

0.1.100 - 0.1.101 - 0.1.102 - 0.2.130 - 0.2.131 - 0.2.132 - 0.2.133 - 0.3.160 - ...
                       |                                       |
                    0.1.103                                 0.2.134 - ...
                    0.1.105 - 0.1.106 - 0.1.107 - 0.1.108 - 0.1.109 - ...

This shows that build numbers alone are enough to unambigously identify an
executable, and not the full version is required. Like this, within a line of
development (builds with the same version numbers) the build numbers are
continous. And within the development line the build numbers are ever

-- EOF ----------------------------------------------------------------------