Update: Since the publication of this blog Drupal 9 is closer than ever. To learn what you need to do to be ready for the upcoming release, please consult our pages on Preparing for Drupal 9.

This blog has been re-posted and edited with permission from Dries Buytaert's blog. Unfortunately Dries' blog does not allow for comments at the moment, feel free to post them here.

At Drupal Europe, I announced that Drupal 9 will be released in 2020. Although I explained why we plan to release in 2020, I wasn't very specific about when we plan to release Drupal 9 in 2020. Given that 2020 is less than thirteen months away (gasp!), it's time to be more specific.

Shifting Drupal's six month release cycle

A timeline that shows how we shifted Drupal 8's release windows

We shifted Drupal 8's minor release windows so we can adopt Symfony's releases faster.

Before I talk about the Drupal 9 release date, I want to explain another change we made, which has a minor impact on the Drupal 9 release date.

As announced over two years ago, Drupal 8 adopted a 6-month release cycle (two releases a year). Symfony, a PHP framework which Drupal depends on, uses a similar release schedule. Unfortunately the timing of Drupal's releases has historically occurred 1-2 months before Symfony's releases, which forces us to wait six months to adopt the latest Symfony release. To be able to adopt the latest Symfony releases faster, we are moving Drupal's minor releases to June and December. This will allow us to adopt the latest Symfony releases within one month. For example, Drupal 8.8.0 is now scheduled for December 2019.

We hope to release Drupal 9 on June 3, 2020

Drupal 8's biggest dependency is Symfony 3, which has an end-of-life date in November 2021. This means that after November 2021, security bugs in Symfony 3 will not get fixed. Therefore, we have to end-of-life Drupal 8 no later than November 2021. Or put differently, by November 2021, everyone should be on Drupal 9.

Working backwards from November 2021, we'd like to give site owners at least one year to upgrade from Drupal 8 to Drupal 9. While we could release Drupal 9 in December 2020, we decided it was better to try to release Drupal 9 on June 3, 2020. This gives site owners 18 months to upgrade. Plus, it also gives the Drupal core contributors an extra buffer in case we can't finish Drupal 9 in time for a summer release.

A timeline that shows we hope to release Drupal 9 in June 2020

Planned Drupal 8 and 9 minor release dates.

We are building Drupal 9 in Drupal 8

Instead of working on Drupal 9 in a separate codebase, we are building Drupal 9 in Drupal 8. This means that we are adding new functionality as backwards-compatible code and experimental features. Once the code becomes stable, we deprecate any old functionality.

Let's look at an example. As mentioned, Drupal 8 currently depends on Symfony 3. Our plan is to release Drupal 9 with Symfony 4 or 5. Symfony 5's release is less than one year away, while Symfony 4 was released a year ago. Ideally Drupal 9 would ship with Symfony 5, both for the latest Symfony improvements and for longer support. However, Symfony 5 hasn't been released yet, so we don't know the scope of its changes, and we will have limited time to try to adopt it before Symfony 3's end-of-life.

We are currently working on making it possible to run Drupal 8 with Symfony 4 (without requiring it). Supporting Symfony 4 is a valuable stepping stone to Symfony 5 as it brings new capabilities for sites that choose to use it, and it eases the amount of Symfony 5 upgrade work to do for Drupal core developers. In the end, our goal is for Drupal 8 to work with Symfony 3, 4 or 5 so we can identify and fix any issues before we start requiring Symfony 4 or 5 in Drupal 9.

Another example is our support for reusable media. Drupal 8.0.0 launched without a media library. We are currently working on adding a media library to Drupal 8 so content authors can select pre-existing media from a library and easily embed them in their posts. Once the media library becomes stable, we can deprecate the use of the old file upload functionality and make the new media library the default experience.

The upgrade to Drupal 9 will be easy

Because we are building Drupal 9 in Drupal 8, the technology in Drupal 9 will have been battle-tested in Drupal 8.

For Drupal core contributors, this means that we have a limited set of tasks to do in Drupal 9 itself before we can release it. Releasing Drupal 9 will only depend on removing deprecated functionality and upgrading Drupal's dependencies, such as Symfony. This will make the release timing more predictable and the release quality more robust.

For contributed module authors, it means they already have the new technology at their service, so they can work on Drupal 9 compatibility earlier (e.g. they can start updating their media modules to use the new media library before Drupal 9 is released). Finally, their Drupal 8 know-how will remain highly relevant in Drupal 9, as there will not be a dramatic change in how Drupal is built.

