diff --git a/contributing/community/index.rst b/contributing/community/index.rst index a59095c8750..e6b51e3fb99 100644 --- a/contributing/community/index.rst +++ b/contributing/community/index.rst @@ -4,5 +4,6 @@ Community .. toctree:: :maxdepth: 2 + releases irc other diff --git a/contributing/community/releases.rst b/contributing/community/releases.rst new file mode 100644 index 00000000000..1749a5b805b --- /dev/null +++ b/contributing/community/releases.rst @@ -0,0 +1,119 @@ +The Release Process +=================== + +This document explains the Symfony release process (Symfony being the code +hosted on the main symfony/symfony `Git repository`_). + +Symfony manages its releases through a *time-based model*; a new Symfony +release comes out every *six months*: one in *May* and one in *November*. + +.. note:: + + This release process has been adopted as of Symfony 2.2, and all the + "rules" explained in this document must be strictly followed as of Symfony + 2.4. + +Development +----------- + +The six-months period is divided into two phases: + + * *Development*: *Four months* to add new features and to enhance existing + ones; + + * *Stabilisation*: *Two months* to fix bugs, prepare the release, and wait + for the whole Symfony ecosystem (third-party libraries, bundles, and + projects using Symfony) to catch up. + +During the development phase, any new feature can be reverted if it won't be +finished in time or if it won't be stable enough to be included in the current +final release. + +Maintenance +----------- + +Each Symfony version is maintained for a fixed period of time, depending on +the type of the release. + +Standard Releases +~~~~~~~~~~~~~~~~~ + +A standard release is maintained for an *eight month* period. + +Long Term Support Releases +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Every two years, a new Long Term Support Release (aka LTS release) is +published. Each LTS release is supported for a *three year* period. + +.. note:: + + Paid support after the three year support provided by the community can + also be bought from `SensioLabs`_. + +Schedule +-------- + +Below is the schedule for the first few versions that use this release model: + +.. image:: /images/release-process.jpg + :align: center + + * *(special)* Symfony 2.2 will be released at the end of February 2013; + + * *(special)* Symfony 2.3 (the first LTS) will be released at the end of May + 2013; + + * Symfony 2.4 will be released at the end of November 2013; + + * Symfony 2.5 will be released at the end of May 2014; + + * ... + +Backward Compatibility +---------------------- + +After the release of Symfony 2.3, backward compatibility will be kept at all +cost. If it is not possible, the feature, the enhancement, or the bug fix will +be scheduled for the next major version: Symfony 3.0. + +.. note:: + + The work on Symfony 3.0 will start whenever enough major features breaking + backward compatibility are waiting on the todo-list. + +Rationale +--------- + +This release process was adopted to give more *predictability* and +*transparency*. Is was discussed based on the following goals: + + * Shorten the release cycle (allow developers to benefit from the new + features faster); + + * Give more visibility to the developers using the framework and Open-Source + projects using Symfony; + + * Improve the experience of Symfony core contributors: everyone knows when a + feature might be available in Symfony. + + * Coordinate the Symfony timeline with popular PHP projects that work well + with Symfony and with projects using Symfony; + + * Give time to the Symfony ecosystem to catch up with the new versions + (bundle authors, documentation writers, translators, ...). + +The six month period was chosen as two releases fit in a year. It also gives +plenty of time to work on new features and it also allows for non-ready +features to be postponed to the next version without having to wait too much +for the next cycle. + +The dual maintenance mode was adopted to make every Symfony user happy. Fast +movers, who want to work with the latest and the greatest, use the standard +releases: a new version is published every six months, and there is a two +months period to upgrade. Companies wanting more stability use the LTS +releases: a new version is published every two years and there is a year to +upgrade. + +.. _Git repository: https://github.com/symfony/symfony +.. _SensioLabs: http://sensiolabs.com/ diff --git a/contributing/map.rst.inc b/contributing/map.rst.inc index 3df1c1cfe52..822b339fb01 100644 --- a/contributing/map.rst.inc +++ b/contributing/map.rst.inc @@ -17,5 +17,6 @@ * **Community** + * :doc:`Release Process ` * :doc:`IRC Meetings ` * :doc:`Other Resources ` diff --git a/images/release-process.jpg b/images/release-process.jpg new file mode 100644 index 00000000000..f3244c121bc Binary files /dev/null and b/images/release-process.jpg differ