Содержание

Во время жизненного цикла младшей версии, ежемесячно публикуются новые релизы (версии патчей). Этот документ описывает границы дозволенных изменений.

Исправления багов принимаются при следующих условиях:

  • Изменение не нарушает валидные модульные тесты;
  • Новые модульные тесты охватывают исправление бага;
  • Текущее поведение бага не используется широко в качестве "фичи".

Note

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

Кроме исправлений багов, другие небольшие изменения могут быть приняты в версии патча:

  • Улучшение производительности: Улучшение производительности должно быть принято только если изменения локальны (находятся в одном классе) и только для алгоритмичных проблем (любые подобные патчи должны поставляться с цифрами, отображающими существенное улучшение в реальном коде);
  • Более новые версии PHP/HHVM: Исправления, которые добавляют поддержку более новых версий PHP или HHVM принимаются, если они не нарушают набор модульных тестов;
  • Более новые версии популярных ОС: Исправления, которые добавляют поддержку более новых версий популярных ОС (Linux, MacOS и Windows) принимаются, если они не нарушают набор модульных тестов;
  • Переводы: Обновления и дополнения переводов допускаются;
  • Внешние данные: Обновления для внешних данных, включённых в Symfony могут быть обновлены (например, ICU);
  • Обновления версий для зависимостей Composer: Изменение минимальной версии зависимости возможно, бОльшей или увеличение минимальной версии PHP - нет;
  • Стандарты написания кода и перепроектирование: Исправления стандартов написания кода или перепроектирование кода не рекомендуются, но могут быть допущены для совместимости с существующей базой кода, если они не слишком инвазивны, и если их слияние с главной версией не приведёт к сложному слиянию ветвей;
  • Тесты: Тесты, увеличивающие охват кода, могут быть добавлены.

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

  • Новые функции;
  • Нарушения обратной совместимости: Отметьте, что нарушения обратной совместимости могут быть применены при исправлении проблемы безопасности, если другое исправление невозможно;
  • Поддержка внешних платформ: Добавление поддержки для новых платформ (вроде движка Google App) не может быть сделано в версии патча;
  • Сообщения об исключениях: Сообщения об исключения не должны быть изменены, так как некоторые автоматизированные системы могут полагаться на них (даже если это не рекомендуется);
  • Добавление новых зависимостей Composer;
  • Поддержка более новых старших версий зависимостей Composer: Рассмотрение поддержки для более новых версий существующей зависимости невозможно.
  • Веб-дизайн: Изменение веб-дизайна встроенных страниц вроде исключений, панели инструментов или профилировщика, запрещено.

Note

Эта политика создана для поддержания непрерывного пути обновления, позволяющего двигаться вперёд с новейшими версиями Symfony самым безопасным способом. Обновление версий PHP, ОС или Symfony должно проиходить почти независимо. Поэтому поддержка последних версий PHP или ОС рассматривается, как исправление багов.

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