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