Our Drupal 9 Masterplan

Drupal 9.0.0 is scheduled to be released in 2020. There are 3 possible release dates, depending on when the requirements are going to be met. The earliest possible date is June 3, see https://www.drupal.org/core/release-cycle-overview for details as well as the overview below.

Drupal 9 Scenarios draft

First, the most important fact is that Drupal 9.0.0 will be a very different release compared to Drupal 8, Drupal 7 and so on. Before Drupal 8 has been released, the community has been working for years on a new version, with a lot of new functionality and major changes that required huge efforts to update or migrate sites to a new major version.

However, since Drupal 8.0.0, the Drupal community has released a new minor version roughly every 6 months with new functionality and improvements. That means that maintaining Drupal 8 sites is a continuous process that requires regular updates. Drupal 9.0 will then not provide any new features, it will instead just update all its third-party dependencies (like Symfony) as well as remove the so called backwards-compatibility (BC) layers, which allowed it to keep existing modules working while making a lot of changes to improve and modernize the code base.

There are no content structure changes planned between Drupal 8.9 and 9.0 which means that updating will only be about updating code and - to a lesser degree - configuration.

For sites that are still using Drupal 7 or even earlier, no longer officially supported versions, it makes sense to start the migration to Drupal 8 now instead of waiting for Drupal 9 to be released, as that gives them a longer time period to finish this process.

That means:

  • Predictability: Drupal 9 will be released on one of those 3 dates, unlike earlier major versions which were often delayed by months or years.
  • Lessened burden on maintainers: Contributed modules will be able to support Drupal 8.8+ and Drupal 9+ in a single release, with a limited amount of necessary adjustments. In turn, that will result in modules being Drupal 9 ready earlier than with previous releases.
  • Seamless update: Once all modules that are used by a project support Drupal 9 and its own custom code and themes are updated, the project can be updated to Drupal 9.0 just like updating from Drupal 8.7 to 8.8.
  • Shorter window of support for previous versions: Drupal 7 and 8 support will end in November 2021, due to support for third party components ending.

So how is MD Systems dealing with this major transition as a responsible and active major contributor in the ecosystem?

Primer will be Drupal 9 ready

All our customers who are using our install profile Primer and have an active maintenance contract with us will have their sites updated to Drupal 9.0 once it is ready, as part of our regular Primer updates. Likely without even noticing it, thanks to our extensive automated test coverage and visual regression tests.

MD Systems is also available to consult with updating sites to Drupal 9 as well as working on specific contributed projects.

Read on to learn more about the background, technical processes and tools to prepare for Drupal 9 as well as our contributions.

Drupal Core and Tooling Status

Preparations in Drupal core are ongoing for Drupal 9. There has been a lot of progress already, but there is still a lot to do. Drupal 9.0.0-alpha1 is expected to be released very soon.

The following graph shows the remaining work in the progress on removing the mentioned backwards-compatibility layers around deprecated code: https://dev.acquia.com/drupal9/deprecation_status/graphs

Drupal core 9.x-dev @deprecated mentions graph

Once this is done as well as the other required preparations, then Drupal 9.0.0-beta1 will be released and the release date of Drupal 9.0.0 will be set. MD Systems is actively involved in removing these BC layers.

Beside Drupal core itself, a lot of work is also going into the infrastructure on drupal.org, which will for example allow contributed modules to adopt semantic versions (1.2.0 instead of 8.x-1.2) as well as tooling to support contributed project maintainers as well as custom code in sites in updating their modules to Drupal 9.

For example, https://dev.acquia.com/drupal9/deprecation_status inspects the whole ecosystem of contributed modules in regular intervals to identify the progress in becoming Drupal 9-ready. Drupal-check is a CLI tool that allows to check the status of one or multiple modules and Upgrade Status is a Drupal module that can check all or some of the installed modules that a site uses and display a report of the Drupal 9-readiness of a site.

Some deprecations can not be identified with static code analysis, the best way to identify these is to have automated test coverage with phpunit tests which can report issues based on runtime calls to deprecatd methods.

There is also a weekly meeting in #d9readiness in Slack on Monday 7pm UTC where the progress is discussed.

Collaboration for Contrib readyness

Drupal 8.8, released back in December, is the last minor Drupal 8 release with additional Drupal 9 deprecations. Drupal 8.9, will focus on stability instead.

This allows most contributed modules to be compatible with Drupal 8.8+ and Drupal 9 in the same release and makes it a perfect time to start preparing for Drupal 9.

And while the community has been preparing for Drupal 9 for some time already, there has been a flurry of activity since the release of Drupal 8.8.0 and improved tooling. Maintainers of large distributions and ecosystems like Thunder, Lightning and Commerce have committed to making their projects available to Drupal 9 as early as possible and have committed a lot of time already to work on the modules they use.

MD Systems maintains multiple internal install profiles and supports almost 100 projects on drupal.org. We are committed to prepare all modules that we maintain for Drupal 9 and have already been working actively on that in the last weeks and months. Many of our modules now require at least Drupal 8.7 and only have a few remaining deprecations left to be fully ready for Drupal 9. Resolving these means requiring Drupal 8.8, which we’ll start doing in a few weeks.

In the upcoming Global Contribution Weekend, a key focus will be to prepare modules for Drupal 9 and our team will join the local sprint in Zurich. If you have any questions about our projects or need help in preparing your own, talk to us in person or Slack.

Custom transition

Typically, Drupal sites also have custom code that might need to be updated as well. The same tools that can be used for contributed modules can also be used for these custom modules. 

If a site has kernel or functional phpunit tests then these are a great way to test for deprecations in custom code as well as contributed modules as well.

To be able to test a site on Drupal 9, all used modules need to have a release that supports Drupal 9. Once that is the case, it is also possible to do manual tests as well as running automated test suites like Behat.

Making legacy projects ready

Some projects that were released early in the Drupal 8 cycle might be using legacy contributed modules that have been abandoned or have been merged into Drupal core or other modules might face some challenges.

Examples include the Media Entity project (8.x-1.x, including its large ecosystem), the Workbench Moderation modules as well as File entity. While some of these projects might still receive Drupal 9 compatibility releases, they only receive minimal maintenance.

These sites will either need to find ways to migrate away from these old modules or new maintainers need to step up and make the module available for Drupal 9.

MD Systems is available to consult with updating sites to Drupal 9 as well as working on specific contributed projects.