Drupal 7 to Drupal 8, 9 & beyond: The last of the major upgrades
This statement usually comes with significant shock. Upgrading from Drupal 7 to Drupal 8 (and 9) is a major project – a full site rebuild in most cases – that comes with significant cost.
Upgrading from Drupal 8 to Drupal 9 and beyond, in comparison, is far more straight forward, requiring a fraction of the effort of that from Drupal 7 to Drupal 8 (or 9) and hence is far friendlier on your back pocket.
Most Drupal development agencies will confirm that the D7 to D8 or D9 upgrade has been a fairly big thing over recent years. D8 and versions beyond offer a broad range of new benefits resulting from a more modern architecture, giving clients and their projects exciting new options for their websites and web applications. Inside the tech teams within the agencies, much of the buzz results from Drupals release of semantic versioning and the commitment to making Drupal upgrades easy going forward. It is for this specific reason, that the move from D7 to D8 or D9 should be your last major upgrade.
Things Aren’t As They Seem
The move from Drupal 7 to Drupal 8 (Or 9) isn’t easy. Sure, it’s termed as an “upgrade”, but that’s not technically accurate. The reality is that an upgrade in this situation is actually a complete rewrite of the Drupal codebase plus a complete content migration from old to new. Most Drupal sites we build are substantial in scale, meaning most of these “upgrades” are 6-9 month undertakings. Just a note here, jumping directly from Drupal 7 to Drupal 9 is a valid option for sites that haven’t yet migrated to Drupal 8, and makes sense considering Drupal 9 is available and both versions 7 & 9 will reach end of life status as of November 2021.
Drupal’s new Symfony reliant architecture is more closely aligned to the tenets of object oriented programming (OOP) rather than the more procedural approach we see in earlier versions of Drupal. This is a significant technical change which in most cases means your Drupal 7 code will not work on Drupal 8 (or 9). Throw in the added extra of the entirely revamped templating system and you have a similar obstacle with the front-end. Drupal 7 templates and their systems will not work in Drupal 8 (or 9). It’s these key changes plus a likely long list of data migration complications that requires the “upgrade” process to instead be a rebuild.
Tooling And Paradigm Shifts
Moving from Drupal 7 to Drupal 8 developers are expected to use new tools, such as the use of Composer to add modules and their dependencies, rather than Drush. Twig has replaced PHPTemplate as the default templating engine. Some core paradigms have shifted too. Developers must think in terms of events, or extending objects, instead of the old system of hooks. Many hooks still work, but they will probably be deprecated over time, and the new methods are safer ways to write code.
There Is A Silver Lining
Drupal 8, 9 and beyond assure ongoing investment in modern architecture, incremental major feature releases, improved stability, and a bigger network of invested developers — along with a range of other benefits. The best news for Drupa site owners to come from the new architecture however is that large-scale, overhaul-style major version upgrades are going to be a thing of the past, with the pain of upgrades fading into the distance.
The Future Is Bright
Drupal 8 brought with it the promise of semantic versioning. Semantic versioning is not only a naming convention for software versions, but importantly it is a descriptive norm that sets out how new versions of code should be written while also laying out the rulebook for strict backwards compatibility requirements. The benefit for Drupal site owners is significant but manageable incremental changes between major versions, shooting for seamless major version upgrades.
With the new approach to versioning, Drupal developers will receive an array of automated tools to help smooth over the journey between minor and major versions. Deprecation checking means developers receive notices in their code editors when parts of the existing codebase have been marked as deprecated, (queued for change or removal in an upcoming major version). Other tools such as Upgrade Status or Drupal Rector and its Drupal front-end Upgrade Rector can provide detailed upgrade status information, even offering automatic update of code between major versions. These all add up to much easier upgrades in future.
Building Drupal on top of Symfony means even further specialisation on the Drupal end. New Drupal versions use Symfony for a host of standard web application tasks, such as form validation, data serialisation, data storage and retrieval, content translation, templating, easy and human-readable configuration management with YAML, and the list goes on. Building on top of Symfony lets Drupal developers build closer to the consumer level, such as building the media libraries, authoring experiences, layout managers, etc that really matter to users.
Drupal’s reliance on Symfony, a robust and mature web application framework with a significant pool of developers, also translates to greater sustainability through a larger active community. Not only does this move add the 600,000 odd registered Symfony developers to Drupal’s roughly 1 million, but the move to a modern architecture and more collaborative versioning system makes Drupal far more attractive to developers on the leading edge of their chosen area of specialty. This will benefit the Drupal community while also heralding new innovation.
New Stuff, Often
Another benefit comes from the new versioning cycle: major new features in minor version core releases. As Drupal 8 churns through minor releases (the second place in the three place version number, e.g. “y” in x.y.z) it continues to add new features to the core. Unlike previous major Drupal versions, these aren’t just bug fixes and security patches. Game changing modules like JSON API, Media, and Layout Builder were all added to Drupal 8 in minor version releases, and there’s more still to come.
This is seriously exciting stuff and means there’s a greater commitment to standardised features that meet primary needs (like media and layout management, for example) and a bigger pool of developers making sure those features are updated, stable, and compatible. If you haven’t yet upgraded your Drupal 7 or 8 instance, now is the time to start this project.