Drupal 9: Status, Resources, and Ways to Contribute

what you should know about Drupal 9

Last Updated March 7, 2020

This article is a summary of the state of Drupal 9 along with lists of key dates, ways to contribute, and other resources. If I missed any important information or there's a mistake, please contact me via email or, more reliably, via Twitter, and I'll try to update the post quickly.

In this article, I will cover:

What's Special About Drupal 9?

Drupal 9 is obviously the "major version" after Drupal 8, but there is something particularly special about Drupal 9. Where previous major versions have often departed wildly from their predecessors (looking at you Drupal 8!), Drupal 9.0 will be functionally equivalent to the final minor version of Drupal 8. The exact final minor version number will depend on when Drupal 9.0 is ready.

According to the Drupal.org D9 docs:

"Drupal 9 will be a cleaned-up version of Drupal 8. It will be the same as the last Drupal 8 minor version with our own deprecated code removed and third-party dependencies updated."

This is good news as it makes updating from Drupal 8 to Drupal 9 much, much easier than for previous major version updates. To see a video of updating a simple site, check out the DrupalCon Amsterdam Driesnote starting at around 43:10 minutes. And, to get a really nice overview of the Drupal 9 release, I highly recommend looking at the D9 slides created by Gábor Hojtsy. As an added bonus, these slides have been made available for anyone to present at any event around the world.

Illustration of Drupal 8 on same "release track" as Drupal 9 compared to older versions of Drupal via drupal.org/docs/9/how-drupal-9-is-made-and-what-is-included
Illustration of Drupal 8 on same "release track" as Drupal 9 compared to older versions of Drupal via drupal.org/docs/9/how-drupal-9-is-made-and-what-is-included

Deprecation & Third-Party Dependency Updates

The two areas that need to be addressed to make Drupal 9 a reality are 1) removing deprecated code, and 2) updating third-party dependencies.

Deprecated code is old code that has been replaced with new code while the old code remains to ensure backward compatibility. With deprecated code, the intention is always to remove it at some point. Any code that relies on deprecated code will obviously break once the deprecated code is removed. Thus, Drupal core and contributed projects that want to support the Drupal 9 version need references to all deprecated code removed. There are already a number of issues open to fix these outlined in the stats section later.

Drupal 8 leverages many third-party software libraries including CKEditor 4, jQuery UI 3.2, Twig 1, and Symfony 3. Since Drupal exposes third-party APIs, when these APIs change, it affects Drupal's backward compatibility. Drupal only breaks backward compatibility in major version updates.

For Drupal 9, some key third-party libraries will be updated and some won't be updated to their most recent major releases. Because CKEditor 5 has changed the editor architecture significantly and CKEditor 4 is supported until 2023, CKEditor 5 will be updated in Drupal 10 and will be optional in Drupal 9. On the other hand, the jQuery UI dependency is being phased out, so only a subset of the library will be available in Drupal 9. On the front-end, Twig 1 will be updated to Twig 2.

The most pressing lifecycle impact is that Symfony 3 has an end of life in November 2021. Drupal 9 will use Symfony 4.4 which was recently released. To give ample time to update Drupal 8 sites, the D9 planned release date is June 3, 2020. If that date slips, the backup plan is to release Drupal 9 by the end of 2020. See the estimated dates below.

Symfony releases calendar via symfony.com/releases
Symfony releases calendar via symfony.com/releases 

Recent Stats

Here are some approximate Drupal stats based on recent data. Note: Some drupal.org issues aren't tagged "properly" so there may be other issues not represented below.

Modules:

Themes:

Contributed Project D9 Issues: "Drupal 9 compatibility" tag

  • Open: 788+
  • Fixed/Closed: 738+

Core D9 Issues: "Drupal 9" tag and 8.x version, or 9.0.x-dev version

  • Open: 447+
  • Fixed/Closed: 566+

