Drupal 9 was released June 3, 2020

This is the easiest major Drupal upgrade in a decade! Most of the upgrade steps involve making your Drupal 8 site all up to date with latest Drupal core and contributed projects. Thousands of contributed projects gradually moved to use the latest Drupal 8 APIs (which are still included in Drupal 9) and removed deprecated APIs (which are removed from Drupal 9). Dries Buytaert showed how the complete process looks like in his State of Drupal keynote at DrupalCon Amsterdam 2019. Here is the Drupal 9 part:

Acquia tools for Drupal 9

Get contributed projects ready

The key tools to use are:

  • Upgrade status on the web UI or with drush: to identify most required code changes
  • Drupal-rector or Upgrade rector: to automatically fix some required code changes (manual review still needed)
  • DrupalCI testing adjustments: to run automated tests against Drupal 9 and/or Drupal 8 with deprecation failures

Read more about Upgrade Status DrupalCI testing, Drupal-rector and Upgrade Rector. There are also specific suggestions for drupal.org maintainers about branching and which deprecated APIs to follow when.

Step by step guide:

Check project status

  1. Have a local environment set up with Drupal 8 and upgrade_status. Also add drupal-rector or upgrade_rector to fix most issues automatically.
  2. Either take your own drupal.org projects or look for projects with a Drupal 9 plan linked from their project page (which helps you contribute to the right outstanding tasks in a way that the maintainer can work with). If neither works out, look for issues tagged "Drupal 9 compatibility" in projects you are interested to help with.
  3. Use the tool you have from step 1 to identify and automatically fix or manually fix deprecated API use. Drupal-rector generated patches are available here as well.
  4. Submit the suggested fix to the drupal.org project (if the issue did not exist yet, submit as a new issue and cross-reference under the Drupal 9 plan issue of the project).
  5. Work with the project maintainer to get the issue committed to the Drupal 8 project.

Get your own code ready

You should have full control over what changes are made to your own code. Use the tools mentioned above to find and fix problems in your own code. Drupal 8 code with deprecated API use removed should still flawlessly work with Drupal 8, so you can do almost all the work (and in most cases all the work) to make your own code ready for Drupal 9 anytime, assuming you keep your contributed modules and Drupal core itself up to date on your setup.