Drupal 9 will be released in 2020, which—if you’re building a new site—is just around the corner. While Drupal has historically supported only the current and one previous version of Drupal, policy has shifted considerably as Drupal 9 approaches. Now, both Drupal 7 and 8 reach end of life at the same time: November 2021.
The main driver of this difference is Drupal’s shifting stance on backward compatibility. Until Drupal 9, new versions of Drupal were radically different than previous versions. The internal APIs were incompatible, modules for one version didn’t work for another without serious changes, and the theming architecture was different. This meant that going from say, Drupal 6 to 7, or Drupal 7 to 8, was nearly as much work as going from Drupal to WordPress. This approach allowed for serious innovation but had the drawback of creating upgrade fatigue for Drupal users, who eyed the ease with which WordPress users could deploy the latest and greatest updates to their CMS.
The plans for Drupal 9 have changed, and the upgrade from Drupal 8 to 9 will require considerably less effort. Breaking changes in Drupal 9 will first be released in Drupal 8, in parallel to existing functionality months or even years before Drupal 9 is released. This gives module maintainers time to add support for the new APIs well before Drupal 9 is released, while still benefiting their existing Drupal 8 installation base. This is all terrific news for Drupal.
The schedule—the Drupal 9 release just over a year away and Drupal 7 and 8 still have two years of support left—and the policy changes both seriously impact the way you need to plan an upgrade of a Drupal 7 site. Let’s look at how to make an informed decision about the best approach.
Will Drupal 9 be ready on release?
Drupal 8 wasn’t. The Drupal 7 modules needed substantial changes to work with Drupal 8, which deterred some users from adoption. There was a gap of about a year between when Drupal 8 was officially released and when enough Drupal 7 modules had been upgraded to really make it ready for primetime. The good news is that Drupal 8 modules stay current with Drupal 8 releases, so just one line of code will need to be changed to make a Drupal 8 module compatible with Drupal 9.
With the focus on backward compatibility and consistent updates, Drupal 9 should be ready in just a few months, or perhaps even just a few weeks. Better yet, because the code changes for upgrading modules from D8 to D9 in many cases will be trivial, teams working on migrating to Drupal 9 can patch the local version of the module, submit the patch to the Drupal.org module page, and simply wait for an official version of the D9 module to be released. Why? Because few differences in code means there is little risk to security when you patch modules and wait for the patch to be incorporated.
You are on Drupal 7 today: Should you migrate to Drupal 8, or wait for Drupal 9 to be released?
With the gap in schedules—Drupal 9 is out a year before Drupal 7 reaches its end of life—the crucial question is whether you should wait and upgrade to Drupal 9 or start moving to Drupal 8 now. Here’s what to consider:
Does your business have seasonality? If you have seasonality, it’s probably best to wait for Drupal 9. You’ll have plenty of time to migrate to D9 when it launches and you can put your full attention to seasonal peaks in 2019.
We recommend that if you are planning a project in 2020, you should delay your project six months to start in Q3 2020 and go straight to Drupal 9. You can plan how you will handle site refinements in D9 to avoid double work by avoiding modules that never got D8 support. You skip the headaches and thrive on a new platform in one fell swoop.
Are you having challenges on D7? Drupal 7 is still officially supported, and a large number of agency and system integration partners have the expertise to effectively work on the platform. There is, of course, a terrific amount of compelling functionality and improvements that make the move to Drupal 8 worthwhile, so if you are having challenges with Drupal 7, then you should proceed to move to D8 immediately.
One of the major challenges we see with aging Drupal 7 sites is a confusing editorial experience for marketing teams. Some approaches to empowering marketing teams to editorially manage a Drupal 7 site were better than others, and Drupal 8 includes major improvements for layout management, including a best practices approach for how pages are managed.
If you’re having challenges on D7, upgrade to D8 which will better serve you now and later.
No seasonality and no issues with D7? Keep on rockin’. If you are finding success with Drupal 7, then there is no need to start the upgrade process quite yet. The ideal time is the second quarter of 2020. Your development team can focus on migrating the site to Drupal 8 while being mindful of the API deprecations in D9, flagging modules that aren’t yet ready for Drupal 9, and ensuring any custom code does not use deprecated D8 functionality.
As your project nears completion and the release of Drupal 9 approaches, you have a trivial decision to make: Go live on D9 if it’s ready, or if not, simply go live on D8 and upgrade to D9 later. Both are paths to success and both don’t create future work. The move to D9 later will be a modest effort, and you will still be on a modern CMS platform if you launch on D8.
How to get ready for Drupal 9
One crucial consideration for your Drupal 8 upgrade development planning is to pay very close attention to the deprecations already planned and announced in Drupal 9. If you decide to start your migration to Drupal 8 now, you want to set yourself up for success to move easily to Drupal 9. As we mentioned, while the overall approach to Drupal 9 will ease this upgrade path, you still need to ensure your team is avoiding using APIs in Drupal 8 that will be deprecated in Drupal 9. Doing so won’t create any more work for your Drupal 8 upgrade, just different work, and will ensure that you do not have to do any more work when it comes time to move to Drupal 9.
With thoughtful planning, the upgrade to Drupal 9, and 10, and beyond, should be a non-event.