Update VERSIONING.md

with details of date versioning scheme
This commit is contained in:
Vishwas Babu A J
2015-04-08 21:10:12 -07:00
parent f790b7e695
commit 1225a72cee
+20 -29
View File
@@ -1,54 +1,45 @@
Versioning Versioning
===== =====
For releases, we follow a simplified date versioning scheme
Prior to 15.03.RELEASE, we followed a semantic versioning approach. (http://semver.org/)
For releases we will follow semantic versioning approach. (http://semver.org/) Date Versioning
Semantic Versioning
=================== ===================
Semantic versioning is a very simple scheme built around the X.Y.Z-buildNo concept (for example 2.6.0-x or 2.6.0-BUILD-SNAPSHOT): Our date versioning scheme is built around the YY.MM.{PATCH}.{release_type} concept (for example 15.06.RELEASE or 15.06.1.BUILD-SNAPSHOT) where
Increment Z when you fix something YY represents the year of the release
Increment Y when you add a new feature MM represents the month of the release (we follow a time based release cycle with major releases published every quarter)
Increment X when you break backwards-compatibility or add major features PATCH (optional) gets incremented whenever a new release is made from an existing major release (between our quarterly release cycle)
Use the buildNo to differentiate different builds off the same branch, and to differentiate between development, test and production builds. release_type differentiates different builds off the same branch, and also differentiates between development, test and production builds.
Version structure Version structure
{number}.{release_type} {number}.{release_type}
where {number} is further broken down as {major}.{minor}.{micro}. where {number} is further broken down as YY.MM.{PATCH}.
Examples: Examples:
1.0.0.BUILD-SNAPSHOT 15.03.BUILD-SNAPSHOT
1.0.0.M1 15.03.M1
1.0.0.RC1 15.03.RC1
1.0.0.RELEASE 15.03.RELEASE
15.03.1.RC1
15.03.1.RELEASE
Number semantics Number semantics
major/minor/micro semantics may have some variance across projects but in general this is what we mean.
In general: In general:
a major version suggests many significant new features, an associated marketing campaign, and possible breaking of backward compatibility. a major version (Ex:15.03) does not have a patch number and suggests many significant new features, an associated marketing campaign, and possible breaking of backward compatibility. You can expect major releases every 3 months
a minor version may also contain serious new features, but should not break compatibility. You can expect minor releases every 1-3 months. a minor version (Ex:15.03.1) may also contain serious new features, but typically contains many bug fixes and improvements and does not break compatibility. You can expect minor releases between the quarterly major release cycle.
a micro version typically contains many bug fixes and improvements and perhaps several smaller new features. You can expect micro version approximately every 5-20 days (depending on bugs or suggested improvements).
Order matters
Notice that the following sequence of versions is in ordered ascending both alphabetically and toward GA:
1.0.0.BUILD-SNAPSHOT
1.0.0.M1
1.0.0.RC1
1.0.0.RELEASE
What You Should Install Where What You Should Install Where
As a rule of thumb … As a rule of thumb …
Snapshot or Milestone versions should only be installed on dev boxes and integration environments. They shouldn’t be deployed to any of the dedicated test environments. Snapshot or Milestone versions should only be installed on dev boxes and integration environments. They shouldn’t be deployed to any of the dedicated test environments.
Release candidates should be installed in the dedicated test environments. In an emergency, a release candidate can be installed into the production environment. Release candidates should be installed in the dedicated test environments. In an emergency, a release candidate can be installed into the production environment.
Production releases can be installed anywhere - and they are the only kind of build that should be installed into the production environment. Production releases can be installed anywhere - and they are the only kind of build that should be installed into the production environment.