The next major version of Drupal, just not as scary as before

Drupal has been a long-term ally for those in the CMS world both on the development and consumer sides. Drupal 7 first emerged in January 2011, Drupal 8 in November 2015 and Drupal 9 in June 2020. Typically when a new major version comes out, there's a pattern of deprecation that happens in various forms for the previous versions already available. In the case of Drupal 9, this means that Drupal 7 and 8 will reach end-of-life at the same time, in November 2021. This has given cause for concern and questions for those with websites built on those older versions of Drupal.

Suffice it to say, the reality is that we're in a world now where we don't have to worry as much about these new major versions of Drupal being released. Going forward as of Drupal 9, it will do away with it's previous "full rebuild" nature for each major version. The standout feature of Drupal 9 is its ability to provide as easy an upgrade as possible from Drupal 8. For those looking ahead to version 9, the main benefit over previous versions is the platform will be supported with security fixes after November 2021. Unfortunately though for those still on Drupal 7, it will require a full site rebuild. The good news though is that it'll be the last time that type of task is required to move on to the newer major version.  

Key Facts

  • Release Date - June 3rd 2020
  • Drupal 7 and 8 End-of-Life - November 2021
  • will require at least PHP 7.3
  • MySQL or Percona, version 5.7.8 is required.
  • MariaDB, version 10.3.7 is required.
  • Drush 10
  • If using apache, at least version 2.4.7 is required
  • Drupal 9 will still rely on jQuery itself, but most jQuery UI components will be removed from core.

Why Upgrade?

Those using Drupal 7 and/or 8 will want to upgrade to Drupal 9 for numerous reasons, but among the greatest is continued support. Community support for both 7 and 8 will end in November
2021 (support is ending for Drupal 8 due to its dependence on Symfony 3, which will reach end of life in November 2021). 

There will be no new features, but it will offer a leaner, more secure system with APIs that are easier to work with and these changes will be most noticeable to developers. Future releases of Drupal 9 will continue to feature additions and improvements along the six-month release timeline that has been established with Drupal 8. The first scheduled feature update (minor release) to Drupal 9, Drupal 9.1, is scheduled for December 2020.

The bottom line for Drupal 9, according to project lead Dries Buytaert is this:

The big deal about Drupal 9 is… that it shouldn’t be a big deal.

Another consideration folks have is whether or not their most used contributed modules have declared that they are Drupal 9 compatible. With past upgrades, waiting for contributed modules to be ready for the new Drupal version caused months or even years of delays. But the Drupal 9 upgrade path for contributed modules is relatively easy, so they should be able to adapt quickly. Many modules are already compatible, and others will need minimal changes.

Before Upgrading

For Drupal 8 Users

The first step is to make sure your environment is compatible with the requirements for Drupal 9. The key things to note here are that Drupal 9 requires PHP 7.3 or higher and that version requirements will be raised for MySQL (at least to 5.7), MariaDB (at least to 10.2), PostgreSQL (to 9.6) and SQLite (to 3.26).

Also, for those using Drush, only Drush 10 is compatible with Drupal 9. 

Next, update Drupal core to the latest version. Drupal 8’s last minor release (8.9.0) will become Drupal 9. You should also remove any dependencies you are not using at this time. It's always a good time to re-evaluate any cruft that's on your site when doing an overhaul or major upgrade. You should also make sure all your contributed modules are up to date. Beginning with Drupal 8.7.7, it is possible for modules to be compatible with both Drupal 8 and 9 at the same time. In other words, you can update modules to their latest versions on Drupal 8 and still have a fully working site with modules that are already Drupal 9 compatible as well. For custom modules, you'll want to make sure they aren't using any deprecated code. 

To ensure you are using the most current versions of contributed modules, you should install and enable the Upgrade Status Module or use the Drupal Check tool. Upgrade Status has additional code coverage which includes .info.yml files and Twig deprecated syntax detection. Upgrade Status also reports on any deprecated code that must be replaced before the next major version.

For Drupal 7 Users

Migrating from Drupal 7 to Drupal 9 will require a rebuild. At a minimum you'll likely want to migrate content as with any other site rebuild. The rest though should be re-imagined like which modules to use or how the theme is built. To follow Drupal's upgrade path using migration tools you'd need to upgrade first to Drupal 8, then on to 9. This in and of itself has challenges, and you may not be at the point to do that once 9 comes out. So it's our recommendation to treat this endeavour as a fresh site. That way you can start making decisions pertinent to Drupal 9 (like which modules are available) as you build out the new site.

Conclusion

Given the above, it's a good time to keep your Drupal 8 sites up to date to be ready for Drupal 9. Really though our recommendation is to always keep on top of updates to make ongoing maintenance easier and keep security tight. If this is a practice you've been keeping on top of, then you shouldn't have a problem transitioning to Drupal 9. For those on Drupal 7, a site rebuild will be in your future as so much has fundamentally changed between Drupal 7 and 8, and now 9.

At a minimum, the theme layer has transitioned to using twig, as well as all the internal Drupal API to be Object Oriented. Also, all of the modules you're used to using have probably been rewritten for 8 as well. There's also the possibility that of the modules you are using, suitable version 8 replacements don't exist. It's therefore necessary to re-imagine things rather than try to bring the boat anchor forward in to Drupal 8 (and that's a good thing). 

Related Reading

Drupal 9 Documentation Homepage
Additional Drupal 9 resources on Drupal.org
Drupal 9 environment requirements