But most importantly, for Drupal site owners, this means that it should be much easier to upgrade to Drupal 9 than it was to upgrade to Drupal 8. Drupal 9 will simply be the last version of Drupal 8, with its deprecations removed. This means we will not introduce new, backwards-compatibility breaking APIs or features in Drupal 9 except for our dependency updates. As long as modules and themes stay up-to-date with the latest Drupal 8 APIs, the upgrade to Drupal 9 should be easy. Therefore, we believe that a 12- to 18-month upgrade period should suffice.

So what is the big deal about Drupal 9, then?

The big deal about Drupal 9 is … that it should not be a big deal. The best way to be ready for Drupal 9 is to keep up with Drupal 8 updates. Make sure you are not using deprecated modules and APIs, and where possible, use the latest versions of dependencies. If you do that, your upgrade experience will be smooth, and that is a big deal for us.

Special thanks to Gábor Hojtsy (Acquia), Angie Byron (Acquia), xjm(Acquia), and catch for their input in this blog post.

Comments

Balu Ertl’s picture

Glad to hear the detailed updates, thanks for sharing them.

Only one sidenote, absolutely from a neutral viewpoint. I was just wondering how relocating the release windows from spring and autumn to early summer and winter affects the workload balance of agency companies. As both June and December falls before a generally low-paced time (summer holidays and winter festive season), whether they will have enough human capacity to focus on core updates in extra on top of the average amount of work expected by Clients to deliver. Hopefully proper HR planning ahead and in-time communication with stakeholders can bridge over this situation.

catch’s picture

Minor releases are supported for a year for security, so for example when Drupal 8.8 is released, you have a further six months of security support for Drupal 8.7. There's no need to immediately update to a new minor release  - although people should test the beta and release candidates.

kim.pepper’s picture

There are some of us here in the southern hemisphere you know!

Balu Ertl’s picture

Sorry Kim, no offense :)

rituraj.gupta’s picture

Good to know that Drupal 9 will be launched in 2020. In coming days, I would like to know that what will we get advantage in Drupal 9?

Till then see ya.

----------
Warm Regards,
Ritu Raj

Gábor Hojtsy’s picture

Unlike Drupal 8, you will keep receiving security support after November 2021. Read more in the question What will the new features of Drupal 9 be? at https://www.drupal.org/documentation/9

crafter’s picture

It would be nice to improve DI in drupal 9 for example just like in symfony autowire or in magento 2.

xjm’s picture

Remember, any improvements can and should be built now, in Drupal 8! As described above, Drupal 9 is being built in Drupal 8.

bogdog400’s picture

I read this as saying the jump from 8-> 9 will not be the same kind of leap as we took from 7-> 8. Great. The meaning of the numerical nomenclature has been blurred for many years.

This sounds like a good practical idea because many of the nice modules from 7 still haven't made the huge leap to 8. This will make it a bit easier.

ivrh’s picture

Considering that Drupal community was always supporting only two latest versions of Drupal, does it meant that Drupal 7 support will stop the moment Drupal 9 is released?

Need real server security? Get in touch

xjm’s picture

Drupal 7 and 8 have the same EOL (November 2021), since upgrading from D7 is significantly more difficult than upgrading from Drupal 8 will be. This was addressed in a previous post and is also documented on the release schedule page. Thanks!

dunghoanguit’s picture

I would say Drupal 7 to Drupal 8 was pain, the market, site owners, developers in my network,....they go for Laravel, Nodejs instead of Drupal.... Drupal developer lost their opportunities, Thousands of Drupal 7 modules are now abandoned

I hope this will not happen from 8->9

NWOM’s picture

Most of us working on intranet solutions are still on Drupal 7 for this reason. A lot of modules just haven't been ported yet.  I'm sure alot of modules will get updated when Drupal 7 gets closer to EOL.

toamit’s picture

Could someone clarify and confirm that the File upload API will be deprecated or removed in Drupal 9.

If deprecated, can we expect it to last for entire duration of Drupal 9.

Even with deprecation the file api could use some love, as its quite messy and leaks access controls from way too many places that are not easy to track down. I hope media does not follow similar path.

Also suggest where to look for documentation for upgrading contributed modules from file api to media.

Thanks

-A

PS: BTW the current media implementation has quite slow when compared to file api

xjm’s picture

