Skip to content

Commit b578e71

Browse files
committed
Simplified the \"Release Process\" page
1 parent 56f0f19 commit b578e71

File tree

2 files changed

+46
-146
lines changed

2 files changed

+46
-146
lines changed
-308 KB
Binary file not shown.

contributing/community/releases.rst

Lines changed: 46 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
The Release Process
22
===================
33

4-
This document explains the **release process** of the Symfony project (i.e. the
5-
code hosted on the main ``symfony/symfony`` `Git repository`_).
4+
This document explains the process followed by the Symfony project to develop,
5+
release and maintain its different versions.
66

7-
Symfony manages its releases through a *time-based model* and follows the
8-
`Semantic Versioning`_ strategy:
7+
Symfony releases follow the `semantic versioning`_ strategy and they are
8+
published through a *time-based model*:
99

10-
* A new Symfony minor version (e.g. 2.8, 3.2, 4.1) comes out every *six months*:
11-
one in *May* and one in *November*;
12-
* A new Symfony major version (e.g., 3.0, 4.0) comes out every *two years* and
13-
it's released at the same time of the last minor version of the previous major
14-
version.
10+
* A new **Symfony patch version** (e.g. 2.8.15, 4.1.7) comes out roughly every
11+
month. It only contains bug fixes, so you can safely upgrade your apps;
12+
* A new **Symfony minor version** (e.g. 2.8, 3.2, 4.1) comes out every *six months*:
13+
one in *May* and one in *November*. It contains bug fixes and new features, but
14+
it doesn't include any breaking change, so you can safely upgrade your apps;
15+
* A new **Symfony major version** (e.g. 3.0, 4.0) comes out every *two years*.
16+
It can contain breaking changes, so you may need to do some changes in your
17+
apps before upgrading.
18+
19+
.. tip::
20+
21+
`Subscribe to Symfony Roadmap notifications`_ to receive an email when a new
22+
Symfony version is published or when a Symfony version reaches its end of life.
1523

1624
.. _contributing-release-development:
1725

@@ -32,113 +40,36 @@ During the development phase, any new feature can be reverted if it won't be
3240
finished in time or if it won't be stable enough to be included in the current
3341
final release.
3442

43+
.. tip::
44+
45+
Check out the `Symfony Roadmap`_ to learn more about any specific version.
46+
3547
.. _contributing-release-maintenance:
48+
.. _symfony-versions:
49+
.. _releases-lts:
3650

3751
Maintenance
3852
-----------
3953

40-
Each Symfony version is maintained for a fixed period of time, depending on the
41-
type of the release. This maintenance is divided into:
42-
43-
* *Bug fixes and security fixes*: During this period, all issues can be fixed.
44-
The end of this period is referenced as being the *end of maintenance* of a
45-
release.
46-
47-
* *Security fixes only*: During this period, only security related issues can
48-
be fixed. The end of this period is referenced as being the *end of life* of
49-
a release.
50-
51-
.. note::
52-
53-
The :doc:`maintenance document </contributing/code/maintenance>` describes
54-
the boundaries of acceptable changes during maintenance.
55-
56-
Symfony Versions
57-
----------------
58-
59-
Standard Versions
60-
~~~~~~~~~~~~~~~~~
61-
62-
A **Standard Minor Version** is maintained for an *eight month* period for bug
63-
fixes, and for a *fourteen month* period for security issue fixes.
64-
65-
In Symfony 2.x branch, the number of minor versions wasn't constrained, so that
66-
branch ended up with nine minor versions (from 2.0 to 2.8). Starting from
67-
3.x branch, the number of minor versions is limited to five (from X.0 to X.4).
54+
Starting from the Symfony 3.x branch, the number of minor versions is limited to
55+
five per branch (X.0, X.1, X.2, X.3 and X.4). The last minor version of a branch
56+
(e.g. 3.4, 4.4, 5.4) is considered a **long-term support version** and the other
57+
ones are considered **standard versions**:
6858