Top 200 Modules D9 Status

  • From DrupalCon Amsterdam Driesnote
    • Ready Now: 32 (16%)
    • Pretty Close: 100 (50%)
    • Needs Work: 68 (34%)
  • As of March 7, 2020 from Drupal 9 Deprecation Status
    • No Problems Found: 50 (25%)
    • All Problems Fixable Now: 33 (16.5%)
    • Some Problems Fixable Now: 79 (39.5%)
    • Needs Manual Review: 30 (15%)
    • Only Problems Fixable Later: 2 (1%)
    • No Results: 6 (3%)
Graph of top 200 modules' D9 status from https://dev.acquia.com/drupal9/deprecation_status
Graph of top 200 modules' D9 status from dev.acquia.com/drupal9/deprecation_status

Core Usage: 1,044,972

  • 5.x: 509
  • 6.x: 36,187
  • 7.x: 706,978
  • 8.0.x to 8.8.x: 301,243
    • 8.0.x: 1,328
    • 8.1.x: 1,992
    • 8.2.x: 3,786
    • 8.3.x: 7,374
    • 8.4.x: 5,380
    • 8.5.x: 19,424
    • 8.6.x: 39,472
    • 8.7.x: 88,386
    • 8.8.x: 134,101
  • 8.9.x: 54 (may be inaccurately reported in the usage tracker)
  • 9.x: 0

Builtwith Usage

Drupal 8 usage via trends.builtwith.com/cms/Drupal-8
Drupal 8 usage via trends.builtwith.com/cms/Drupal-8

Key Dates

Future dates are estimated and are based on major and minor releases. The releases are happening every 6 months on the first Wednesday of the month. Additional dates are available in the release cycle documentation.

Quarterly timeline of Drupal 9 releases and Drupal 7 & 8 end of life via https://www.drupal.org/docs/9/drupal-9-release-date-and-what-it-means
Quarterly timeline of Drupal 9 releases and Drupal 7 & 8 end of life via drupal.org/docs/9/drupal-9-release-date-and-what-it-means

Pre D9 Release

D9 Release

  • Beta Requirements Done by March 13, 2020
    • Mar 2020: 8.9.0-beta1 & 9.0.0-beta1 Releases
    • May 2020: 8.9.0-rc1 & 9.0.0-rc1 Releases
    • Jun 2020: 8.9.0 & 9.0.0 Releases
       
  • Beta Requirements Done by April 28, 2020
    • Apr 2020: 8.9.0-alpha1 Release
    • May 2020: 9.0.0-beta1 Release
    • Jun 2020: 8.9.0 Release
    • Aug 2020: 9.0.0 Release
       
  • Beta Requirements Done by August 31, 2020
    • Apr 2020: 8.9.0-alpha1 Release
    • Jun 2020: 8.9.0 Release
    • Aug 2020: 9.0.0-beta1 Release
    • Dec 2020: 9.0.0 Release

Post D9 Release

Drupal 10 Release!

Drupal 9 Coordinators

Lots of people are working on Drupal 9, but here are the coordinators from the D9 initiative page.

Drupal 9 Coordinators via drupal.org/about/strategic-initiatives/drupal9
Drupal 9 Coordinators via drupal.org/about/strategic-initiatives/drupal9

Gábor Hojtsy

Jess (xjm)

Nathaniel Catchpole (catch)

Ryan Aslett (mixologic)

Checking Status

Drupal 9 is always changing, so here are some ways to keep in the loop.

Twitter

Even if you don't have your own Twitter account you can check these accounts for regular Drupal 9 updates.

Twitter account @DropIsMoving maintained by @webchick and @gaborhojtsy at twitter.com/dropismoving
Twitter account @DropIsMoving maintained by @webchick and @gaborhojtsy at twitter.com/dropismoving

Meetings

Drupal 9 readiness meetings generally happen every 2 weeks on Mondays so you can join the meeting (in Slack) or check the meeting notes afterward.

Kanban Board & Issue Queues

Ways to Contribute

