release_policy.rst 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. :allow_comments: False
  2. .. _doc_release_policy:
  3. Godot release policy
  4. ====================
  5. Godot's release policy is in constant evolution. The description below
  6. provides a general idea of what to expect, but what will actually
  7. happen depends on the choices of core contributors and the needs of the
  8. community at a given time.
  9. Godot versioning
  10. ----------------
  11. Godot loosely follows `Semantic Versioning <https://semver.org/>`__ with a
  12. ``major.minor.patch`` versioning system, albeit with an interpretation of each
  13. term adapted to the complexity of a game engine:
  14. - The ``major`` version is incremented when major compatibility breakages happen
  15. which imply significant porting work to move projects from one major version
  16. to another.
  17. For example, porting Godot projects from Godot 3.x to Godot 4.x requires
  18. running the project through a conversion tool, and then performing a number
  19. of further adjustments manually for what the tool could not do automatically.
  20. - The ``minor`` version is incremented for feature releases that do not break
  21. compatibility in a major way. Minor compatibility breakage in very specific
  22. areas *may* happen in minor versions, but the vast majority of projects
  23. should not be affected or require significant porting work.
  24. This is because Godot, as a game engine, covers many areas like rendering,
  25. physics, and scripting. Fixing bugs or implementing new features in one area
  26. might sometimes require changing a feature's behavior or modifying a class's
  27. interface, even if the rest of the engine API remains backwards compatible.
  28. .. tip::
  29. Upgrading to a new minor version is recommended for all users,
  30. but some testing is necessary to ensure that your project still behaves as
  31. expected.
  32. - The ``patch`` version is incremented for maintenance releases which focus on
  33. fixing bugs and security issues, implementing new requirements for platform
  34. support, and backporting safe usability enhancements. Patch releases are
  35. backwards compatible.
  36. Patch versions may include minor new features which do not impact the
  37. existing API, and thus have no risk of impacting existing projects.
  38. .. tip::
  39. Updating to new patch versions is therefore considered safe and strongly
  40. recommended to all users of a given stable branch.
  41. We call ``major.minor`` combinations *stable branches*. Each stable branch
  42. starts with a ``major.minor`` release (without the ``0`` for ``patch``) and is
  43. further developed for maintenance releases in a Git branch of the same name
  44. (for example patch updates for the 4.0 stable branch are developed in the
  45. ``4.0`` Git branch).
  46. Release support timeline
  47. ------------------------
  48. .. UPDATE: Table changes every minor version. Support policy may change.
  49. Stable branches are supported *at least* until the next stable branch is
  50. released and has received its first patch update. In practice, we support
  51. stable branches on a *best effort* basis for as long as they have active users
  52. who need maintenance updates.
  53. Whenever a new major version is released, we make the previous stable branch a
  54. long-term supported release, and do our best to provide fixes for issues
  55. encountered by users of that branch who cannot port complex projects to the new
  56. major version. This was the case for the 2.1 branch, and is the case for the
  57. 3.x branch.
  58. In a given minor release series, only the latest patch release receives support.
  59. If you experience an issue using an older patch release, please upgrade to the
  60. latest patch release of that series and test again before reporting an issue
  61. on GitHub.
  62. +--------------+----------------------+--------------------------------------------------------------------------+
  63. | **Version** | **Release date** | **Support level** |
  64. +--------------+----------------------+--------------------------------------------------------------------------+
  65. | Godot 4.4 | Q1 2025 (estimate) | |unstable| *Development.* Receives new features, usability and |
  66. | (`master`) | | performance improvements, as well as bug fixes, while under development. |
  67. +--------------+----------------------+--------------------------------------------------------------------------+
  68. | Godot 4.3 | August 2024 | |supported| Receives fixes for bugs and security issues, as well as |
  69. | | | patches that enable platform support. |
  70. +--------------+----------------------+--------------------------------------------------------------------------+
  71. | Godot 4.2 | November 2023 | |supported| Receives fixes for bugs and security issues, as well as |
  72. | | | patches that enable platform support. |
  73. +--------------+----------------------+--------------------------------------------------------------------------+
  74. | Godot 4.1 | July 2023 | |supported| Receives fixes for bugs and security issues, as well as |
  75. | | | patches that enable platform support. |
  76. +--------------+----------------------+--------------------------------------------------------------------------+
  77. | Godot 4.0 | March 2023 | |eol| No longer supported (last update: 4.0.4). |
  78. +--------------+----------------------+--------------------------------------------------------------------------+
  79. | Godot 3.7 | No ETA for now | |supported| *Beta.* Receives new features, usability and performance |
  80. | (`3.x`) | | improvements, as well as bug fixes, while under development. |
  81. +--------------+----------------------+--------------------------------------------------------------------------+
  82. | Godot 3.6 | September 2024 | |supported| Receives fixes for bugs and security issues, as well as |
  83. | | | patches that enable platform support. |
  84. +--------------+----------------------+--------------------------------------------------------------------------+
  85. | Godot 3.5 | August 2022 | |supported| Receives fixes for bugs and security issues, as well as |
  86. | | | patches that enable platform support. |
  87. +--------------+----------------------+--------------------------------------------------------------------------+
  88. | Godot 3.4 | November 2021 | |eol| No longer supported (last update: 3.4.5). |
  89. +--------------+----------------------+--------------------------------------------------------------------------+
  90. | Godot 3.3 | April 2021 | |eol| No longer supported (last update: 3.3.4). |
  91. +--------------+----------------------+--------------------------------------------------------------------------+
  92. | Godot 3.2 | January 2020 | |eol| No longer supported (last update: 3.2.3). |
  93. +--------------+----------------------+--------------------------------------------------------------------------+
  94. | Godot 3.1 | March 2019 | |eol| No longer supported (last update: 3.1.2). |
  95. +--------------+----------------------+--------------------------------------------------------------------------+
  96. | Godot 3.0 | January 2018 | |eol| No longer supported (last update: 3.0.6). |
  97. +--------------+----------------------+--------------------------------------------------------------------------+
  98. | Godot 2.1 | July 2016 | |eol| No longer supported (last update: 2.1.6). |
  99. +--------------+----------------------+--------------------------------------------------------------------------+
  100. | Godot 2.0 | February 2016 | |eol| No longer supported (last update: 2.0.4.1). |
  101. +--------------+----------------------+--------------------------------------------------------------------------+
  102. | Godot 1.1 | May 2015 | |eol| No longer supported. |
  103. +--------------+----------------------+--------------------------------------------------------------------------+
  104. | Godot 1.0 | December 2014 | |eol| No longer supported. |
  105. +--------------+----------------------+--------------------------------------------------------------------------+
  106. .. |supported| image:: img/supported.png
  107. .. |partial| image:: img/partial.png
  108. .. |eol| image:: img/eol.png
  109. .. |unstable| image:: img/unstable.png
  110. **Legend:**
  111. |supported| Full support –
  112. |partial| Partial support –
  113. |eol| No support (end of life) –
  114. |unstable| Development version
  115. Pre-release Godot versions aren't intended to be used in production and are
  116. provided for testing purposes only.
  117. .. seealso::
  118. See :ref:`doc_upgrading_to_godot_4` for instructions on migrating a project
  119. from Godot 3.x to 4.x.
  120. .. _doc_release_policy_which_version_should_i_use:
  121. Which version should I use for a new project?
  122. ---------------------------------------------
  123. We recommend using Godot 4.x for new projects, as the Godot 4.x series will be
  124. supported long after 3.x stops receiving updates in the future. One caveat is
  125. that a lot of third-party documentation hasn't been updated for Godot 4.x yet.
  126. If you have to follow a tutorial designed for Godot 3.x, we recommend keeping
  127. :ref:`doc_upgrading_to_godot_4` open in a separate tab to check which methods
  128. have been renamed (if you get a script error while trying to use a specific node
  129. or method that was renamed in Godot 4.x).
  130. If your project requires a feature that is missing in 4.x (such as GLES2/WebGL
  131. 1.0), you should use Godot 3.x for a new project instead.
  132. .. _doc_release_policy_should_i_upgrade_my_project:
  133. Should I upgrade my project to use new engine versions?
  134. -------------------------------------------------------
  135. .. note::
  136. Upgrading software while working on a project is inherently risky, so
  137. consider whether it's a good idea for your project before attempting an
  138. upgrade. Also, make backups of your project or use version control to
  139. prevent losing data in case the upgrade goes wrong.
  140. That said, we do our best to keep minor and especially patch releases
  141. compatible with existing projects.
  142. The general recommendation is to upgrade your project to follow new *patch*
  143. releases, such as upgrading from 4.0.2 to 4.0.3. This ensures you get bug fixes,
  144. security updates and platform support updates (which is especially important for
  145. mobile platforms). You also get continued support, as only the last patch
  146. release receives support on official community platforms.
  147. For *minor* releases, you should determine whether it's a good idea to upgrade
  148. on a case-by-case basis. We've made a lot of effort in making the upgrade
  149. process as seamless as possible, but some breaking changes may be present in
  150. minor releases, along with a greater risk of regressions. Some fixes included in
  151. minor releases may also change a class' expected behavior as required to fix
  152. some bugs. This is especially the case in classes marked as *experimental* in
  153. the documentation.
  154. *Major* releases bring a lot of new functionality, but they also remove
  155. previously existing functionality and may raise hardware requirements. They also
  156. require much more work to upgrade to compared to minor releases. As a result, we
  157. recommend sticking with the major release you've started your project with if
  158. you are happy with how your project currently works. For example, if your
  159. project was started with 3.5, we recommend upgrading to 3.5.2 and possibly 3.6
  160. in the future, but not to 4.0+, unless your project really needs the new
  161. features that come with 4.0+.
  162. .. _doc_release_policy_when_is_next_release_out:
  163. When is the next release out?
  164. -----------------------------
  165. .. UPDATE: Refers to specific current minor versions 3.6 and 3.7.
  166. While Godot contributors aren't working under any deadlines, we strive to
  167. publish minor releases relatively frequently.
  168. In particular, after the very length release cycle for 4.0, we are pivoting to
  169. a faster paced development workflow, 4.1 released 4 months after 4.0, and 4.2
  170. released 4 months after 4.1
  171. Frequent minor releases will enable us to ship new features faster (possibly
  172. as experimental), get user feedback quickly, and iterate to improve those
  173. features and their usability. Likewise, the general user experience will be
  174. improved more steadily with a faster path to the end users.
  175. Maintenance (patch) releases are released as needed with potentially very
  176. short development cycles, to provide users of the current stable branch with
  177. the latest bug fixes for their production needs.
  178. There is currently no planned release date for the next 3.x minor version, 3.7.
  179. The current stable release, 3.6, may be the last stable branch of Godot 3.x.
  180. Godot 3.x is supported on a best-effort basis, as long as contributors continue
  181. to maintain it.
  182. What are the criteria for compatibility across engine versions?
  183. ---------------------------------------------------------------
  184. .. note::
  185. This section is intended to be used by contributors to determine which
  186. changes are safe for a given release. The list is not exhaustive; it only
  187. outlines the most common situations encountered during Godot's development.
  188. The following changes are acceptable in patch releases:
  189. - Fixing a bug in a way that has no major negative impact on most projects, such
  190. as a visual or physics bug. Godot's physics engine is not deterministic, so
  191. physics bug fixes are not considered to break compatibility. If fixing a bug
  192. has a negative impact that could impact a lot of projects, it should be made
  193. optional (e.g. using a project setting or separate method).
  194. - Adding a new optional parameter to a method.
  195. - Small-scale editor usability tweaks.
  196. Note that we tend to be more conservative with the fixes we allow in each
  197. subsequent patch release. For instance, 4.0.1 may receive more impactful fixes
  198. than 4.0.4 would.
  199. The following changes are acceptable in minor releases, but not patch releases:
  200. - Significant new features.
  201. - Renaming a method parameter. In C#, method parameters can be passed by name
  202. (but not in GDScript). As a result, this can break some projects that use C#.
  203. - Deprecating a method, member variable, or class. This is done by adding a
  204. deprecated flag to its class reference, which will show up in the editor. When
  205. a method is marked as deprecated, it's slated to be removed in the next
  206. *major* release.
  207. - Changes that affect the default project theme's visuals.
  208. - Bug fixes which significantly change the behavior or the output, with the aim
  209. to meet user expectations better. In comparison, in patch releases, we may
  210. favor keeping a buggy behavior so we don't break existing projects which
  211. likely already rely on the bug or use a workaround.
  212. - Performance optimizations that result in visual changes.
  213. The following changes are considered **compatibility-breaking** and can only be
  214. performed in a new major release:
  215. - Renaming or removing a method, member variable, or class.
  216. - Modifying a node's inheritance tree by making it inherit from a different class.
  217. - Changing the default value of a project setting value in a way that affects existing
  218. projects. To only affect new projects, the project manager should write a
  219. modified ``project.godot`` instead.
  220. Since Godot 5.0 hasn't been branched off yet, we currently discourage making
  221. compatibility-breaking changes of this kind.
  222. .. note::
  223. When modifying a method's signature in any fashion (including adding an
  224. optional parameter), a GDExtension compatibility method must be created.
  225. This ensures that existing GDExtensions continue to work across patch and
  226. minor releases, so that users don't have to recompile them.
  227. See :ref:`doc_handling_compatibility_breakages` for more information.