So the core Media and experimental Media Library modules still use file fields and the existing file upload API under the hood. When the Media Library becomes stable, we will make it the default experience for new sites, so that site builders creating new content types will choose media fields instead of file or image fields, and content authors adding media will see the media library by default (so that they can reuse existing media in addition to uploading new media right there on the content editing form). So it will mainly be a change to the user interface and default configuration, rather than an API change. We also will provide a tool that will help site owners upgrade their file and image fields to media library items for future compatibility.

The exact timeline depends on when the Media Library becomes stable. We hope the Media Library will be stable in time for Drupal 8.8.0 in December 2019. If that's the case, then new 8.8.0 and higher sites would use media by default, but old file and image fields would still work fine for the rest of Drupal 8. Then, we might limit use of file and image fields to the internal implementation in 9.0.0 and higher only. On the other hand, if the new UI and upgrade path aren't ready in time for the Drupal 8 LTS and 9.0.0 release, then whatever is supported in Drupal 9.0.0 would be supported throughout Drupal 9's lifetime.

Hope this helps!

Also, we'd definitely value bug reports for any performance issues or other bugs you find with media. I'm aware of #2878119: Whether queued or not, update the media thumbnail and metadata before beginning the entity save database transaction which can impact the performance of media fields, but if the issue you're seeing is different it'd be a great help to submit it in the Drupal core issue queue. Thanks!

toamit’s picture

@xjm thanks for a swift response.

We are heavily using file api's programmatically in our contributed module foldershare (which we plan to release this month or next). Our base test case is to manage a million files/folders/images in a Drupal 8 site and anticipate this to be surpassed in production sites. Its quite important for us to understand how to handle existing content and maintain it seamless with new content.

It sounds like you are saying that the internal file/image api will remain as is, but the UI will route things via media library. Is this correct interpretation? 

We'll start to look at media in next several months and plan to report issues encountered. Thanks for pointing this out.

xjm’s picture

It sounds like you are saying that the internal file/image api will remain as is, but the UI will route things via media library. Is this correct interpretation? 

Yep, that's correct as of the current roadmap. Media is essentially just a media entity type that is referenced in an entity reference field, so the main disadvantage of using plain file or image data is that this data won't integrate with the Media Library or other Media-specific functionality.

toamit’s picture

Great thanks for the clarification. Much appreciated @xjm

gsharm’s picture

Thanks for the more clarification to Shift Drupal 8 to Drupal 9 coming years.
Drupal 8 totally depends on symfony versioning and symfony components and service injections etc.
@xjm When symfony version is changed, is it required for the change drupal version?

xjm’s picture

Yep, as described in the post above above, Drupal 8 depends on Symfony 3, and Symfony 3 will be end-of-life in November 2021. This means that after November 2021, security bugs in Symfony 3 will not get fixed anymore. So, we need to update Drupal to depend on Symfony 4 or higher by November 2021. However, Symfony 4 has backwards compatibility breaks from Symfony 3, so in order to follow semantic versioning, we need to release a new major version of Drupal as well in order to require Symfony 4. That new major version will be Drupal 9.

As mentioned above, the first step is to make Drupal compatible with Symfony 4 (without yet requiring it).

Hope this helps!

gsharm’s picture

@xjm thanks for the more clarification. Would you please share some symfony new things & components which are introduced in drupal 9 it will be you appreciated.

xjm’s picture

As the post above explains, there won't be a lot of new things introduced in Drupal 9.0.0. You can find the new features of Drupal 9 being developed already in Drupal 8.6 and 8.7 and so forth; and after 9.0.0, new features will be added to 9.1 and 9.2 and so on. You can read more about this here: https://www.drupal.org/node/3019470#changes-in-d9

If you want to learn more about Symfony 4, the Symfony docs are a good place to start: https://symfony.com/blog/symfony-4-a-new-way-to-develop-applications

Thanks!

WebKings.ca’s picture

I have created a new plugin to automate this process... You can check it out here:

https://github.com/WebKings-ca/gocomposer

mukuld’s picture

Could any more provide some high level insights on major functionality changes to Drupal 9?

xjm’s picture

As the post above explains, there won't be a lot of new things introduced in Drupal 9.0.0. You can find the new features of Drupal 9 being developed already in Drupal 8.6 and 8.7 and so forth; and after 9.0.0, new features will be added to 9.1 and 9.2 and so on. You can read more about this here: https://www.drupal.org/node/3019470#changes-in-d9

If you want to learn more about Symfony 4, the Symfony docs are a good place to start: https://symfony.com/blog/symfony-4-a-new-way-to-develop-applications

Thanks!

khacdau123’s picture

Ya ! I have started a new project with drupal 8 ! Everythings seem to be okey ! So no need for me to upgrade :D !

