Maintenance

During the lifetime of a minor version, new releases (patch versions) are published on a monthly basis. This document describes the boundaries of acceptable changes.

マイナー バージョンの有効期間中、新しいリリース (パッチ バージョン) が毎月発行されます。このドキュメントでは、許容される変更の境界について説明します。

Bug fixes are accepted under the following conditions:

バグ修正は、次の条件の下で受け入れられます。
  • The change does not break valid unit tests;
    変更によって有効な単体テストが中断されることはありません。
  • New unit tests cover the bug fix;
    新しい単体テストはバグ修正をカバーしています。
  • The current buggy behavior is not widely used as a "feature".
    現在のバグのある動作は、「機能」として広く使用されていません。

Note

ノート

When documentation (or PHPDoc) is not in sync with the code, code behavior should always be considered as being the correct one.

ドキュメント (または PHPDoc) がコードと同期していない場合、コードの動作は常に正しいものと見なされます。

To avoid backward compatibility breaks, we tend to be very strict about changes accepted for patch versions.

下位互換性の問題を回避するために、パッチ バージョンで受け入れられる変更について非常に厳密になる傾向があります。

Besides bug fixes, other minor changes might be accepted in a patch version on a case by case basis:

バグ修正に加えて、その他のマイナーな変更は、ケースバイケースでパッチ バージョンで受け入れられる場合があります。
  • Newer versions of PHP: Fixes that add support for newer versions of PHP are acceptable if they don't break the unit test suite, but we never add support for newer PHP features;
    新しいバージョンの PHP: 新しいバージョンの PHP のサポートを追加する修正は、ユニット テスト スイートを壊さない限り受け入れられますが、新しい PHP 機能のサポートを追加することはありません。
  • Newer versions of popular OSes: Fixes that add support for newer versions of popular OSes (Linux, MacOS and Windows) are acceptable if they don't break the unit test suite, but we never add support for newer PHP features or newer versions of OSes;
    一般的な OS の新しいバージョン: 一般的な OS (Linux、MacOS、および Windows) の新しいバージョンのサポートを追加する修正は、ユニット テスト スイートを壊さない限り受け入れられますが、新しい PHP 機能または OS の新しいバージョンのサポートを追加することはありません。
  • Translations: Translation updates and additions are always merged in the oldest maintained branch;
    翻訳: 翻訳の更新と追加は、常に最も古い管理ブランチにマージされます。
  • External data: Updates for external data included in Symfony can be updated (like ICU for instance);
    外部データ: Symfony に含まれる外部データの更新は更新できます (たとえば ICU など)。
  • Version updates for Composer dependencies: Changing the minimal version of a dependency is possible, bumping to a major one or increasing PHP minimal version is not;
    Composer の依存関係のバージョン更新: 依存関係の最小バージョンを変更することは可能ですが、メジャー バージョンにバンプしたり、PHP の最小バージョンを増やしたりすることはできません。
  • Tests: Tests that increase the code coverage can be added.
    テスト: コード カバレッジを向上させるテストを追加できます。

The following changes are generally not accepted in a patch version, except on a case by case basis (mostly when this is related to fixing a security issue):

次の変更は、ケースバイケースを除いて、通常、パッチ バージョンでは受け入れられません (ほとんどの場合、セキュリティの問題の修正に関連する場合)。
  • Performance improvement: Performance improvement should only be accepted if the changes are local (located in one class) and only for algorithmic issues (any such patches must come with numbers that show a significant improvement on real-world code);
    パフォーマンスの向上: パフォーマンスの向上は、変更がローカル (1 つのクラスにある) であり、アルゴリズムの問​​題に対してのみ受け入れられる必要があります (そのようなパッチには、実際のコードで大幅な改善を示す数字が含まれている必要があります)。
  • Coding standard and refactoring: Coding standard fixes or code refactoring are almost never accepted except for consistency with the existing code base, if they are not too invasive, and if merging them into higher branches would not lead to complex branch merging.
    コーディング標準とリファクタリング: コーディング標準の修正またはコード リファクタリングは、既存のコード ベースとの一貫性、それらが侵襲的すぎない場合、およびそれらをより高いブランチにマージしても複雑なブランチのマージにつながらない場合を除いて、ほとんど受け入れられません。
  • Adding new classes or non private methods: While working on a bug fix, never introduce new classes or public/protected methods (or global functions).
    新しいクラスまたは非プライベート メソッドの追加: バグ修正に取り組んでいる間は、新しいクラスまたはパブリック/保護されたメソッド (またはグローバル関数) を導入しないでください。
  • Adding configuration options: Introducing new configuration options is never allowed.
    構成オプションの追加: 新しい構成オプションの導入は許可されていません。
  • Adding new deprecations: After a version reaches stability, new deprecations cannot be added anymore.
    新しい非推奨の追加: バージョンが安定すると、新しい非推奨を追加できなくなります。

Anything not explicitly listed above should be done on the next minor or major version instead. For instance, the following changes are never accepted in a patch version:

上に明示的に記載されていないことは、代わりに次のマイナー バージョンまたはメジャー バージョンで実行する必要があります。たとえば、次の変更はパッチ バージョンでは受け入れられません。
  • New features;
    新機能;
  • Security hardening;
    セキュリティ強化;
  • Backward compatibility breaks: Note that backward compatibility breaks can be done when fixing a security issue if it would not be possible to fix it otherwise;
    下位互換性の中断: 下位互換性の中断は、他の方法で修正できない場合、セキュリティの問題を修正するときに実行できることに注意してください。
  • Support for external platforms: Adding support for new platforms (like Google App Engine) cannot be done in patch versions;
    外部プラットフォームのサポート: 新しいプラットフォーム (Google App Engine など) のサポートの追加は、パッチ バージョンでは実行できません。
  • Exception messages: Exception messages must not be changed as some automated systems might rely on them (even if this is not recommended);
    例外メッセージ: 一部の自動化されたシステムが例外メッセージに依存している可能性があるため、例外メッセージを変更してはなりません (これが推奨されていなくても)。
  • Adding new Composer dependencies;
    新しい Composer 依存関係の追加。
  • Support for newer major versions of Composer dependencies: Taking into account support for newer versions of an existing dependency is not acceptable.
    Composer 依存関係の新しいメジャー バージョンのサポート: 既存の依存関係の新しいバージョンのサポートを考慮することは受け入れられません。
  • Web design: Changing the web design of built-in pages like exceptions, the toolbar or the profiler is not allowed.
    Web デザイン: 例外、ツールバー、プロファイラーなどの組み込みページの Web デザインを変更することは許可されていません。

Note

ノート

This policy is designed to enable a continuous upgrade path that allows one to move forward with the newest Symfony versions in the safest way. One should be able to move PHP versions, OS or Symfony versions almost independently. That's the reason why supporting the latest PHP versions or OS features is considered as bug fixes.

このポリシーは、最も安全な方法で最新の Symfony バージョンに移行できる継続的なアップグレード パスを有効にするように設計されています。 PHP のバージョン、OS、または Symfony のバージョンをほぼ独立して移動できるはずです。これが、最新の PHP バージョンまたは OS 機能のサポートがバグ修正と見なされる理由です。