Upgrading to Drupal 9. What to Consider and Helpful Developer Tips to Get There.
November 9, 2020
Whether it’s for a website redesign, replatform or existing site Drupal site upgrade, clients ask us more than anything else “Is Drupal 9 ready.” The short answer is – “Yes.”
However there is a lot to consider in terms of whether or not now is the right time to upgrade based on your needs as an organization and available resources. This article will walk through the key points of what to consider with Drupal support for previous versions, Drupal 9 features and what we’re doing to make sure a Drupal 9 site can meet the needs of your organization’s requirements starting today. It will also provide some helpful developer tips to start getting your code ready.
Drupal 7, Drupal 8 and the support lifecycle
If you’re currently on Drupal 7, now is the time to upgrade to version 8 or 9. Starting with Drupal 8, the custom template engine and framework used in Drupal 7 has been replaced with Twig and Symfony, which are widely used and accepted open source frameworks This has paved the way for modern Drupal development and site management. It’s also night-and-day in terms of the admin authoring experience. The community has taken many great contributed modules, like Panels, and integrated a flavor of them into core allowing for a much more consistent experience. Using the new Layout Manger to drag and drop modules feels like a whole new CMS. Not to mention, more enterprise features for workflow and multi-site management has made it easier for larger sites to scale with more CMS users.
Drupal is supporting version 7 until November of 2022 so there’s still time if your site has to stick around on it longer, but if you’re able to upgrade now, it’s a no-brainer in terms of feature gains and moving to a more modern and scalable content management framework.
The support life-cycle however is a bit more complicated. First of all, Drupal 8 and above is supported until November of 2021 so you’ll have to start considering the upgrade anyways just like you would from Drupal 7. However, in terms of features, 8 and 9.0 are exactly the same right now. Drupal 9.0 is a major version release but its purpose is to mainly remove remaining deprecated code.
Another thing to consider is that unlike Drupal 7, Drupal 8 and onward are moving to a modern release cycle of a new minor version every 6 months. Security coverage only extends 2 minor versions back from the latest release, resulting in 1 year of coverage when a new minor version is released. See our below develop tips for more on the incremental versions if you're currently on Drupal 8 or in the process of upgrading.
If you’re in the process of upgrading to Drupal 8 or redesigning, don't worry, because upgrading to 9 will be relatively easy. Moving from 7 to 8 or right to 9 might as well be a new CMS setup in terms of the tech effort and change in the technology, however if you’re on 8 and staying up-to-date with core and community releases, the effort to move to 9 in the next year won’t be significant in comparison.
So essentially you’re not missing out on anything now between Drupal 8.9 and Drupal 9.0 right now other than needing to consider the closing support window. Not to mention, since Drupal 9 was released in June of 2020, it's smart to let the modules and bugs shake themselves out before diving right in on a new site install.
However, the support window is in fact closing and additional incremental Drupal 9 releases are starting to introduce some things we are excited about.
What excites us about Drupal 9.1
Drupal 9.1 is starting to introduce actual new “features” for users. The one we’re most excited about is a stable release of the Workspace module. Essentially this will create a streamlined way to deploy content to a preview and production environment. This will allow reviewing of content changes to a true “stage” pre-prod environment before pushing live vs. some of the other methods we use now such as depending on workflow to achieve pre-prod reviews. And without needing to back-sync content to a true stage environment for example. It’s also in our opinion, the last true enterprise level feature we’ve been waiting for in Drupal. While it's been around a while, with 9.1 it's expected to be far superior in terms of turnkey install and usage.
A beta for 9.1 just dropped and since there is now a good “Drupal admin user reason” to upgrade, we’ve started that process for new site builds and we’re going to be upgrading our 8.9 sites starting in January when 9.1 officially releases gets out of beta.
Preparing our own sites for Drupal 9
We start our implementation efforts by installing our open source Drupal distribution, ZenSource Lotus, that comes with our standard modules and configurations setup by default. That includes using Drupal’s own Composer foundation project, aimed to reduce friction with updates, and an architecture using flexible page layouts and content modules. Being 100% Drupal and open source, our distribution can be developed on by anybody and hosted anywhere.
We ensure maximum scalability and longevity by vetting Drupal modules, scanning custom functionality for code deprecations, and making sure all features are integrated and compatible with Drupal Core, so that upgrades are easy and painless after our install and feature implementation even beyond Drupal 9.1. Also by building foundational Drupal modules as well as vetting and improving upon modules already in the community, we’re able to get site builds out of the gate quicker. This foundational knowledge and expertise frees up developers to spend more time on creating customized, smarter experiences.
Essentially, since we manage and proactively evolve our own foundational and preconfigured Drupal code base, we’ve also developed an upgrade path for each module we rely on project to project. Since the release of Drupal 9, we’ve been making sure each module in our code base is Drupal 9 ready and if not, we’ve updated it or replaced it with something that is ready.
Things for developers to keep in mind when upgrading
If you're a developer currently supporting an existing site, there's a few things you can do now to be as ready as possible for Drupal 9.
- Be sure to check on your current hosting environment to see what their upgrade path is to Drupal 9. Some environments that manage your code base such as Pantheon, require specific steps to be taken before a site can be updated. At a minimum, you'll want your hosting environment to support PHP 7.3 as prior versions are no longer supported in Drupal 9.
- If you're currently on Drupal 8.7 or before, update to 8.9 now. Starting with Drupal 9, update hooks are only setup going back a few minor versions, so there's no upgrade path from 8.7 to 9.0. You need to update to 8.8 or 8.9 first. It's also good to do even without Drupal 9 in consideration since 8.7 and older are no longer receiving security updates. If you're building out new custom modules, this also enables you to use Drupal 9 APIs while still on Drupal 8, reducing your overall effort when it comes time to update.
- Starting with Drupal 8.8, Drupal now officially supports composer as a management system for your site. It streamlines module installation, patches, and deployment. While not strictly required for Drupal 9, it's highly recommended since every version is integrating more and more support for Composer.
- Scan any custom modules you've written with tools like Drupal-Check or install a module such as Upgrade Status onto your site to ensure all of the modules you're using will work in Drupal 9.
- If you're writing new modules, save yourself some headaches and check the functions you're using in the Drupal API to ensure they haven't been deprecated. If you find yourself using global Drupal functions, like 'drupal_set_message', odds are pretty good they've been deprecated in favor of a service call.
Feel free to jon.stewart [at] theprimacy.com (contact me) if you have questions about upgrading your experience to Drupal 9. I’d be happy to talk through your requirements and ensure there is an upgrade path to meet the needs of your organization.