Screencast: Updating to Drupal 9 in 15 minutes

Drupal 9.0.0-alpha1 came out yesterday! I decided to take it for a test drive by updating this very blog from Drupal 8 to Drupal 9. It was easier than I expected.

I started by doing a bit of preparatory housecleaning to make the update process easier. I recommend you do the same! Specifically I:

  • Updated to the latest version of Drupal 8
  • Updated all of my contributed modules to their latest versions
  • Removed all contributed modules that were not enabled, drush pm-list --status=disabled --no-core
  • Removed my require-dev dependencies from composer.json to reduce the possible version conflicts (I'll add them back in later)

Some background on the Drupal application that I updated:

  • Dependencies are managed by Composer
  • There are no custom modules (though I show you how to deal with them a bit)
  • There is a custom theme

Check out this video to watch me perform the update and troubleshoot issues as they arise:

Recap

  • Use Composer's alias capability to "trick" various modules into considering Drupal 9.0.0-alpha1 to be 8.8.2: "drupal/core": "9.0.0-alpha1 as 8.8.2", This allows you to test against contributed modules that may not be 100% Drupal 9 ready.
  • Use Acquia's Drupal 9 Deprecation Status page to quickly search for the Drupal 9 readiness status of contributed modules and find related issues and patches
  • Use cweagans/composer-patches to apply patches to contributed modules where necessary
  • Use Drupal Check to scan custom modules and themes for deprecated code usage
  • Clear caches, reload pages, fix issues, and repeat until things stop blowing up!

The process ended up being far smoother and faster than I had expected. Total time was actually a bit less than 10 minutes to get a working updated application locally.

By the time that we have a beta or stable release, I expect it to even better. For those of you following along at home, good luck!

Have you carried put any performance metrics for before and after the update?

Great video! I would note that drupal-check does not detect deprecated Twig syntax use and deprecated Drupal library use. So when you ran drupal-check on your theme, it really only parsed as much as the PHP code of the theme. See https://github.com/mglaman/drupal-check/issues/29 for an issue to introduce these features.

Until those are available in drupal-check, you can install https://www.drupal.org/project/upgrade_status and use it with drush. That has twig deprecated syntax checking and deprecated library checking, as well as core_version_requirement validation, etc. That said, funnily enough, Upgrade Status itself is not yet Drupal 9 compatible due to Drupal 8.8 deprecations involved. There is a patch for that too :D

Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.