69-
.. _releases-lts:
70-
71-
Long Term Support Versions
72-
~~~~~~~~~~~~~~~~~~~~~~~~~~
73-
74-
Every two years, a new **Long Term Support Version** (usually abbreviated as "LTS")
75-
is published. Each LTS version is supported for a *three year* period for bug
76-
fixes, and for a *four year* period for security issue fixes.
59+
======================= ===================== ================================
60+
Version Type Bugs are fixed for... Security issues are fixed for...
61+
======================= ===================== ================================
62+
Standard 8 months 14 months
63+
Long-Term Support (LTS) 3 years 4 years
64+
======================= ===================== ================================
7765

7866
.. note::
7967

80-
Paid support after the three year support provided by the community can
81-
also be bought from `SensioLabs`_.
82-
83-
In the Symfony 2.x branch, the LTS versions are 2.3, 2.7 and 2.8. Starting from the 3.x
84-
branch, only the last minor version of each branch is considered LTS (e.g. 3.4,
85-
4.4, 5.4, etc.)
86-
87-
Schedule
88-
--------
89-
90-
Below is the schedule for the first few versions that use this release model:
91-
92-
.. image:: /_images/contributing/release-process.jpg
93-
:align: center
94-
95-
* **Yellow** represents the Development phase
96-
* **Blue** represents the Stabilization phase
97-
* **Green** represents the Maintenance period
68+
After the active maintenance of a Symfony version has ended, you can get
69+
`professional Symfony support`_ from SensioLabs, the company which sponsors
70+
the Symfony project.
9871

99-
.. tip::
100-
101-
If you want to learn more about the timeline of any given Symfony version,
102-
use the online `timeline calculator`_.
103-
104-
.. tip::
105-
106-
Whenever an important event related to Symfony versions happens (a version
107-
reaches end of maintenance or a new patch version is released for
108-
instance), you can automatically receive an email notification if you
109-
subscribed on the `roadmap notification`_ page.
110-
111-
.. _version-history:
112-
113-
============ ============== ======= ======================== ===========
114-
Version Feature Freeze Release End of Maintenance End of Life
115-
============ ============== ======= ======================== ===========
116-
`2.0`_ 05/2011 07/2011 03/2013 (20 months) 09/2013
117-
`2.1`_ 07/2012 09/2012 05/2013 (9 months) 11/2013
118-
`2.2`_ 01/2013 03/2013 11/2013 (8 months) 05/2014
119-
`2.3`_ (LTS) 03/2013 05/2013 05/2016 (36 months) 05/2017
120-
`2.4`_ 09/2013 11/2013 09/2014 (10 months [1]_) 01/2015
121-
`2.5`_ 03/2014 05/2014 01/2015 (8 months) 07/2015
122-
`2.6`_ 09/2014 11/2014 07/2015 (8 months) 01/2016
123-
`2.7`_ (LTS) 03/2015 05/2015 05/2018 (36 months) 05/2019
124-
`2.8`_ (LTS) 09/2015 11/2015 11/2018 (36 months [2]_) 11/2019
125-
`3.0`_ 09/2015 11/2015 07/2016 (8 months [3]_) 01/2017
126-
`3.1`_ 03/2016 05/2016 01/2017 (8 months) 07/2017
127-
`3.2`_ 09/2016 11/2016 07/2017 (8 months) 01/2018
128-
`3.3`_ 03/2017 05/2017 01/2018 (8 months) 07/2018
129-
`3.4`_ (LTS) 09/2017 11/2017 11/2020 (36 months) 11/2021
130-
`4.0`_ 09/2017 11/2017 07/2018 (8 months) 01/2019
131-
`4.1`_ 03/2018 05/2018 01/2019 (8 months) 07/2019
132-
`4.2`_ 09/2018 11/2018 07/2019 (8 months) 01/2020
133-
`4.3`_ 03/2019 05/2019 01/2020 (8 months) 07/2020
134-
`4.4`_ (LTS) 09/2019 11/2019 11/2022 (36 months) 11/2023
135-
`5.0`_ 09/2019 11/2019 07/2020 (8 months) 01/2021
136-
... ... ... ... ...
137-
============ ============== ======= ======================== ===========
138-
139-
.. [1] Symfony 2.4 maintenance has been `extended to September 2014`_.
140-
.. [2] Symfony 2.8 is the last version of the Symfony 2.x branch.
141-
.. [3] Symfony 3.0 is the first version to use the new release process based on five minor releases.
72+
.. _deprecations:
14273

