X Marks the Spot - TYPO3 v10.0 is here

Categories: Development, TYPO3 CMS Created by Benni Mack, Michael Schams
TYPO3 version 10.0 is the first sprint release on the way to the LTS-version (long-term support) in 2020.

Since the main focus of version 10.0 is on clean-up tasks, it is not surprising that a large number of breaking changes have been introduced in this release. This approach allows us to introduce new libraries, modern concepts and streamline APIs at an early stage of the development to make sure that TYPO3 remains one of the best enterprise content management systems on the market.

Plans for the TYPO3 v10 series

We have set ambitious and important goals for TYPO3 v10 LTS. The following improvements are very high on our list and you will see them evolving constantly across all upcoming sprint releases:

  • Allow TYPO3 integrators to easily configure a sophisticated and powerful system.
  • Let TYPO3 editors, administrators, as well as extension developers benefit from best practices.
  • Use robust and established standards and PHP packages to achieve stable APIs throughout the TYPO3 core.
  • Make the day-to-day work with TYPO3 even more enjoyable.

Key changes in TYPO3 v10.0

As version 10.0 marks the first version of the v10 series, its main purpose is to get rid off old functionality that is considered outdated or was kept for legacy reasons. New concepts and methods were introduced in TYPO3 v9 and have been proven to be successful. Now it’s time to remove the legacy layer and to stabilize the new APIs. In addition, we introduced new concepts in version 10.0 which will be improved even further during the subsequent sprint releases of the TYPO3 v10 series.

Let’s have a closer look at what this all means in a little more detail.

Site handling

Native site handling was introduced in TYPO3 v9 LTS — the foundation for deterministic URL handling as well as multi-site and multi-language functionality. TYPO3 v9 still allows integrators to use sys_domain records (the old method of a multi-domain setup). This compatibility has been removed and setting up a site is now mandatory in v10.0. TYPO3 integrators benefit from the numerous advantages of a consistent and standardised site handling and faster ramp-up times for new sites.

PHP class/property analysis

Extbase (the powerful MVC framework used in TYPO3) enables core and extension developers to write awesome functions for TYPO3 in a clean and consistent way (“convention over configuration”). The analysis of custom PHP classes and their properties is a key function of Extbase. This crucial task is now handled by Symfony's PropertyInfo Component. By using a PHP package that follows industry standards, is well-known, and maintained by a huge community, we ensure that this component of Extbase remains state-of-the-art for years to come. At the same time we reduce our maintenance efforts and open the doors for new functionality for extension authors.

New dependency injection

The aforementioned goal to use robust and established standards and PHP packages throughout the TYPO3 core is also evident in another area of paramount importance: “dependency injection” (DI). This technique comes into play when one object supplies the dependencies of another object. PHP objects that do not contain state are called services and are logically encapsulated in service containers.

By applying Symfony’s Service Containers architecture we take dependency management and dependency injection for PHP classes to a new level. This approach aims to replace the Extbase dependency injection container and object manager which means we can do without both GeneralUtility::makeInstance() to retrieve singletons and static methods like getInstance() in the future.

Developers are encouraged to read the Symfony documentation and to keep an eye on the PSR-11 Initiative and its sub-tasks.

Event dispatcher

We told you: TYPO3 version 10.0 is the perfect release to introduce new, modern technologies to excite every TYPO3 developer. In fact, we have actively contributed to the PSR-14 standard over the last year, and added this to the TYPO3 universe.

Hooks and the Signal/Slot concept is one of TYPO3’s superpowers. The latter allows to extend the core functionality by emitting a signal and to notify other components about a specific event. TYPO3 extension developers can leverage this technology and build upon the core feature.

We've now added an Event Dispatcher to the TYPO3 core (clearly specified in PSR-14), that has the same API as the Zend Framework or Symfony's EventDispatcher Component. “Events” will be added over the course of the next TYPO3 sprint releases and this technology aims to replace hooks and Signal/Slots in the mid term.

