It feels like Drupal 9 was just released, but that was actually in 2020. This year its end of life is already coming up in November 2023 instead. But why does it go end of life this year and what to keep in mind for this process?
Your Drupal 9 may already be out of security support
Let's first clear up a popular misconception that if you are running Drupal 9, you only need to deal with the ultimate end of life in November. The Drupal project comes out with new minor versions of Drupal every 6 months, such as Drupal 9.0, 9.1, 9.2, etc. While we say Drupal 9 is supported until November 2023, that does not mean all of 9.0, 9.1, 9.2, etc. because each of these minor versions are only supported for 12 months. See https://www.drupal.org/about/core/policies/core-release-cycles/schedule
If you are on a minor Drupal version that came out more than 12 months ago, you are out of security support even if the major version is not yet end of life. Look at updating to a current minor version as soon as possible.
Specifically now, as I'm writing this, Drupal 9.4 and 9.5 are still supported but earlier minor versions will have no security fixes. Once Drupal 10.1 comes out in June, security support for 9.4 will end. This means that the final four months for Drupal 9 support will only cover the 9.5 series!
Why is Drupal 9 end of life in November 2023?
While minor versions go out of security support every 12 months to keep the security supported versions to a reasonable number, the end of life for Drupal 9 altogether is different. This is dictated by two major dependencies of Drupal 9: Symfony 4 and CKEditor 4 both going end of life then. Neither is possible to maintain within the Drupal project, so users need to move on to Drupal 10.
Drupal major version upgrade toolbox
Don't be concerned, the Drupal community worked out the processes and tools to help with these transitions.
First, use Upgrade Status to get a status assessment of your Drupal 9 site. A visual report will let you know of the next steps needed for contributed projects, custom code and the site environment itself as well.
Acquia is running a dashboard of the readiness data of all contributed Drupal projects. While I don't think you will need this dashboard in your upgrade process, it shows the superb readiness of the ecosystem. Right now, 70% of the top thousand projects are already compatible (three months after the release of Drupal 10). Almost all projects that are not yet themselves ready have a compatibility patch waiting in their issue queue. You can update these projects using the composer-drupal-lenient Composer plugin.
A critical tool that Upgrade Status will suggest where applicable is Drupal Rector, which automates compatibility fixes in your custom code thanks to its various patterns built to generate updated API calls.
CKEditor 4 and other removed modules
As indicated above, CKEditor 4 goes end of life so that, alongside various other modules in Drupal 9 went through a deprecation process and removal in Drupal 10. The other modules are Aggregator, QuickEdit, HAL, Color and RDF. Upgrade Status will help guide you to make decisions on what to do about these. Each was moved to a contributed project on drupal.org, so you can still use them. This is especially discouraged for CKEditor 4 though as the editor itself will not receive security support from its' developers.
While replacement features were not added for most of the removed modules, one exception is the new CKEditor 5 module which was already added to Drupal 9 to support your upgrade. This includes a built-in process that converts your existing text formats when you switch to them to the new editor. However, make sure to update any versions of contributed projects that provide CKEditor plugins to releases that support CKEditor 5 as well.
Removed old themes
Moving off of Drupal 9, you may also encounter the removed themes: Bartik, Seven, Classy and Stable.
Bartik was the prior default theme of Drupal and Seven was the prior default admin look. Drupal 9 already moved to Olivero for the frontend and Claro for new installs. It's usually easier to change the back-end theme than the front-end theme however if you are using Bartik it is likely that you did not customize it too much. Either way, both will need to be considered.
Classy and Stable were used as base themes, so if your theme depends on them, you should consider adopting the starterkit theme and use the starterkit theme generator to ensure a stable codebase going forward.
Start most steps on Drupal 9 now
You need to make your decisions about themes, your editor and any potential replacements for the removed components on Drupal 9, so you should start now. Update to a fresh version of Drupal 9 to retain security support while you morph your site build step by step to be more ready for Drupal 10. At the end all will be left is to update to Drupal 10. See you on the other side soon!