We’ve put together this handy guide to preparing for Drupal 9. As Drupal 8 prepares for its end-of-life this November 2021, with Drupal 7 following along in November 2022, migrating your organization’s existing Drupal website to Drupal 9 is definitely something to start digging into in more detail now.
Drupal is an open-source content management framework that was initially released 20 years ago. Since then, there have been nine major releases. What makes Drupal different and special from proprietary content management systems that also serve “enterprise” organizations is that it is supported by a community of ~1.4 million members.
Prior to Drupal 8, “major version upgrade” usually meant a long tedious process. Upgrading Drupal to the next major version usually meant you had to rebuild your site from the ground up, which could have been a big undertaking. The Drupal upgrade process used to involve:
- Using a migration module or have a developer write migration scripts to move your data from your old Drupal site into a new one.
- Checking to see if the contributed modules you were using had a new release for the newer version of Drupal. If there was no version of the contributed module, you either had to find a new solution or upgrade the module yourself.
- Updating/rewriting any custom modules to incorporate API changes.
After the release of Drupal 8, many organizations on older versions of Drupal opted to redesign their websites because of the amount of work involved. Drupal 8 was a pivot toward enterprise and made it more competitive with fully featured proprietary systems like Adobe Experience Manager (AEM) and Sitecore. Drupal 8 was a ground-up rewrite “start over” of the entire core application. Previous version upgrades had major changes to the APIs and overall architecture, but the fundamentals were still largely there. That changed in Drupal 8 leaving many small and grassroots organizations wondering if Drupal was still right for them, and many flocked to other systems, like WordPress.
Why Drupal 9 is different
Drupal 9 launched its first version 9.0 in June 2020 alongside the release of Drupal 8’s last update, version 8.9. As of today, version 9.2 has been released with the next round of updates set for December 2021. So what’s this latest version, Drupal 9, all about?
The Drupal community learned a lot from the upgrade experience between prior major versions and decided to change the way upgrades are handled, starting with Drupal 8. One feature that Drupal developers are most excited about in Drupal 8 is the update system—meaning how Drupal will handle major version upgrades going forward.
Drupal 9 is built on Drupal 8’s architecture with built-in backward compatibility. It uses Drupal 8’s codebase rather than start with a new codebase altogether. New minor versions will continue to be released every six months (in June and December each year) with new features, following the cadence that began with Drupal 8’s adoption of semantic versioning.
Before Drupal 8, each major version was its own independent codebase. Eventually, major versions reached “end of life” status, meaning they were no longer supported by the community and their codebases stopped being maintained. That changed with Drupal 8. The codebase will eventually become Drupal 9.
At launch, Drupal 9 should feel very similar to 8, so don’t expect big changes in functionality out of the gate. Drupal 9.0 was identical to the final June 2020 Drupal 8.9 release, but with deprecated code removed and third-party dependencies updated. Those updates include:
- Symfony is updated from version 3 to 4.4 (version 3 reaches End of Life status in November 2021), Drupal’s biggest dependency
- Twig is updated from version 1 to 2 (Drupal version 8.7 was released with optional support for Twig 2 in May 2019)
- Drupal 9 continues to use CKEditor 4, but a later minor version update will likely include CKEditor 5. CKEditor 4 would then be marked for deprecation and be removed in Drupal 10, which is set to launch in June 2022.
- Drupal 9 continues to depend on jQuery though jQuery UI has reached its end of life. Drupal is in the process of moving toward vanilla JS solutions rather than continuing to depend on jQuery.
“The big deal about Drupal 9 is … that it should not be a big deal.” ~ Dries Buyaert, Drupal Project Lead
Drupal 9 added some additional features with the 9.1 and 9.2 releases, including:
- An experimental frontend theme called Olivero.
- Support for Composer 2 and PHP 8.
- Improvements in the speed of the installation process.
- Compatibility with Symfony 5, in preparation for Drupal 10.
Drupal 8.9 was released the same day as Drupal 9.0 (June 3, 2020) and became the “long-term support” (LTS) release of Drupal 8. From a feature perspective, Drupal 8.9 and Drupal 9.0 are identical. Drupal 8.9 includes a handful of API and UX enhancements, but the focus is prepping the codebase for Drupal 9.
Putting it more visually, this is what the difference between Drupal 8.9 and 9.0 is like.
Drupal 8.9 includes older versions of some third-party dependencies and code that has been marked for deprecation. Drupal 9.0 upgrades those dependencies, and removes the deprecated code. If your site relies on code that is deprecated, you will have to fix that before moving to Drupal 9.
When to upgrade to Drupal 9
If you are on Drupal 7, aim to migrate directly to Drupal 9 once you’re ready.
If you are on Drupal 8, you should start preparing to make the migration over to Drupal 9. Your site will have to be on Drupal 8.8 or Drupal 8.9 to upgrade to easily move over to Drupal 9. If you are on an earlier version of Drupal 8, then you will need to upgrade to the latest version of Drupal 8, which is 8.9.16.
Drupal 7 will receive community support until November 2022. After that, it will be supported through selected vendors until at least 2024. Previously, community support only extended to the previous major version. Usually, Drupal 7 would have stopped receiving community support in June when Drupal 9 is released; however, because it is still so widely used and the Covid-19 pandemic affected organization’s ability to move ahead with migration planning, it will be supported for an additional 12 months and will reach its end-of-life in November 2022.
We will continue to expect new minor releases of Drupal 9 every other quarter (June and December of each year), and those will likely include new features.
How to prepare if you are on Drupal 7
If you are on Drupal 7 or earlier, start your upgrade to Drupal 9 with this upgrade process.
- Review upgrade paths: Find out which contributed modules don’t have Drupal 9 releases and find alternatives. Many contributed modules did not provide an upgrade path, so you might have to migrate your configuration changes manually
- Rewrite any custom modules: The code you wrote for custom work in Drupal 7 will no longer work in Drupal 9.
- Take stock of your content: Delete/archive anything you don’t need.
- Migrate your configuration: This includes content types, taxonomies, and module configuration, etc.
- Migrate content: Use the core Migrate suite (in Drupal 9) to automatically move content (nodes, users, terms, etc).
- Rebuild “complex” layouts: If you were using Panels, Page Manager, Panelizer, or Context, etc, to build complex pages (like your homepage), you will need to rebuild those pages using Layout Builder, Paragraphs or directly in the Twig templates.
- Re-write your theme: Drupal 7 used PHPTemplate, and Drupal 9 is using Twig for a template engine.
How to prepare if you are on Drupal 8
If you are on Drupal 8, make sure you are running the latest minor version (8.9.16) and use this upgrade process:
- Update your contrib modules
- Remove deprecated code from custom modules and themes
- Update core
Automated tools to check for compatibility
If you need help
Reach out to our team! We have deep expertise in using Drupal and have worked with many mission-driven organizations to migrate to Drupal 9 in order to further drive their missions, engage with their audiences, and ensure they are getting the most out of their digital ecosystems.
Forum One’s technology team works with mission-driven organizations and government agencies to develop and optimize their Drupal website journeys. Get in touch today – we’d love to support your organization.