Browse Source

Merge pull request #4757 from akien-mga/release-policy-3.3

Rewrite release policy to clarify versioning and include 3.3
Rémi Verschelde 4 years ago
parent
commit
5407b9d7fe
1 changed files with 95 additions and 36 deletions
  1. 95 36
      about/release_policy.rst

+ 95 - 36
about/release_policy.rst

@@ -3,48 +3,107 @@
 Godot release policy
 ====================
 
+Godot's release policy is in constant evolution. What is described below is
+intended to give a general idea of what to expect, but what will actually
+happen depends on the choices of core contributors, and the needs of the
+community at a given time.
+
 Godot versioning
 ----------------
 
-Godot uses ``major.minor.patch`` version numbering. However, it does not
-strictly follow `Semantic Versioning <https://semver.org/>`__. This means that
-releases considered "semver-minor" by that standard (such as 3.1 -> 3.2) will
-most likely introduce breaking changes. Still, there won't be as many breaking
-changes as a "semver-major" version bump such as 3.2 -> 4.0.
+Godot loosely follows `Semantic Versioning <https://semver.org/>`__ with a
+``major.minor.patch`` versioning system, albeit with an interpretation of each
+term adapted to the complexity of a game engine:
+
+- The ``major`` version is incremented when major compatibility breakages happen
+  which imply significant porting work to move projects from one major version
+  to another.
+
+  For example, porting Godot projects from Godot 2.1 to Godot 3.0 required
+  running the project through a conversion tool, and then performing a number
+  of further adjustments manually for what the tool could not do automatically.
+
+- The ``minor`` version is incremented for feature releases which do not break
+  compatibility in a major way. Minor compatibility breakage in very specific
+  areas *may* happen in minor versions, but the vast majority of projects
+  should not be affected or require significant porting work.
+
+  The reason for this is that as a game engine, Godot covers many areas such
+  as rendering, physics, scripting, etc., and fixing bugs or implementing new
+  features in a given area may sometimes require changing the behavior of a
+  feature, or modifying the interface of a given class, even if the rest of
+  the engine API remains backwards compatible.
+
+.. tip::
+
+    Upgrading to a new minor version is therefore recommended for all users,
+    but some testing is necessary to ensure that your project still behaves as
+    expected in a new minor version.
 
-In the interest of stability and usability, patch releases may occasionally
-introduce small breaking changes as well. When repackaging Godot projects (e.g.
-in a Flatpak), make sure to always use the same patch version as the one used to
-initially export the project.
+- The ``patch`` version is incremented for maintenance releases which focus on
+  fixing bugs and security issues, implementing new requirements for platform
+  support, and backporting safe usability enhancements. Patch releases are
+  backwards compatible.
+
+  Patch versions may include minor new features which do not impact the
+  existing API, and thus have no risk of impacting existing projects.
+
+.. tip::
+
+    Updating to new patch versions is therefore considered safe and strongly
+    recommended to all users of a given stable branch.
+
+We call ``major.minor`` combinations *stable branches*. Each stable branch
+starts with a ``major.minor`` release (without the ``0`` for ``patch``) and is
+further developed for maintenance releases in a Git branch of the same name
+(for example patch updates for the 3.3 stable branch are developed in the
+``3.3`` Git branch).
 
 .. note::
 
-    The first release in a major/minor release series doesn't end with a
-    trailing zero. For example, the first release in the 3.2 series is ``3.2``,
-    not ``3.2.0``.
+    As mentioned in the introduction, Godot's release policy is evolving, and
+    earlier Godot releases may not have followed the above rules to the letter.
+    In particular, the 3.2 stable branch received a number of new features in
+    3.2.2 which would have warranted a ``minor`` version increment.
 
 Release support timeline
 ------------------------
 
