I mentioned “breaking changes” above. You may ask: how do TYPO3 developers keep the core state of the art by introducing new techniques and libraries while avoiding breaking changes when someone updates from one version to the next?
The TYPO3 core offers many modern APIs which enable extension developers to access, manipulate, and extend the core system’s basic functionality. If these interfaces changed from one version to the next, extensions would break too, and the entire system could fall apart. This would be a disaster for an enterprise content management system!
Here’s where TYPO3’s deprecation policy comes into play. By strictly following this policy, we define exactly what can change and when. As a result, core and extension developers understand what can change, and integrators know what to expect when we release a new TYPO3 version.
There are only a few exceptions when core developers are allowed to ignore this policy:
- Security issues
- Dependency updates
- Managed migrations
- Faulty system behavior
Let’s have a closer look at each of these exceptions.
The first exception is security issues. We take security very seriously, and vulnerabilities need to be fixed, no matter what. No compromise. If a security fix could be breaking change, we clearly and unambiguously communicate this in the security bulletin and release notes.
Another exception is a dependency update. This applies when one of the libraries used by the TYPO3 core needs to be updated. To keep a system stable and secure, we have to update all TYPO3 core components, including libraries maintained by third-party developers and vendors. If developers stop supporting an outdated version of their library, they force us to update the library used by the TYPO3 core to a maintained version. We call this process a dependency update.
A managed migration occurs when the Upgrade Wizard handles a breaking change between two sprint releases. Typical examples are a new TCA setting or a new database field. Although these updates might cause breaking changes, TYPO3’s Upgrade Wizard takes care of a smooth and faultless migration.
One more special case should be mentioned in this context, although it occurs very rarely. If a feature is or becomes faulty and does not work as it’s meant to, it may be fixed or adjusted. Depending on each use case and our interpretation of the feature’s previous behavior, some users might experience a breaking change. In these cases, we carefully assess the fix/adjustment impact and weigh the pros and cons.