Thanks to 13 wonderful contributors, Upgrade Status 4.2.0 is out today! The new version is beautiful in Gin (light and dark mode), but even looks better than before in core's Claro. It improves continuous integration compatibility and has more graceful parsing of Twig templates. It has an updated list of rectorable fixes and is more compatible with Nikic PHP Parser. Thanks (in alphabetical order) to andypost, bbrala, estherp, joseph.olstad, lhridley, loze, mglaman, moshe weitzman, mpaulo, Pasqualle, ressa, risforrocket and saschaeggi for their contribution! Read on to see all the new things!
Upgrade Status
Today I made a new 4.1.0 feature release of Upgrade Status available. Thanks to these 23 contributors: DrupalDope, Grimreaper, MacSim, PapaGrande, Shubham Rathore, abramm, akshay.singh, apaderno, arti_parmar, gorkagr, joelpittet, lamp5, leymannx, lostcarpark, marvil07, mrinalini9, nsavitsky, prudloff, randallquesadaa, rishabjasrotia, samir_shukla, thakurnishant_06 and wells.
The new release adds Drush 12 support, fixes PHP 8.2 and 8.3 compatibility and adds Drupal 11 environment readiness checking. Various additional bugs have been fixed related to CSS deprecation checking, info file handling and so on. This is also the first tagged release that relies on GitLab CI entirely for testing in three PHP and core version combinations.
With the Drupal 8 end of life in a little over two months and Drupal 10's release next year, this is the time of transitions again at Drupal. However, while Drupal 7 to 8 (or 9) was a big move, the transitions from 8 to 9 and 9 to 10 are much smaller and mostly automated.
Drupal 10 is planned to be released in June, August or December 2022 and the tools are getting ready to support that. The two key tools will be the same as the previous upgrade: Upgrade Status and Drupal Rector.
Matt Glaman has been doing amazing work recently in the underlying components of both tools. Thanks to his work on updating phpstan-drupal for Drupal 10 support, Upgrade Status checks deprecated API uses on Drupal 9 too. Since my last update on that, I added reporting of deprecated modules and new system requirements as well.
I presented on the overall status of the Drupal 10 initiative in December at DrupalCon Europe. Then posted an update about the initiative one week ago on the Drupal Core blog.
More recently I worked on making Upgrade Status work meaningfully on Drupal 9 with Andrey Postnikov. Released Upgrade Status 8.x-3.5-alpha1 today to let you test this out. (You may need to use composer require --dev phpspec/prophecy-phpunit
to make your phpunit setup complete).
How is this different from prior releases of Upgrade Status? It should run very similar on Drupal 8 as it did before. However prior releases of Upgrade Status explicitly forbid running it on Drupal 9 as the UI was very focused on the transition from 8 to 9. Now the UI elements are adapted and in some cases more general to support running either on Drupal 8 or 9.
Last time I posted an update on Upgrade Status was four months ago. It is fair to say the Drupal contributed project landscape has changed quite a bit in the meantime and Upgrade Status should evolve too. Why? The primary role of Upgrade Status is to help get your site components updated for Drupal 9 compatibility. Most of your site components are contributed modules. In many cases, either your local copies or the remote available updates will already be compatible. 38% of Drupal 8 compatible modules are now Drupal 9 compatible (3535 out of 9258) and most others have a patch waiting to land to either improve or complete compatibility.
Upgrade Status is growing to be an almost (if not entirely) indispensable tool for Drupal 8 sites to asses and prepare for their upgrade to Drupal 9. With the latest additions of the Drupal core version and environment checklist as well as additional deprecation checking for Twig, deprecated libraries, deprecated theme functions, info.yml files and composer.json files, the results are much more complete. Unfortunately not all of those are possible in drupal-check due to Drupal not being bootstrapped there. With the addition of two drush commands though, this expanded set of results is available for the command line as well, including for CI system integration.