Version 12, last updated by Jan Meijer at 13 Feb 12:15 UTC
Release status and life cycle
This document describes the FileSender software life cycle. What labels do we use to describe the various states a release can be in, from birth (beta) to end-of-life (EOL). FileSender follows the well-known Debian lingo for describing the status of its releases.
Distribution channels and current release status
For all distribution channels (Tarball, Debian and RPM packages) the following channels (repositories) are used:
| Status label | Description | |
| oldstable | previous and still supported release | 1.0.1 |
| stable | recommended and supported release | 1.0.1 |
| testing | next stable version | 1.1 |
| unstable | development version | 1.5 |
| experimental | snapshot builds | 1.5 dev |
Release history
| Version | Status | Phase change planned around |
| 1.0.1 | oldstable | |
| 1.0.1 | stable | |
| 1.1 | testing | |
| 1.5 | unstable |
Release life cycle
All FileSender releases go through the following phases during their life:
Unstable: under development: nightly builds and beta builds
Testing: candidate to become stable. Production quality and well tested, but needs to prove itself in the field. Support, bug and security fixes are provided.
Stable: field tested boring-no-problems production release. Support, bug and security fixes are provided.
Oldstable: the previous stable release. Security fixes only.
Each channel can be occupied by one release. When we release a FileSender version for use in production environments, it moves from Unstable to Testing. This bumps the release living in Testing to Stable and the one living in Stable to Oldstable. The current Oldstable release dies.
When a release in Testing has run problem-free for at least an 8 week period on at least 2 production sites that see daily real traffic, it can (but does not need to) be moved to stable. A release in "stable" must be what it says on the tin: stable. It should run unattended and feel fine about it. We maken an effort to have a solid release in both Testing and Stable at any given point in time.
When does support end?
When a release moves out of "Oldstable" support is no longer provided and the release is labeled EOL, End of Life. New revisions of a 'major.minor' will obsolete the previous 'major.minor', so for example '1.0.1' will obsolete '1.0.0'. The unstable/testing/stable/oldstable cycle is used for the major.minor releases. Minor revisions will be put in the distribution channel where the major.minor is.
Version numbering
FileSender version numbering follows the major.minor.revision method.
major: incremented when major back-end changes occur that require a lot of attention when upgrading. Examples are significant changes in the API, database schema etc.;
minor: when introducing changes too big to be labeled revision and too smalto use
revision: small changes. This will typically be bug fixes, security fixes and UI polish.
Pre-releases
Beta releases: for major releases we will typically release one or more beta versions. These are tested by the testing team and are assumed to work reasonably well. Beta releases need to be field tested for robustness, bugs and assumption verification.
Release candidates: for both major releases and minor releases we will at least 1 Release Candidate version.
Release: when a Release Candidate has been running on least two FileSender sites without error for a period of at least 1 week under meaningful use, this release candidate is re-branded as a release. There are no code changes, no database changes and no config file changes between a release candidate and a release.
Pre-releases will be labeled with a -[beta|rc][n] suffix, for example 1.1-rc2 or 1.5-beta1
Snapshot releases
Between releases there can and will be intermediate snapshot builds. Snapshot builds are regarded as pre-release builds of a to be released target version. The snapshot version will be added to the target version number with a hyphen. If there is no target version yet we could add the snapshot version with a + sign to indicate a post-release snapshot?
Snapshot suffix: -[builddate|svnrevision] where builddate = YYYYMMDDhhmm
Examples: 1.5-201202041550 1.5.1-r1488
Package naming and versioning
Packaging principles
Main version of a package should be the "target" version to be officially released. Both alpha/beta/rc's and snapshots are to be considered a pre-release of that target version. When publishing packages the pre-release/snapshot version should be regarded as 'lower' than the final target release but "higher" than the previous target release.
For RPM this is done using the Fedora recommendations by defining/using a Release tag.
For Debian this is (for many reasons) a bit more complicated when using both pre-releases and snapshots for the same target version. The use of a ~label in the upstream_version part appears to be the recommended way.
Tarballs and zipfiles
tarballs and zipfiles will be named following the above mentioned versioning scheme with the name filesender
RPM packages
http://fedoraproject.org/wiki/Packaging:NamingGuidelines#Pre-Release_packages
http://directory.fedoraproject.org/wiki/Release_Procedure
In specfile Version=FS-version, Release=package-revision
[package-revison] = [n][.m][.fs-sub-version]
n=0 for pre-releases and dev builds
n=1 for releases
m=for pre-releases only: increasing number which will be incremented when switching from dev-build to pre-release or vice versa
1.5-0.1.r1488 nightly in 1.5 dev cycle
1.5-0.1.r1492 nightly
1.5-0.2.beta1 beta1
1.5-0.3.r1495 nightly
1.5-0.3.r1497 nightly
1.5-0.4.rc1 rc1
1.5-1 final release
1.5.1-0.1.r1500 new nightly in 1.5.1 dev cycle
Debian packages
http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version
[epoch:]upstream_version[-debian_revision]
https://help.launchpad.net/Packaging/PPA/BuildingASourcePackage
pre-release tags can (must according to policy) be in upstream_version like 1.5~rc1 *but* that would conflict with snapshot/dev builds.
1.5~beta1
1-5~rc1
1.5~201202042315