Содержание

Содержание

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

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

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

Note

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

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

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

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

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

Note

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