This article is from our resident Drupal 8 core maintainer Nathaniel Catchpole (@catch) who is helping to build Drupal 9.
Drupal 9 will be the first major core release to have a continuous upgrade path meaning that Drupal 8 contributed modules and themes, and actual Drupal 8 sites, should be able to upgrade smoothly from Drupal 8 to Drupal 9, with only slightly more disruption than a Drupal 8 minor release. Since this is the first time that Drupal has ever attempted to provide a smooth upgrade path between major releases, we understand it can be hard to imagine what it will be like.
The best way to feel confident will be to actually understand the changes that will be landing in Drupal 9 over the next few months, and when you should try to test it, use it to build new sites and to update existing sites.
What are the main changes in Drupal 9?
Drupal 9 will update third party dependencies, such as Symfony and Twig, so that we are able to continue to receive bugfix and security support from those projects.
Drupal 9 (and Drupal 8 versions from 8.7.7 onwards) will have support for running the same branch of a contributed module across multiple major core versions, reducing the maintenance burden of supporting both.
Drupal 9 will remove backward compatibility layers and deprecated code marked for removal in Drupal 8.
These three things are really the entire focus of the initial Drupal 9.0.0 release — updating dependencies, smoothing the update from Drupal 8, and removing deprecations.
When with Drupal 9 be available?
Drupal 9.0.0 is planned for release on June 3rd, 2020, the same day that Drupal 8.9.0 is released. However, the Drupal 9 branch is already open for development and you can download and test Drupal 9.0.0-alpha1!
You can already enable testing for a Drupal-9 compatible module against the Drupal 9 branch and make sure all your tests pass with Symfony 4 and Twig 2.
Removal of deprecated code and backward compatibility layers is also in progress now that Drupal 9 is open. We will continue updating dependencies and removing deprecated code throughout the next few months.
Alphas will continue to come out regularly until we hit beta.
Isn’t this a short list? Surely, there’s more to it?
This is intentionally a shortlist because we’ve spent years working on how to minimize the disruption for the Drupal 8 to 9 updates. However, with the question of ‘when will it be ready?’, there should always be the addition of ‘ready for whom?’. Drupal core developers? Contrib developers? New site builders? Organizations with an existing site on Drupal 8? Organizations on Drupal 6 or 7?
Drupal 9 becomes ready for core development when the branch is open — once this is done, Drupal 9-specific patches can be committed.
Drupal 9 becomes ready for contributed module developers as soon as the branch begins to look like Drupal 9 - i.e. once dependencies are updated and deprecated code starts to be removed. Contrib developers can already support multiple core versions using the new core_version_requirement key, but the way to test if a module is really Drupal 9 compatible is to install and try to use it on Drupal 9.
Drupal 9 becomes ready for new site development once the contributed modules you need for that new site are compatible with Drupal 9. For many contributed modules this will be a one-line change, so you should be able to start developing new Drupal 9 sites once 9.0.0-beta1 is released or earlier if you’re feeling adventurous and want to contribute to contributed modules being read. Drupal 9’s beta period will be longer than what we allow for minor releases, to enable plenty of advance testing and flush out any unexpected issues with actual sites.
Once Drupal 9.0.0 is released, you should never start building a new site on Drupal 8 again.
Drupal 9 becomes ready for Drupal 8 upgrades once all of the modules you’re already using, and any custom code, are Drupal 9 compatible. Drupal 8 will be supported until November 2021. However, it’s a good idea to start work on this as soon as Drupal 9.0.0 is released, and you can prepare for that upgrade now by doing things like ensuring you’re up-to-date with Drupal 8 core and contributed updates. While June 2020 to November 2021 is a much shorter support window than previous major Drupal releases like 6.x and 7.x, it also means hundreds of thousands of sites making a smaller change all around the same time, which should improve reliability for everyone.
If you’re still on Drupal 6 or 7, you can already migrate sites that don’t use content translation to Drupal 8 now! There is no reason to wait for Drupal 9 to do this since it will be such a small update to Drupal 9. Sites using content translation should keep an eye on this critical Drupal core issue to finalize the multilingual upgrade path for translated nodes, and help to test it if you can.
When will Drupal 9.0.0 actually be released though?
We’re aiming for Drupal 9.0.0 to be released on June 3rd, 2020. To hit this date, we’ll need to hit beta by March 2020. The full list of requirements for tagging beta is tracked in this issue.
There is always the possibility that we won’t have resolved every beta blocker by March. If we don’t have everything in place by then, there are two fallback dates—we’ll either start the beta in May with a 9.0.0 release date of August/September 2020 or start the beta in September with a release date of December 2nd, 2020.
The more people test the branch and Drupal 9-compatible modules before June 2020, the more confident everyone can be that it’s really ready.
Don't be a stranger.
Keep up to date by signing up for our newsletter. It’ll be fun, we promise.