There are many ways to contribute to Drupal 9. Remember, you don't have to be a coder to help out! Here are some ideas:

Tag issues for removing deprecated code

There was some previous confusion as to what tags to use for issues related to removing deprecated code in preparation for Drupal 9. People used many tags including "Drupal 9", "Drupal 9 compatibility", "Drupal 9 readiness", "D9Readiness", "D9 port", "D9 upgrade path", "Drupal 9 Deprecated Code Report", and "Drupal 9 Deprecated Code Report and dependency injection issues".

After a discussion in November in the Slack #d9readiness channel with Gábor Hojtsy, we've clarified the tags that should be used. Please avoid using other tags and use the following, so that it is easier to find issues to work on. At that time, I went through many issues to update their tags to match these guidelines. There are likely some that were missed, so if you see issues that aren't tagged or are using different tags, please update them. When making new issues, keep these in mind as well.

  • "Drupal 9" - This is for core issues for D8 versions as it was used before the D9 branch was available. For changes happening on the D9 branch, this tag is unnecessary.
  • "Drupal 9 compatibility" - This is for contributed project issues.
Issues tagged with "Drupal 9 compatibility" in drupal.org issue queue
Issues tagged with "Drupal 9 compatibility" in drupal.org issue queue

Create issues for deprecated code

There are lots of contributed D8 projects that can be updated. Check the issue queue first to make sure the project doesn't have an issue created already. Then you can use the deprecation checking tools to see if there are issues. If there aren't deprecation problems, it's still good to create an issue and then mark it as fixed so it's clear that the code has been checked.

When creating new Drupal 9 issues for contributed projects, please use the "Drupal 9 compatibility" tag rather than other D9 tags that are listed above. When creating new Drupal *core* issues, you don't have to tag them as long as you're using the 9.0.x-dev or 9.1.x-dev for the version. If you have a Drupal 8 issue that needs to be tagged for D9, use the "Drupal 9" tag.

Create, review, and/or test patches to fix deprecated code

You can search for issues using the Kanban boards and issue queues (see above). If you know how to create patches, many of the updates are straightforward. The issues should have a report of what is deprecated and needs updating. If not, use the deprecation checking tools. If you don't know how to create patches, but can review code, you can review existing patches to make sure they fixed the deprecations correctly.

Help with stabilizing experimental Drupal 8 core code

There are some experimental projects that need finalizing before 8.9 so they will make it into D9 as stable. Here are some issues that you can help with to make that happen.

Modules:

Themes:

Participate in strategic core initiatives

There are always strategic core initiatives in progress, and there are some exciting ones for Drupal 9 that could use your help. If you have ideas for other initiatives, discuss your ideas in the #contribute Slack channel.

In addition, there are some active D8 initiatives that will benefit Drupal 9. Some are more active than others. Check out the issue queues for activity:

Training, Speaking, or Mentoring at Events

Spread the word about Drupal 9 by going to local, regional, or international events. Check out Drupical to find Drupal-specific events, but also consider going beyond these into the wider tech world to help with Drupal adoption. If you like speaking at events, Gábor Hojtsy has provided "State of Drupal 9" slides for anyone to use. If you find any mistakes or have suggestions, leave comments on the slides. For contribution sprints, you can mentor other community members and help them work on Drupal 9 issues.

Additional Resources

There are many Drupal 9 resources available, but here are some to start with:

And Remember…

"The big deal about Drupal 9 is … that it should not be a big deal." -Dries

p.s. A big thank you to Lindsey Gemmill for her review and painstaking formatting of this post! And thanks to Gábor Hojtsy for reviewing and providing feedback and more resources.

Last Updated March 7, 2020

  • MARCH 7, 2020: Updated mostly based on feedback from Gábor Hojtsy
    • Added more links to resources section
    • Updated the top 200 modules' D9 status data
    • Adjusted key dates alpha and beta info
    • Updated link to last D9 readiness meeting
    • Added some images so this isn't just a wall of text :)