Skip to content

Commit 631368f

Browse files
Set the new release policy as the main one (#2293)
Translated by Patience Daur Co-authored-by: Patience Daur <patiencedaur@gmail.com>
1 parent d728d5a commit 631368f

File tree

12 files changed

+2237
-1326
lines changed

12 files changed

+2237
-1326
lines changed

doc/release.rst

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,24 @@
44
Release notes
55
********************************************************************************
66

7-
Tarantool version numbers consist of three parts:
7+
Since version 2.10, there's a :doc:`new release policy for Tarantool <release/policy>`.
8+
In short, Tarantool version numbers consist of three parts:
89

910
.. code-block:: text
1011
11-
MAJOR_VERSION.RELEASE_SERIES.RELEASE
12+
MAJOR.MINOR.PATCH
13+
14+
Any version without extra prefixes is a release version.
15+
If you need a version for production use, pick the latest release.
16+
For evaluation and development, you can use beta versions.
17+
They are marked with ``-betaN`` suffixes.
1218

13-
The third number distinguishes between alpha, beta and release versions:
19+
Before 2.10.0, version numbers were subject to the
20+
:doc:`legacy versioning policy <release/legacy-policy>`:
1421

15-
* ``x.y.0`` is an **alpha version**, just a base for adding new features.
16-
We use alpha versions internally and don't release them as distributions.
17-
* ``x.y.1`` is a **beta version**, where we add most new features.
18-
Beta versions are good for trying new features, but not suitable for production usage.
19-
* ``x.y.2``, ``x.y.3`` and later are **release versions**, where we fix bugs and polish newly added features.
22+
.. code-block:: text
2023
21-
If you want to use Tarantool in production, pick the one of the latest release versions, such as 2.6.2 or 2.5.3.
22-
To learn more about the meaning of version numbers, read the :doc:`/release/policy`.
24+
MAJOR_VERSION.RELEASE_SERIES.RELEASE
2325
2426
Below is the table listing all Tarantool versions starting from 1.10.0 up to
2527
the current latest versions.
@@ -41,10 +43,15 @@ Each link leads to the release notes page of the corresponding version:
4143
- Beta
4244
- Release
4345

46+
* - 2.10
47+
- n/a
48+
- 2.10.0-beta1
49+
- not released yet
50+
4451
* - 2.8
4552
- 2.8.0
4653
- :doc:`2.8.1 <release/2.8.1>`
47-
- not released yet
54+
- 2.8.2
4855

4956
* - 2.7
5057
- 2.7.0
@@ -111,8 +118,8 @@ Release notes for series before 1.10 are also available:
111118
:hidden:
112119

113120
release/policy
114-
release/new-policy
115-
release/major-features
121+
release/legacy-policy
122+
release/major-featuresg
116123
release/2.8.1
117124
release/2.7.2
118125
release/2.7.1

doc/release/legacy-policy.rst

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
Tarantool Legacy Release Policy
2+
===============================
3+
4+
5+
A Tarantool release is identified by three digits, for example, 2.6.2 or 1.10.9:
6+
7+
* The first digit stands for a MAJOR release series that introduces
8+
some *major changes*. Up to now, there has been only one major release jump
9+
when we delivered the 2.x release series with the SQL support.
10+
* The second digit stands for a MINOR release series that is used for
11+
introducing new *features*.
12+
:ref:`Backward incompatible changes <backward-incompatible>`
13+
are possible between these release series.
14+
* The third digit is for PATCH releases by which we reflect how stable
15+
the MINOR release series is:
16+
17+
* ``0`` meaning **alpha**
18+
* ``1`` meaning **beta**
19+
* ``2`` and above meaning **release** (earlier known as **stable**).
20+
21+
So, each MINOR release series goes through a development-maturity life cycle
22+
as follows:
23+
24+
1. **Alpha**. Once a quarter, we start off with a new alpha version,
25+
such as 2.3.0, 2.4.0, and so on. This is not what an alpha release usually
26+
means in the typical software release life cycle but rather the current trunk
27+
version which is under heavy development and can be unstable.
28+
The current alpha version always lives in the master branch.
29+
30+
2. **Beta**. When all the features planned are implemented, we fork a new branch
31+
from the master branch and tag it as a new beta version.
32+
It contains ``1`` for the PATCH digit, e.g., 2.3.1, 2.4.1, and so on.
33+
This version cannot be called stable yet (feature freeze has just been done)
34+
although there are no known critical regressions in it since
35+
the last stable release.
36+
37+
3. **Release** (earlier known as **stable**).
38+
Finally, after we see our beta version runs successfully in
39+
a production or development environment during another quarter while we fix
40+
incoming bugs, we declare this version stable. It is tagged with ``2`` for
41+
the PATCH digit, e.g., 2.3.2, 2.4.2, and so on.
42+
43+
We support such version for 3 months while making another stable release
44+
by fixing all bugs found. We release it in a quarter. This last tag
45+
contains ``3`` for the PATCH digit, e.g., 2.3.3, 2.4.3, and so on.
46+
After the tag is set, no new changes are allowed to the release branch,
47+
and it is declared deprecated and superseded by a newer MINOR version.
48+
49+
Release versions don't receive any new features and only get backward
50+
compatible fixes.
51+
52+
Like Ubuntu, in terms of support, we distinguish between two kinds of stable
53+
release series:
54+
55+
* **LTS (Long Term Support)** is a release series that is supported
56+
for 3 years (community) and up to 5 years (paying customers).
57+
Current LTS release series is 1.10, and it receives only PATCH level
58+
releases.
59+
60+
* **Standard** is a release series that is supported only for a few months
61+
until the next release series enters the stable state.
62+
63+
Below is a diagram that illustrates the release sequence issuing described above
64+
by an example of some latest releases and release series:
65+
66+
.. _release-diagram:
67+
68+
.. code-block:: text
69+
70+
1.10 series -- 1.10.4 -- 1.10.5 -- 1.10.6 -- 1.10.7
71+
(LTS)
72+
73+
....
74+
75+
2.2 series --- 2.2.1 --- 2.2.2 --- 2.2.3 (end of support)
76+
|
77+
V
78+
2.3 series ... 2.3.0 --- 2.3.1 --- 2.3.2 --- 2.3.3 (end of support)
79+
|
80+
V
81+
2.4 series ............. 2.4.0 --- 2.4.1 --- 2.4.2
82+
|
83+
V
84+
2.5 series ....................... 2.5.0 --- 2.5.1
85+
|
86+
V
87+
2.6 series ................................. 2.6.0
88+
89+
-----------------|---------|---------|---------|------> (time)
90+
1/4 yr. 1/4 yr. 1/4 yr.
91+
92+
*Support* means that we continue fixing bugs. We add bug fixes simultaneously
93+
into the following release series: LTS, last stable, beta, and alpha.
94+
If we look at the release diagram above, it means that the bug fixes are to be
95+
added into 1.10, 2.4, 2.5, and 2.6 release series.
96+
97+
To sum it up, once a quarter we release (see the release diagram above for
98+
reference):
99+
100+
* next LTS release, e.g., 1.10.9
101+
* two stable releases, e.g., 2.5.3 and 2.6.2
102+
* beta version of the next release series, e.g., 2.7.1.
103+
104+
In all supported releases, when we find and fix an outstanding CVE/vulnerability,
105+
we deliver a patch for that but do not tag a new PATCH level version.
106+
Users will be informed about such critical patches via the official Tarantool news
107+
channel (`tarantool_news <https://t.me/tarantool_news>`_).
108+
109+
We also publish nightly builds, and use the fourth slot in the version
110+
identifier to designate the nightly build number.
111+
112+
.. _backward-incompatible:
113+
114+
.. note::
115+
116+
A release series may introduce backward incompatible changes in a sense that
117+
existing Lua, SQL or C code that are run on a current release series
118+
may not be run with the same effect on a future series.
119+
However, we don't exploit this rule and don't make incompatible changes
120+
without appropriate reason. We usually deliver information how mature
121+
a functionality is via release notes.
122+
123+
Please note that binary data layout
124+
is always compatible with the previous series as well as with the LTS series
125+
(an instance of ``X.Y`` version can be started on top of ``X.(Y+1)``
126+
or ``1.10.z`` data); binary protocol is compatible too
127+
(client-server as well as replication protocol).

0 commit comments

Comments
 (0)