docs/internals/versions.md
This document summarizes the versioning policy of Yii. Our current versioning strategy is a variant of Semantic Versioning.
Within the core developer team, we have emphasized several times that it is important to keep 2.0.x releases backwards compatible. But this is an ideal plan. In a real world this is hard to achieve. See Backwards Compatibility document for detailed description of what BC is.
In summary, our versioning policy for Yii 2 is as follows:
Version numbers are in the format of 2.x.y.z, where the z can be skipped for releases for which z is 0.
A possible Yii version 3 is not covered here as we'd expect it to be like 2.0 over 1.0. We expect that this only happens every 3 to 5 years, depending on external technology advancement (such as PHP upgraded from 5.0 to 5.4).
2.X.0: major releasesBackwards compatibility breaking releases, which contain major features and changes that may break BC. Upgrading from earlier versions may not be trivial, but a complete upgrade guide will be available.
UPGRADE-2.X.md file.2.X.0-alpha, 2.X.0-beta, 2.X.0-rc.2.x.Y: minor releasesMinor releases, which are mostly BC-compatible. Ideally, we hope they contain only changes that do not affect backwards
compatibility. However, it is not always possible to keep everything 100% BC-compatible, so upgrade notes are recorded
in UPGRADE.md. Practically, since 2.0.x is released more frequently, we are also adding minor features
to it so that users can enjoy them earlier.
UPGRADE.md.2.x.y.Z: patch releasesPatch releases, which should be 100% BC-compatible, containing bug fixes only. No news announcement or project site update (unless it contains major/security issue fixes). The release process is mostly automatic.
master branch is the development branch for the current stable major release, currently 2.0.x versions.2.1.2.n is ready, create a maintenance branch named 2.(n-1).x off master.
E.g. a 2.0 branch is created if version 2.1.0 is released as stable and will now be developed on master
(cmp. composer branch naming schema).2.x.y.z and 2.x.y branch to mark patch releases. For 2.x.y.0 releases, the 0 will be skipped.2.n.x maintenance branches will be merged back to master constantly.The following image shows an illustration of the branches on changing commit history over time:
Framework and official extension projects are released independently of each other, i.e. version number mismatch between framework and extension is expected. The Application Templates are always released together with the framework.
The release cycles described above only apply to the core framework. Extensions are released on demand. It is likely that an extension has no new releases for a very long time because it does not receive any bug fixes or enhancements.