14374
Backward Compatibility
14475
----------------------
@@ -147,20 +78,9 @@ Our :doc:`Backward Compatibility Promise </contributing/code/bc>` is very
14778
strict and allows developers to upgrade with confidence from one minor version
14879
of Symfony to the next one.
14980

150-
Whenever keeping backward compatibility is not possible, the feature, the
151-
enhancement or the bug fix will be scheduled for the next major version.
152-
153-
However, :doc:`Experimental Features </contributing/code/experimental>` are
154-
**not** part of the backward compatibility promise and their APIs can change
155-
from one minor version to the next. The changelog must explain the changes and
156-
how to upgrade.
157-
158-
Deprecations
159-
------------
160-
16181
When a feature implementation cannot be replaced with a better one without
162-
breaking backward compatibility, there is still the possibility to deprecate
163-
the old implementation and add a new preferred one along side. Read the
82+
breaking backward compatibility, Symfony deprecates the old implementation and
83+
adds a new preferred one along side. Read the
16484
:ref:`conventions <contributing-code-conventions-deprecations>` document to
16585
learn more about how deprecations are handled in Symfony.
16686

@@ -179,7 +99,9 @@ This release process was adopted to give more *predictability* and
17999
* Coordinate the Symfony timeline with popular PHP projects that work well
180100
with Symfony and with projects using Symfony;
181101
* Give time to the Symfony ecosystem to catch up with the new versions
182-
(bundle authors, documentation writers, translators, ...).
102+
(bundle authors, documentation writers, translators, ...);
103+
* Give companies a strict and predictable timeline they can rely on to plan
104+
their own projects development.
183105

184106
The six month period was chosen as two releases fit in a year. It also allows
185107
for plenty of time to work on new features and it allows for non-ready
@@ -192,29 +114,7 @@ version: a new version is published every six months, and there is a two months
192114
period to upgrade. Companies wanting more stability use the LTS versions: a new
193115
version is published every two years and there is a year to upgrade.
194116

195-
.. _Semantic Versioning: https://semver.org/
196-
.. _Git repository: https://github.com/symfony/symfony
197-
.. _SensioLabs: https://sensiolabs.com/
198-
.. _roadmap notification: https://symfony.com/roadmap
199-
.. _extended to September 2014: https://symfony.com/blog/extended-maintenance-for-symfony-2-4
200-
.. _timeline calculator: https://symfony.com/roadmap#checker
201-
.. _`2.0`: https://symfony.com/roadmap?version=2.0
202-
.. _`2.1`: https://symfony.com/roadmap?version=2.1
203-
.. _`2.2`: https://symfony.com/roadmap?version=2.2
204-
.. _`2.3`: https://symfony.com/roadmap?version=2.3
205-
.. _`2.4`: https://symfony.com/roadmap?version=2.4
206-
.. _`2.5`: https://symfony.com/roadmap?version=2.5
207-
.. _`2.6`: https://symfony.com/roadmap?version=2.6
208-
.. _`2.7`: https://symfony.com/roadmap?version=2.7
209-
.. _`2.8`: https://symfony.com/roadmap?version=2.8
210-
.. _`3.0`: https://symfony.com/roadmap?version=3.0
211-
.. _`3.1`: https://symfony.com/roadmap?version=3.1
212-
.. _`3.2`: https://symfony.com/roadmap?version=3.2
213-
.. _`3.3`: https://symfony.com/roadmap?version=3.3
214-
.. _`3.4`: https://symfony.com/roadmap?version=3.4
215-
.. _`4.0`: https://symfony.com/roadmap?version=4.0
216-
.. _`4.1`: https://symfony.com/roadmap?version=4.1
217-
.. _`4.2`: https://symfony.com/roadmap?version=4.2
218-
.. _`4.3`: https://symfony.com/roadmap?version=4.3
219-
.. _`4.4`: https://symfony.com/roadmap?version=4.4
220-
.. _`5.0`: https://symfony.com/roadmap?version=5.0
117+
.. _`semantic versioning`: https://semver.org/
118+
.. _`Subscribe to Symfony Roadmap notifications`: https://symfony.com/account
119+
.. _`Symfony Roadmap`: https://symfony.com/roadmap#checker
120+
.. _`professional Symfony support`: https://sensiolabs.com/

0 commit comments

Comments
 (0)