|
| 1 | +Maintenance |
| 2 | +=========== |
| 3 | + |
| 4 | +During the lifetime of a minor version, new releases (patch versions) are |
| 5 | +published on a monthly basis. This document describes the boundaries of |
| 6 | +acceptable changes. |
| 7 | + |
| 8 | +**Bug fixes** are accepted under the following conditions: |
| 9 | + |
| 10 | +* The change does not break valid unit tests; |
| 11 | +* New unit tests cover the bug fix; |
| 12 | +* The current buggy behavior is not widely used as a "feature". |
| 13 | + |
| 14 | +.. note:: |
| 15 | + |
| 16 | + When documentation (or phpdoc) is not in sync with the code, code behavior |
| 17 | + should always be considered as being the correct one. |
| 18 | + |
| 19 | +Besides bug fixes, other minor changes can be accepted in a patch version: |
| 20 | + |
| 21 | +* **Performance improvement**: Performance improvement should only be accepted |
| 22 | + if the changes are local (located in one class) and only for algorithmic |
| 23 | + issues (any such patches must come with numbers that show a significant |
| 24 | + improvement on real-world code); |
| 25 | + |
| 26 | +* **Newer versions of PHP/HHVM**: Fixes that add support for newer versions of |
| 27 | + PHP or HHVM are acceptable if they don't break the unit test suite; |
| 28 | + |
| 29 | +* **Newer versions of popular OSes**: Fixes that add support for newer versions |
| 30 | + of popular OSes (Linux, MacOS and Windows) are acceptable if they don't break |
| 31 | + the unit test suite; |
| 32 | + |
| 33 | +* **Translations**: Translation updates and additions are accepted; |
| 34 | + |
| 35 | +* **External data**: Updates for external data included in Symfony can be |
| 36 | + updated (like ICU for instance); |
| 37 | + |
| 38 | +* **Version updates for Composer dependencies**: Changing the minimal version |
| 39 | + of a dependency is possible, bumping to a major one or increasing PHP |
| 40 | + minimal version is not; |
| 41 | + |
| 42 | +* **Coding standard and refactoring**: Coding standard fixes or code |
| 43 | + refactoring are not recommended but can be accepted for consistency with the |
| 44 | + existing code base, if they are not too invasive, and if merging them on |
| 45 | + master would not lead to complex branch merging; |
| 46 | + |
| 47 | +* **Tests**: Tests that increase the code coverage can be added. |
| 48 | + |
| 49 | +Anything not explicitly listed above should be done on the next minor or major |
| 50 | +version instead (aka the *master* branch). For instance, the following changes |
| 51 | +are never accepted in a patch version: |
| 52 | + |
| 53 | +* **New features**; |
| 54 | + |
| 55 | +* **Backward compatibility breaks**: Note that backward compatibility breaks |
| 56 | + can be done when fixing a security issue if it would not be possible to fix |
| 57 | + it otherwise; |
| 58 | + |
| 59 | +* **Support for external platforms**: Adding support for new platforms (like |
| 60 | + Google App Engine) cannot be done in patch versions; |
| 61 | + |
| 62 | +* **Exception messages**: Exception messages must not be changed as some |
| 63 | + automated systems might rely on them (even if this is not recommended); |
| 64 | + |
| 65 | +* **Adding new Composer dependencies**; |
| 66 | + |
| 67 | +* **Support for newer major versions of Composer dependencies**: Taking into |
| 68 | + account support for newer versions of an existing dependency is not |
| 69 | + acceptable. |
| 70 | + |
| 71 | +* **Web design**: Changing the web design of built-in pages like exceptions, |
| 72 | + the toolbar or the profiler is not allowed. |
| 73 | + |
| 74 | +.. note:: |
| 75 | + |
| 76 | + This policy is designed to enable a continuous upgrade path that allows one |
| 77 | + to move forward with newest Symfony versions in the safest way. One should |
| 78 | + be able to move PHP versions, OS or Symfony versions almost independently. |
| 79 | + That's the reason why supporting the latest PHP versions or OS features is |
| 80 | + considered as bug fixes. |
0 commit comments