-Godot versions are supported for a certain amount of time. While these durations
-are not set in stone, here's a table with the expected level of support
-for each Godot version:
+Stable branches are supported *at minimum* until the next stable branch is
+released and has received its first patch update. In practice, we support
+stable branches on a *best effort* basis for as long as they have active users
+who need maintenance updates.
+
+Whenever a new major version is released, we make the previous stable branch a
+long-term supported release, and do our best to provide fixes for issues
+encountered by users of that branch who cannot port complex projects to the new
+major version. This is the case for the 2.1 branch, and will be the case for
+the latest 3.x stable branch by the time Godot 4.0 is released.
+
+.. To add once 3.3 is released:
+   | Godot 3.4   | Q2 or Q3 2021     | |supported| *Beta.* Receives new features as well as bug fixes while     |
+   |             |                   | under development.                                                       |
 
 +-------------+-------------------+--------------------------------------------------------------------------+
 | **Version** | **Release date**  | **Support level**                                                        |
 +-------------+-------------------+--------------------------------------------------------------------------+
 | Godot 4.0   | ~2021 (see below) | |unstable| *Current focus of development (unstable).*                    |
 +-------------+-------------------+--------------------------------------------------------------------------+
-| Godot 3.2   | January 2020      | |supported| Backwards-compatible new features (backported from the       |
-|             |                   | ``master`` branch) as well as bug, security, and platform support fixes. |
+| Godot 3.3   | March/April 2021  | |supported| Receives bug, security and platform support fixes, as well   |
+|             |                   | as backwards-compatible usability enhancements.                          |
++-------------+-------------------+--------------------------------------------------------------------------+
+| Godot 3.2   | January 2020      | |partial| Only critical, security and platform support fixes             |
+|             |                   | (last update: 3.2.3).                                                    |
 +-------------+-------------------+--------------------------------------------------------------------------+
-| Godot 3.1   | March 2019        | |partial| Only critical, security and platform support fixes.            |
+| Godot 3.1   | March 2019        | |partial| Only critical, security and platform support fixes             |
+|             |                   | (last update: 3.1.2).                                                    |
 +-------------+-------------------+--------------------------------------------------------------------------+
-| Godot 3.0   | January 2018      | |partial| Only critical, security and platform support fixes.            |
+| Godot 3.0   | January 2018      | |eol| No longer supported (last update: 3.0.6).                          |
 +-------------+-------------------+--------------------------------------------------------------------------+
-| Godot 2.1   | July 2016         | |partial| Only critical, security and platform support fixes.            |
+| Godot 2.1   | July 2016         | |partial| Only critical, security and platform support fixes             |
+|             |                   | (last update: 2.1.6).                                                    |
 +-------------+-------------------+--------------------------------------------------------------------------+
-| Godot 2.0   | February 2016     | |eol| No longer supported.                                               |
+| Godot 2.0   | February 2016     | |eol| No longer supported (last update: 2.0.4.1).                        |
 +-------------+-------------------+--------------------------------------------------------------------------+
 | Godot 1.1   | May 2015          | |eol| No longer supported.                                               |
 +-------------+-------------------+--------------------------------------------------------------------------+
@@ -57,30 +116,30 @@ for each Godot version:
 .. |unstable| image:: img/unstable.png
 
 **Legend:**
-|supported| Full support -
-|partial| Partial support -
-|eol| No support (end of life) -
+|supported| Full support 
+|partial| Partial support 
+|eol| No support (end of life) 
 |unstable| Development version
 
 Pre-release Godot versions aren't intended to be used in production and are
-provided on a best-effort basis.
+provided for testing purposes only.
 
 .. _doc_release_policy_when_is_next_release_out:
 
 When is the next release out?
 -----------------------------
 
-While Godot contributors aren't working under any deadlines, there's usually a
-major or minor Godot release made available every year. Following this trend,
-this means Godot 4.0 will most likely be released in **2021**.
+While Godot contributors aren't working under any deadlines, we have
+historically had one major or minor release per year, with several maintenance
+updates between each.
 
-Patch releases are made available more frequently, typically every 2-6 months
-while a release is fully supported. Partially supported releases will only have
-new patch releases once an important security or platform support fix has been
-merged.
+Starting with Godot 3.3, we aim to accelerate our development cycles for minor
+releases, so you can expect a new minor release every 3 to 6 months.
 
-.. seealso::
+Maintenance (patch) releases will be released as needed with potentially very
+short development cycles, to provide users of the current stable branch with
+the latest bug fixes for their production needs.
 
-    The `roadmap <https://github.com/godotengine/godot-roadmap>`__ repository
-    documents features that have been agreed upon and may be implemented in future
-    Godot releases.
+As for the upcoming Godot 4.0, we can only say that we aim for a **2021**
+release, but any closer estimate is likely to be hard to uphold. Alpha builds
+will be published as soon as the main features for Godot 4.0 are finalized.