Postgres-XC release policy NTT Open Source Center 2011/06/21
This document describes the release policy of Postgres-XC. This policy is respected from version 0.9.5.
In GIT repository, Postgres-XC master branch is aligned with PostgreSQL code up to the latest intersection of PostgreSQL master branch and X_X_STABLE branches (determined with git merge-base). As PostgreSQL stable branches are created more or less at each beta2 release once a year, Postgres-XC master branch is realigned once a year with PostgreSQL master branch. This allows to make releases of Postgres-XC by including code commits of latest PostgreSQL stable branch and having a stable version.
Each major release of Postgres-XC is numbered 0.9.5, 0.9.6, etc. by incrementing the latest digit number. Minor releases are numbered 0.9.X.X and then 1.X.X for versions from 1.0.
A minor release is made respecting a 3-month cycle. Minor releases just contain the latest commits of PostgreSQL stable branch release depending on the stable branch is forked on and Postgres-XC maintenance fixes. For example, release 0.9.5 used this number as major release number, then minor releases are numbered 0.9.5.1, 0.9.5.2, etc. by incrementing the latest digit number.
$XC_VERSION.$POSTGRES_1ST.$POSTGRES_2ND.$SUB_NUMBER
For a major release, the main version is numbered with 0 as SUB_NUMBER. For instance version 0.9.5 (marketing number) is based on PostgreSQL 9.0 stable branch, so its main release is numbered 1.9.0.0.
Once every 3 months, a minor release is done. It contains the latest fixes from PostgreSQL stable branch and XC maintenance fixes. This release is numbered by incrementing the SUB_NUMBER number. For example, 3 months after the release of 1.9.0.0, its minor release containing maintenance bug fixes and latest commits of PostgreSQL 9.0 stable branch has DEV1_9_0_1 as development tag and REL0_9_5_1 as marketing tag. This version's binaries, packages or tarball are numbered as 0.9.5.1.
This system permits to keep a track on which PostgreSQL version a Postgres-XC release is based on.
POSTGRES_1ST and POSTGRES_2ND are the 2 digits used for PostgreSQL major versions. For example, in the case of PostgreSQL 8.4 POSTGRES_1ST is equal to 8 and POSTGRES_2ND equal to 4.
XC_VERSION represents the n-th major release of Postgres-XC based on PostgreSQL version $POSTGRES_1ST.$POSTGRES_2ND. This number is incremented from 1.
Even if version identification is different for marketing and development versions, they contain the same contents. For example, major releases with tags REL0.9.5 and DEV1.9.0.0 are the same softwares, but a track of the development number is just kept in GIT repository. Marketing version also is tracked in GIT repository. Binaries and packages available in Source Forge are always numbered with the marketing number.
If several major releases are made on the same PostgreSQL stable branch, XC_VERSION is incremented. XC_VERSION is numbered from 0.
At a new release, a new branch called REL0_9_X_STABLE for 0.9.X versions and REL1_X_STABLE for 1.X versions is created. This new branch contains the latest Postgres-XC development and a merge of the latest PostgreSQL stable branch where Postgres-XC master branch is forked on. All the commits of stable branch are included at the time of Postgres-XC release to include a maximum of fixes. Then when branch is created 2 tags are created: Development and marketing tags. Development tags are formatted with DEV_XXX. Marketing tags are formatted as REL_XXX.
Then following format is respected depending on if release is minor or major, on if release is numbered more or less than 1.0.