headstartcms’s picture

Think big! Drupal 9 is more powerful than drupal 8 because of security , functionality and advance development compare to drupal 6 , 7 , 8. We are moving to drupal 9 . The version accelerate because of the support of global community who contribute. Thank you guys! More power. 

Nelo_Drup’s picture

Question drupal 9 will be easier in the backend interface will return the overlay as optional that's what made drupal 7 unique but drupal 8 in security and stability is great


Carlos Salvado’s picture

Excellent news Drupal 9 will be released in 2020.

I would like to know what advantages we will get in Drupal 9 and whether the migration from Drupal 8 to Drupal 9 will be quiet and easy to do.

I really hope Drupal 9 comes with security improvements.

Thanks!!

headstartcms’s picture

No man is an island! Drupal can perform top performance in software webdevelopment as long as active community can continue to contribute in a small , medium and bigs ways. Each person have great skills and talents that can continue to life cycle of the software in drupal. Thanks for the great support! 

JoAMoS’s picture

Greetings,

Too many love D7 and did not feel the need to do D8 thinking D9 was (shortcut) way to go.

Reading main post, looks like a new approach of incubation D9 in D8 and changing D9 along the way (future versions) is being planned. /Correct if wrong.

One big reason D8 adoption was a problem (speaking for myself) was its was too code based not a forte for non-coders who build websites, only using core and modules and avoided any code and almost completely depend on the community to improve core and modules. I really believe this was a large (lost) user base who had to look elsewhere when faced with adopting D8.

Many content specialist (bloggers, professionals, e-store owners, not-for-profits etc) build websites and they do not code. D8 offered then alarming opportunities and possibilities which were overwhelming and needed another learning curve, after trying to figure out the Drupal cms.

Now if D9 is incubated in D8 and there is an end-of-life for D7 webmasters or site owners, they are really in trouble. If users like myself who have started building websites since HTM4 moved to HTML 4.1 then phpNuke to postNuke to Zikula and then landed on Drupal, we are getting old to keep upgrading. A whole decade has passed just using Drupal cms, exclusively.

Please consider my view point in the race to make it modular and easy. Keeping it simple and safe is sometimes what is really required.

Best wishes.

bhushan1042’s picture

Just want to know what advanced features do we get in drupal 9.

Gábor Hojtsy’s picture

All the features of Drupal 8. Drupal 9.1 onwards will keep adding new features.

xjm’s picture

mrgoodfellow’s picture

When focusing on upgrading your sites, will there be a central resource specifically on documenting major changes between 8 and 9? 

This would help admins roadmap site migration.  There may be functions in 7 that need to be re-built for 8 and should be done so with a focus on Drupal 9 compatibility.

Gábor Hojtsy’s picture

If you use an IDE it will likely colorize and annotate use of deprecated functionality. Api.drupal.org also has a full list of deprecated things, see https://api.drupal.org/api/drupal/deprecated/8.7.x which can be further filtered and/or ordered. Finally tools on top of phpstan are built to analyse your codebase for use of deprecated code. See https://github.com/mglaman/drupal-check for that.

mrgoodfellow’s picture

Thank you so much, these are great resources!

freelylw’s picture

the web boom was in last 15 years, and its done now, that was the time for drupal 6-7. we have seen more than thousands user leaving drupal since the 7 -8, because the development of the drupal is very unfriendly, thousands module is going to be abandon, and putting lots site owner in trouble. this is not a winning strategy, people need things easy and trouble free but not high tech, the more you abandon your user, the more user will abandon you. please consider more for the upgrade process for all users rather than building something new

Gábor Hojtsy’s picture

