The moment the Drupal community has long been contributing to and anticipating is soon upon us: Drupal 9 will be released later this year. The question that faces any organization that uses Drupal is, of course, whether to upgrade. Any organization that has done a major release upgrade before certainly knows it’s not a decision to be made lightly. Let’s explore the history of Drupal upgrades further to see why past trepidations are no longer a concern.
The Challenge With Previous Drupal Upgrades
With most of the previous major Drupal release upgrades, for example from Drupal versions 5 to 6, 6 to 7 (here’s a relevant case study), 7 to 8 (here’s a guide we built for this purpose), etc., the site owner was often required to rebuild their entire site due to the major code changes — and even architectural changes — between releases. In many cases, it was easier to build a new site in the new platform and import the data from the previous one, rather than do a by-the-books “upgrade.”
This challenge was most evident with the transition from Drupal 7 to Drupal 8. Up to Drupal 7, Drupal’s core code was procedural PHP that had grown in complexity over time, and with it came disadvantages compared to more modern, cleaner, object-oriented codebases. Object-oriented code typically has the advantages of greater readability, reuse, testability, maintainability, and modularity over procedural code.
Because of this and more, the Drupal community made the decision to switch to an object-oriented architecture for Drupal 8, based on the popular Symfony framework. Along with the advantages of object-orientation this change had brought, it also immediately and significantly expanded the pool of skilled Drupal developers since developers from the Symfony community could easily transition to working with Drupal.
However, the introduction of these advantages came at a cost, and that was upgradeability. Custom modules for Drupal 7, for the most part, would not work with Drupal 8 because of the change in architecture. Complicating matters, some of the major Drupal 8-compatible contributed modules weren’t ready for use when Drupal 8 was released, and site owners had to monitor the status of each such module before deciding to upgrade.
A final thorn in the side (or Lego block to the bare foot) of the upgrade effort to Drupal 8 came in the form of a new theme engine called Twig. Twig replaced Drupal’s aging PHPTemplate templating system, originally added in Drupal 4.7.0 way back in 2006. Twig is a much more robust and secure templating engine which is also used by other CMSes. In every case where we’ve had to rebuild the theme from scratch in Drupal 8, it wasn’t technically possible to reuse any of the Drupal 7 PHPTemplate template files, and it wasn’t worth the effort to try reusing the CSS or JS files either. Both the DOM output structures on the page had dramatically changed. Besides, output paradigms had changed and most Drupal 8 sites were being built with component-based designs.
What’s Different About Drupal 9
In stark contrast to the architectural changes in Drupal 8, the architectural changes in Drupal 9 are, well, nonexistent. With Drupal 9, the Drupal community is taking the latest Drupal 8 codebase and simply removing all deprecated code.
Thus, to perform the upgrade, remove the references in your custom code to any deprecated Drupal core or contributed code, replace by referencing current code where applicable, implement new functionality where you have to, and the upgrade is done. There is no new object model to learn, no new theme layer to adapt to, and no new data schema to adopt. The upgrade process resembles more of that of a point release than of a major one. The move to Drupal 9 is not revolutionary, it is evolutionary.
The updates to most of the major contributed modules are well underway. For Drupal 8 sites that require no changes to their custom code, many of them will be upgradable to Drupal 9 on day one.
Mediacurrent and Drupal 9
As a top 10 contributor to Drupal, Mediacurrent is remaining consistent with its contribution ethos for Drupal 9. At this writing, there are numerous Drupal 9 beta 1 blockers, and we are dedicating several developers to the resolution of those blockers.
Further, we at Mediacurrent are updating our three major Drupal 8 distributions for Drupal 9:
- Rain — Rain is a Drupal installation profile that adds out-of-the-box editorial, administrative and media enhancements to the core Drupal installation. Modeled after the distributions Acquia Lightning and Thunder CMS, the Rain profile packages and pre-configures many core and contributed modules to make building Drupal websites faster and easier.
- Guardr — Guardr is a Drupal distribution with a combination of modules and settings to enhance a Drupal application’s security and availability to meet enterprise security requirements out-of-the-box.
- Collective Directory — A new distribution that will be available for Drupal 8 at launch and then available for D9 shortly after release – full details soon!
As part of this effort, we will be collaborating with the community to get the necessary pieces of these, especially all of the contributed modules they use, ready to run on Drupal 9. We expect to have beta releases of these available soon after Drupal 9.0.0-beta1 is launched later this year.
Finally, we are preparing our clients and colleagues for the Drupal 9 release. For our clients, we are preparing individual roadmaps unique to their architecture to optimize their transition to Drupal 9. We’re reviewing each client’s custom codebase and creating a ticket for each project as necessary for the upgrade.
For our colleagues in the Drupal community, be on the lookout for a blog post on top changes needed to make your module or theme run on Drupal 9, along with our existing post on how to get your site and team ready for D9.
We’ll Help You Get Ready For Drupal 9
Whether you’re ready to help your team make the transition to Drupal 9 or are weighing the pros and cons of it, we’re ready to help you at your point in the journey. Contact us in our online chat to the right, or by filling out our contact form. We look forward to working with you!