Процесс релиза

Этот документ объясняет процесс релиза проекта Symfony (т.е. кода, расположенного в главном хранилище Git symfony/symfony).

Symfony управляет своими релизами с помощью модели, основанной на времени и следует стратегии Семантического версионирования:

  • Новая промежуточная версия Symfony (например, 2.8, 3.2, 4.1) выходит раз в 6 месяцев, одна в мае и одна - в ноябре;
  • Новая полноценная версия Symfony (например, 3.0, 4.0) выходит раз в 2 года и выпускается в то жевремя, что и последняя младшая версия предыдущей старшей версии.

Разработка

Полный период разработки любой полноценной или младшей версии длится шесть месяцев и делится на два этапа:

  • Разработка: Четыре месяца, чтобы добавить новые функции и улучшить существующие;
  • Стабилизация: Два месяца, чтобы исправить баги, подготовить релиз, и дождаться, пока подтянется все экосистема Symfony (сторонние библиотеки, пакеты и проекты, использующие Symfony).

Во время этапа разработки, любая новая функция может быть отменена, если она не будет закончена вовремя, или если она недостаточно стабильна, чтобы быть включённой в текущий финальный релиз.

Содержание

Каждая версия Symfony содержится фиксированный период времени, в зависимости от типа релиза. Это содержание делится на:

  • Исправления багов и безопасности: Во время этого периода могут быть исправлены все проблемы. Конец этого периода называется концом содержания релиза.
  • Исправления только безопасности: Во время этого периода исправляются только проблемы безопасности. Конец этого периода называется концом жизни релиза.

Note

Документ содержания описывает границы и дозволенные изменения во время содержания.

Версии Symfony

Стандартные версии

Стандартна младшая версия содержится на протяжении восьми месяцев для исправления багов, и на протяжении четырнадцати месяцев для исправлений проблем безопасности.

В ветке Symfony 2.x, количество младших версий не было ограничено, поэтому в ветке оказалось 9 младших версий (от 2.0 до 2.8). Начиная с ветки 3.x, количество младших версий ограничивается до пяти (от X.0 до X.4).

Версии длительной поддержки

Каждые два года публикуется новая Версия длительной поддержки (обычно её сокращают, как "ВДП"). Каждая ВДП версия поддерживается на протяжении трёх лет для исправления багов, и четырёх лет для исправления проблем безопасности.

Note

Платная поддержка, предоставляемая обществом, после этой трёхлетней поддержки может быть также куплена у SensioLabs.

В ветке Symfony 2.x версии ВДП - 2.3, 2.7 и 2.8. Начиная с ветки 3.x, только последняя младшая версия каждой ветки считается ВДП (например, 3.4, 4.4, 5.4, и т.д.)

Расписание

Ниже находится расписание нескольких первых версий, которые используют эту модель релизов:

../../_images/release-process.jpg
  • Жёлтый представляет фазу Разработки
  • Синий представляет фазу Стабилизации
  • Зелёный представляет период Содержания

Tip

Если вы хотите узнать больше о хронологии любой заданной версии Symfony, используйте онлайн калькулятор хронологии.

Tip

Каждый раз, когда происходит важное событи, связанное с версиями Symfony (версия доходит до конца периода содержания, или выпускается новая версия патча, например), вы можете автоматически получить уведомление на email? если вы подписались на странице плана уведомлений.

Версия Заморозка функционала Релиз Конец содержания Конец жизни
2.0 05/2011 07/2011 03/2013 (20 месяцев) 09/2013
2.1 07/2012 09/2012 05/2013 (9 месяцев) 11/2013
2.2 01/2013 03/2013 11/2013 (8 месяцев) 05/2014
2.3 (LTS) 03/2013 05/2013 05/2016 (36 месяцев) 05/2017
2.4 09/2013 11/2013 09/2014 (10 месяцев [1]) 01/2015
2.5 03/2014 05/2014 01/2015 (8 месяцев) 07/2015
2.6 09/2014 11/2014 07/2015 (8 месяцев) 01/2016
2.7 (LTS) 03/2015 05/2015 05/2018 (36 месяцев) 05/2019
2.8 (LTS) 09/2015 11/2015 11/2018 (36 месяцев [2]) 11/2019
3.0 09/2015 11/2015 07/2016 (8 месяцев) [3]) 01/2017
3.1 03/2016 05/2016 01/2017 (8 месяцев) 07/2017
3.2 09/2016 11/2016 07/2017 (8 месяцев) 01/2018
3.3 03/2017 05/2017 01/2018 (8 месяцев) 07/2018
3.4 (LTS) 09/2017 11/2017 11/2020 (36 месяцев) 11/2021
4.0 09/2017 11/2017 07/2018 (8 месяцев) 01/2019
4.1 03/2018 05/2018 01/2019 (8 месяцев) 07/2019
4.2 09/2018 11/2018 07/2019 (8 месяцев) 01/2020
4.3 03/2019 05/2019 01/2020 (8 месяцев) 07/2020
4.4 (LTS) 09/2019 11/2019 11/2022 (36 месяцев) 11/2023
5.0 09/2019 11/2019 07/2020 (8 месяцев) 01/2021
... ... ... ... ...
[1]Содержание Symfony 2.4 было продлено до сентября 2014.
[2]Symfony 2.8 является последней версией в ветке Symfony 2.x.
[3]Symfony 3.0 является первой версией, использующей новый процесс релиза, основанный на пяти младших версиях.

Обратная совместимость

Наше Обещание обратной совместимости очень строгое и позволяет разработчикам уверенно обновляться с одной младшей версии Symfony на следующую.

Если ОС невозможна, функция, улучшение или исправление бага будет реализовано в следующей полноценной версии.

Однако, Экспериментальные функции не являются частью обещания ОС и их API могут изменяться от одной младшей версии к другой. Журнал изменений должен объяснить изменения и то, как обновиться.

Депрекации

Когда реализация функции не может быть заменена лучшей, не нарушая обратную совместимость, существует возможность объявить старую реализацию устаревшей, и добавить новую предпочитаемую. Прочтите документ соглашения, чтобы узнать о том, как Symfony работает с депрекациями.

Обоснование

Этот процесс релиза был принят, чтобы добавить предсказуемости и прозрачности. Он обсуждался, основываясь на следующих целях:

  • Сократить цикл релиза (позволить разработчикам получать преимущества от новых функций быстрее);
  • Дать большую видимость разработчикам, используя фреймворк и проекты Symfony из открытых источников;
  • Улучшить опыт базовых вкладчиков Symfony: все знают, когда функция может стать доступна в Symfony;
  • Скоординировать хронологию Symfony с популярными PHP проектами, которые хорошо работают с Symfony, и с проектами, использующими Symfony;
  • Дать время экосистеме подхватить новые версии (авторов пакетов, авторов документации, переводчиков, ...).

Шестимесячный период был выбран, так как в году получается два релиза. Это также даёт достаточно времени для работы над новыми функциями и позволяет неготовым функциям быть отложенными до следующей версии, не превращая ожидание в слишком длительное.

Режим двойного содержания был принят, чтобы сделать каждого пользователя Symfony счастливым. Быстрые пользователи, которые хотят работать с новейшими версиями, используют стандартную версию: новая версия публикуется каждые 6 месяцев и существует двухмесячный период для обновления.Компании, которые хотят большей стабильности, используют версии ВДП: новая версия публикуется каждые два года и существует годичный период для обновления.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.