Thanks! We are focusing on rounding out the migration suite with the missing multilingual features which is the only remaining gap for core data migrations from Drupal 7 (or even 6!) to 9. Drupal 6 was released 11 years ago (https://www.drupal.org/forum/general/news-and-announcements/2008-02-13/d...) and yet we still aim to provide a migration path to Drupal 9 which is only to be released more than a year from now.

For Drupal 8 to 9 upgrades, you'll not even need a migration path, as long as the code is properly updated, you will only need to run your update.php (at least in our current plan). The development platform between Drupal 8 and 9 is not all that different.

freelylw’s picture

as I can see the main trouble is not about the core updating. its all about the third party module. for most of the serious sites that has tons of module installed. is there a way to keep the old modules working that will solve the problem. btw, for the D8 to D9, as you mention we only need to run the update.php, what about the modules ? do we need to rewrite the modules again ? Thanks

xjm’s picture

Nope, as documented in https://www.drupal.org/documentation/9#changes-in-d9, the code for modules will be the same so long as they remove deprecated APIs (see https://www.drupal.org/documentation/9#deprecated). Our goal is for modules to be able to run with Drupal 8 and 9 at the same time, so long as they clean up deprecated APIs. No rewriting the whole module anymore. It is a much smaller change for Drupal third-party modules than any previous update like Drupal 6 to 7, and what's more, modules can update whenever they have time, with clear instructions in the code, rather than having to wait around for an unnanounced release date when they have to rewrite modules.

freelylw’s picture

I think the main trouble its the D7 to D8, but not the D8 to D9, there's almost 1M sites still in D7, do they need to rewrite all the modules completely ? the majority of the drupal site owners are in the trouble, that should the main care for the upgrade to D9, but not just the D8-D9 . Thanks  

xjm’s picture

Yes, the D7 modules will indeed need to update to D8 first. D9 code is exactly the same as D8 code with deprecations removed and dependencies updated, but D7 code is of course very different from D8. So modules out there that still have not updated to D8 should do so as soon as possible, with the assurance that this is the last difficult upgrade they will make. Once they do update to D8, then updates will be easy from then on.

You can see https://www.drupal.org/blog/making-drupal-upgrades-easy-forever for an earlier post about how and why we changed the upgrade process, and how Drupal 7 to 8 should be the last painful upgrade.

Nowadays, more than 3 years after Drupal 8's release, the community has written lots of great resources out there to help D7 maintainers update their modules. This is the most important D9 readiness step you can take!

freelylw’s picture

are there anything still able to do to help the migration of D7 modules, as I said the web boom already done, there won't be that much passion for thousands developer to continue to develop the new modules for D8,9, and there are more options for website out there today. for more than 5 years now the D8 usage only go up to 300k, I guess there will be at least another many years for half million users stay in D7 because lack of the modules. as said, 800k users in trouble, but you talking about something else, sounds like you guys just try to get away from the D7 trouble asap, but leave these trouble to most of your users. so my question still, any more things can be done to help the D7/modules upgrade. 

xjm’s picture

Check out this resource: https://www.drupal.org/project/contrib_tracker

That's the official tracker for contrib ports. If a module you rely on doesn't have a D8 version yet, a helpful step is to simply file an issue in that project's issue queue, then post a related issue in the tracker according to the instructions.

Another way to help is to use the contrib tracker to find modules that need porting and offer support of some kind. Sometimes money helps; for example, an organization paid me $1000 to port a module I maintained from D6 to D7 back in 2011, and that was enough to help me commit the time to get it to the place where it had a stable release.

HongPong’s picture

Hi freelylw, the Drupal Module Upgrader is the best way to automatically scan D7 modules and in some cases get auto conversion to D8 or at least indicators of best practices to do. I am a co-maintainer and helped get fix a few things and get Drush 9 partly working on there (see the issue queue).

I am told by its original main developer that it works best as a scanner, not a rewriter. However it can rewrite quite a bit of code successfully.

mrandy543’s picture

It's not just outdated modules that are a problem. From my own experience I am still running on D7 and plan to stay there.  I tried moving to D8, and after spending a number of days trying to work out how the heck to update core with composer, I have given up.

The old manual update process worked fine for me in D7, it wasn't quite as simple as clicking an update button, but it worked.  The new update process via composer in D8 however totally alienates somebody like me with little experience of stuff like ssh. After over 10 years running drupal successfully it looks like I will probably be forced back to something like wordpress for our next site.

HongPong’s picture

I have found that core updates are a breeze in Pantheon for client site core updates (click and go), also have used Acquia Cloud without much trouble. (I am not commercially affiliated with either - selected Pantheon specifically for easier client experience).

I definitely sympathize with Composer being a headache and am looking forward to the improvements in updaters this year, which is definitely a community priority, as concerns like yours are certainly recognized. Simply put Composer was necessary to develop a properly structured code environment, even though it is at times really frustrating and sometimes inexplicable.

xjm’s picture

We are focused on making the upgrade experience much better -- Drupal 9 will be the same as the Drupal 8 LTS, with nothing like the difficult upgrade of Drupal 7 to 8. See the post above and https://www.drupal.org/documentation/9#changes-in-d9 for details. Thanks!

mikolos’s picture

Thanks for the clarity on Drupal's future versions. I have long been looking forward to an end to D7 and closer ties to Symfony. And the plans for D9 are very sensible.

Pages