In a year or so, the stable release of Drupal 9 will finally be made available to everyone. The previous release – Drupal 8 – was published in 2015 and it caused a lot of controversy among its users, mainly due to the complicated update path resulting from the rather significant differences compared to Drupal 7. All of this led to a schism of sorts, with Drupal 7 supporters going with a separate project named Backdrop.
Given all of this, it is no wonder that web developers keep glancing at the upcoming Drupal 9 with a lot of anxiety, as well as numerous questions about backward compatibility and ending support for older versions. And this is what I will be trying to answer in this article.
When is Drupal 9 coming out?
If everything goes according to plan, Drupal 9 will be released on the 3rd of June 2020. This date was not selected randomly. Even now, every June and October, a major version is released, containing new features. The previous releases included new modules, such as BigPipe, Migration, Content Moderation, Media and Layout Builder. Thanks to these, Drupal 8 has evolved into its current form, gaining many interesting capabilities.
What about support for previous versions?
Maintaining support for legacy versions is important when releasing a new version of the software. In the case of Drupal, the situation is quite unusual. The support for Drupal 7 and 8 will end at the same time – in November 2021. Developers will get a little over a year to plan and carry out their migrations. This is not a particularly long time; however, you can also count on the LTS service, which the old Drupal 6 still has to this day. In most cases, it covers paid maintenance and updates of the website, along with its external modules.
What is going to change?
The answer might be surprising. When you compare the planned version 8.9 with Drupal 9.0, nothing is going to change from the functional standpoint. The difference between Drupal 8 and 9 will be based on cutting out the largest existing dependency, Symfony 3, in favour of the more secure and modern Symfony 4/5. The code labelled as deprecated will no longer work.
Evolution or revolution?
Drupal 8 brought an actual revolution. Drupal 9, on the other hand, will bring evolution and do it as smoothly as possible. Ideally, it would be sufficient to switch the version to "^9.0" in composer.json and make a full update. Whether your website will work with Drupal 9 without any issues depends mainly on the quality of code written by your team, as well as by additional module developers.
What about the external modules?
This is one of the biggest uncertainties. Currently work is ongoing on checking the code for compatibility with Drupal 9, and you can follow the current progress on this site. Judging by the involvement of the community, we can count on the most popular modules to work with the new Drupal release out of the box. What is important, there is currently a debate about the core parameter in the *.info.yml file of each module. Evolution instead of revolution will make it unnecessary or even harmful – in its current form, it will block Drupal 8 modules from being used with Drupal 9. The final decisions haven’t been made yet, but you can be sure that there are going to be some significant changes in the versioning of addons from drupal.org.
Is it worth waiting to migrate from Drupal 6 and 7?
Owners of websites built on older Drupal versions are probably wondering if it's worth it to migrate to Drupal 8 right now. Turns out that the answer is – yes! A stable and working update path has been developed over the last few years. A website migrated to Drupal 8 will be also easily migrated to the upcoming release – provided, of course, that the code is written in line with the new guidelines.
How to prepare for migration?
First of all, you should review the application code and remove all elements marked as deprecated. Deprecated elements can be found automatically with the drupal-check tool. Below, you can see its outcome during the refactoring of our project – Droopler:
Drupal-check can be installed in several ways, we recommend adding it to your project using Composer:
composer require mglaman/drupal-check --dev
Further documentation on installation and using the tool can be found on the project website.
In summary – what’s in store for us?
Drupal 9 is going to bring only good things: better performance and security, as well as cutting out obsolete features. It’s worthwhile to check your projects for compatibility today so that on the 3rd of June 2020, you can enjoy your modern and painlessly updated websites.