.. include:: /Includes.rst.txt
.. _developer-versioning-policy:
==========================================
Versioning, deprecation and support policy
==========================================
This extension follows a predictable release and deprecation process so that
depending extensions know what to expect across releases.
Semantic versioning
====================
Releases follow `semantic versioning `__ (``MAJOR.MINOR.PATCH``)
applied to the :ref:`public API `:
* **PATCH** releases contain backward-compatible bug fixes only.
* **MINOR** releases add backward-compatible functionality and may add new
deprecations, but never remove or change existing public API.
* **MAJOR** releases may contain breaking changes to the public API, including
the removal of previously deprecated functionality.
Only the public API is covered by this promise. Internal implementation details
(see :ref:`developer-public-api`) may change in any release.
Deprecations and breaking changes
==================================
Functionality that is going to be removed is deprecated first whenever a
backward-compatible path can be provided:
* Deprecations are announced in a dedicated changelog entry under
:file:`Documentation/Changelog//Deprecation-*.rst`, describing what
is deprecated and how to migrate.
* Where a runtime path exists, deprecated code triggers an
``E_USER_DEPRECATED`` notice.
* Deprecated functionality is removed no earlier than the next **MAJOR**
release. Breaking changes are documented in a ``Breaking-*.rst`` changelog
entry and the commit is prefixed with ``[!!!]``.
Not every change can go through a deprecation phase. TYPO3 core-version specific
state, such as the :php:`TypoScriptFrontendController` accessors, lives on the
TYPO3 core-version specific ``Core12``/``Core13`` ``ExtendedStateInterface`` and
not on the version-agnostic :php:`StateInterface`. As the
:php:`TypoScriptFrontendController` is deprecated in TYPO3 v13 and removed in
TYPO3 v14, a future TYPO3 v14 extended interface will simply omit those
accessors; the version-agnostic public contract stays untouched.
TYPO3 core version support
==========================
Each release states the supported TYPO3 core versions in its
:file:`composer.json` and :file:`ext_emconf.php`. Support for a TYPO3 core
version is dropped only in a **MAJOR** release of this extension, accompanied by
a breaking changelog entry. New TYPO3 core versions are added in **MINOR**
releases through dedicated, version-specific ``Core/`` implementations.