After eight months, about 1200 commits later and many many hard coding hours the first sprint release TYPO3 version 9 was released on December 12th 2017. Six weeks later the next sprint release 9.1 was published on January, 30th. Both contain 56 deprecations, 71 new features, 76 breaking and 21 important changes. I will try to shed some light on these changes in this post.

The total number of changes for version 9.1, which have a massive impact on TYPO3, are over 200 in the different categories. These changes result in 6089 changed files, 214.869 inserted and 221.214 deleted lines of code. Nearly 170 community members contributed code. Unfortunately I was not able to get the statistics of code reviews, votes and comments on the commits, before they were merged.
Enough of all the stats, let’s go into the details.

Architectural Changes

New system requirements (9.0)

Right at the start of the beginning of the TYPO3 9 development cycle the minimum requirements were discussed on https://decisions.typo3.org/t/minimum-requirements-for-typo3-v9/149. After that discussion a voting took place at https://decisions.typo3.org/t/results-minimum-requirements-for-typo3-v9/173/2. There you can also see the results, which led to the raise of the minimum requirement of PHP 7.2 for the next TYPO3 LTS release.
This discussion was raised again, but why should we step back? The release cycle of PHP got speed in the last two years and we should keep on with that speed. The main argument is about web hosters not supporting it, will IMHO be gone in a couple of months. These web hosting companies will also adapt their release processes to the new PHP release cycles.

Translation handling of pages (9.0)

Since ages (TM) the translation handling of pages was totally different from the translation handling of all other records. The translation of pages was saved into the table pages_language_overlay. From this release on, the translations of pages will also be saved into the same database table as with any other extension. An upgrade wizard is available and will transfer all records from the old to the new table.

For Editors

New content element wizard (9.0)

The “New content element” wizard was redesigned and is a modal javascript window now. Within the page module it is a one step wizard. Using it via the list module a second step is added, asking for the placement of the new content element.
typo3worx_news91_ce-wizard

Redesigned view module (9.0)

The view module was redesigned to match the current requirements. Furthermore, it is now possible to define custom devices in Page TS for types like “desktop”, “mobile” or “tablet”.
typo3worx_news91_view-module

Recycler improvement (9.0)

The system extension “recycler” provides additional information and displays the user, who deleted the record. This is a hint, who you can ask beforehand, if you want to undelete the record.
typo3worx_news91_recycler-deletion

For Integrators

Include css files inline (9.0)

Due to the critical css concept (aka above the fold) it is necessary to provide these css definitions inline. The TypoScript directive page.includeCSS.inline renders the contents of the css file within in style tag on the page.

New syntax for importing TypoScript files (9.0)

When you wanted to include other typoscript files in your TS, the syntax was <INCLUDE_TYPOSCRIPT>with FILE and DIR as options. Furthermore you could specify the filetype, which will be included from a directory.
From TYPO3 version 9 on, it is possible to include the files with a SASS inspired syntax:

If you want to know, how and in which order the files will load, the changelog has the answer: https://docs.typo3.org/typo3cms/extensions/core/Changelog/9.0/Feature-82812-NewSyntaxForImportingTypoScriptFiles.html

Form Framework

The “Form Extension” got also some updates and new features:

For Administrators

New System Maintenance Area (9.0)

The install tool has undergone a major overhaul. Its components are now available in the System Maintenance Area. The subsections of the install tool menu were moved to a card layout and the functionality is now loaded via XHR requests..
TODO: insert screenshot
Furthermore backend admin users can be granted a new role: the system maintainer. These users can reach the system maintenance area right from the TYPO3 backend. For these users the install tool password is not required any more.
typo3worx_news91_systemmaintaine

Scheduler – Sorting of Tasks (9.0)

From this release on it is possible to sort the tasks within a scheduler task group by clicking on the title of each column. Until now there is no indicator whether the column is sortable nor an icon showing the sorting direction.
While exploring this feature I found out that also the task groups are sortable. This is possible using the list view and the up and down icons in the extended view.

Redirects Module (9.1)

Providing redirects from within TYPO3 was quite hard. The functionality was removed from the extension “realurl”. So it was only possible to do redirects via custom extensions or the htaccess file (or alike for nginx).
From version 9.1 on there is a core module, which allows creating redirects from within the backend. This is one step of the many steps to the promised in the direction for speaking urls in TYPO3.

Debugging backend fields (9.1)

Until now, it was quite hard to find out the names of fields in the BE, if you wanted to set an option or to deactivate a field. Most of us right clicked and choosed “Inspect element” and scanned through the HTML code to find it. From now on these values are shown directly in the backend, if ['BE']['debug'] is enabled.

Feature toggles (9.1)

With feature toggles it is possible to activate features, which the extension author does not want to activate by default, f.e. because it is breaking. More information is available at docs.typo3.org

For Developers

Extension Scanner (9.0)

The extension scanner is to tool which analysis the currently installed extensions to check the upcoming or existing incompatibilities with the TYPO3 core. The static code analyzer lists all lines of possibly incompatible code and provides a information how to fix it. For detailed information have a look at https://docs.typo3.org/typo3cms/CoreApiReference/ExtensionScanner/Index.html

Formatting of extension configuration

In older versions of TYPO3 the extension configuration was saved as a serialized array in LocalConfiguration.php. This made it very hard to overload content f.e. in the AdditionalConfiguration.php. There for the configuration was moved to $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS'] using a plain php array.

Deprecations and breaking changes

I know, it’s a hard thing and not a really pleasant task … but this functionality will stop working in the future. Check that your extensions will work as soon as possible with TYPO3 V9. Here are the links to the latest versions:
* Breaking V9.0
* Deprecation V9.0
* Breaking V9.1
* Deprecation V9.1

Conclusion

These topics were only a small bunch of all changes which were achieved since the last LTS release. If you want to get a complete overview, about everything, what has happened, head over to docs.typo3.org. All feature, changes and deprecations are listed there.

Credits

I want to thank my supporters via patreon.com, who make this blog post possible. If you appreciate my blog and want to support me, you can say “Thank You!”. Find out the possiblities here:

I found the blog post image on unsplash. It was published by @rawpixel.com under the Unsplash License.