As an extension developer you don’t need to worry: hooks and registered slots remain as they stand now and will work the same way as before for the time being.

New mailer API

TYPO3 has used the feature-rich SwiftMailer library to generate and send out emails. However, active development has stagnated and we decided to use another great Symfony solution with a modern API:  the “Mime” package for composing emails and “Mailer” package for processing and sending them.

Both components are state-of-the-art and enable us to generate HTML-based emails in various places of the core, where currently simple text-only emails are implemented.

System extensions extracted

The previously included system extensions “RSA Authentication” (Extension key rsaauth), “Task Center” (Extension key taskcenter), “Actions” (Extension key sys_action) and “Frontend Editing” (Extension key fe_edit) have been moved to TYPO3’s public extension repository.

These extensions will be kept up-to-date, but aren’t covered by TYPO3’s support and maintenance policy anymore that applies to the TYPO3 core.

TYPO3's release strategy

The TYPO3 Core Team releases LTS-versions (long-term support) every 1.5 years. These versions are actively maintained and supported for 18 months and receive security fixes and critical updates for an additional 18 months. This results in a total of 3 years of free support by the TYPO3 community.

As LTS-versions are released every 1.5 years but are supported for 3 years, there are always two stable TYPO3 LTS-versions available that are actively maintained and kept up-to-date and secure without breaking changes.

A release series consists of a number of sprint releases, starting with “0”. TYPO3 version 9.0 and version 10.0 are typical examples. New sprint releases are published every 8 to 12 weeks until the LTS-version is released, which marks the end of a release series. Sprint releases are bleeding edge but at the same time well tested and stable enough to be considered for new projects. An upgrade between two sprint releases (e.g. version 10.1 to version 10.2) is considered trivial and should not take very long.

TYPO3 v9 LTS (also known as version 9.5.x) was released in October 2018. The next LTS version will be TYPO3 v10 LTS which is scheduled to be released in April 2020.

Download and installation

There are various ways to install TYPO3. The traditional way is to download the source package at get.typo3.org. You can also use the modern approach and set up a project using composer (in fact, this is the recommended way today). Detailed installation instructions are available at get.typo3.org/version/10 and in the official Installation and Upgrade Guide.

Update from TYPO3 v9 LTS

One of the goals we defined at the early stages of the TYPO3 v9 development phase was to make updates from one major version to the next as easy as possible — and we kept our promise!

If you're using TYPO3 v9 LTS already, and all extensions are marked as compatible, an update to TYPO3 v10 should be simple and straightforward. We strongly recommend to use TYPO3's Extension Scanner (ADMIN TOOLS → Upgrade → Scan Extension Files) to identify possible issues before executing the upgrade. Typical issues are custom developed extensions that use old APIs which have been deprecated or removed in accordance to TYPO3’s deprecation policy. The Extension Scanner provides useful and comprehensive instructions on how to update the code.

Also make sure that your hosting environment meets the system requirements listed below.

System requirements

TYPO3 v10 requires PHP version 7.2 or higher (same PHP requirement as TYPO3 v9 LTS). A wide range of database servers and database engines are supported. This includes MySQL, MariaDB, Microsoft SQL Server, PostgreSQL and SQLite. Version 5.7 is the minimum required version if you use MySQL, while version 8 is the recommended version for TYPO3 v10. The recommended version of MariaDB is version 10.3. All modern web servers are supported by TYPO3 v10, this includes Apache, Nginx, and IIS for example.

The backend of TYPO3 v10 can be accessed with all modern browsers such as Mozilla Firefox, Microsoft Edge and Google Chrome. While it is still possible to use Microsoft Internet Explorer to work in TYPO3’s administration interface, it is officially not supported anymore.

What’s next

You will agree that the changes and improvements in TYPO3 version 10.0 are amazing especially for TYPO3 developers — but they are just the beginning of an exciting journey! The new APIs introduced in version 10.0 pave the way to more features to come.

To learn more about the new features, changes and improvements of TYPO3 version 10.0, have a look at the TYPO3 What’s New Slides or the detailed technical change log.