In this blog post, we’ll have a look at how contributed Drupal modules can remove the core deprecation warnings and be compatible with both Drupal 8 and Drupal 9.
We already have the continuous upgrade path policy which should mean
that any up-to-date Drupal 8 module should work with Drupal 9.0.0, either with zero or minimal changes.
Drupal core has a proper deprecation process so it can be continuously improved. Drupal core also has a continuous process of removing deprecated code usages in core should not trigger deprecated code except in tests and during updates, because of proper deprecation testing.
The big problem for contributed modules aka contrib is the removal of deprecated code usage. To allow contrib to keep up with core’s removal of deprecation warnings contrib needs proper deprecation testing which is being discussed in support deprecation testing for contributed modules on Drupal.org.
This drupalci.yml will check all the Drupal core coding standards. This can be disabled by the following change:
phpcs: # phpcs will use core's specified version of Coder. sniff-all-files: false halt-on-fail: false
This file also only runs PHPUnit tests, to run legacy Simpletest you have to the following block:
run_tests.simpletest: types: 'Simpletest' testgroups: '--all' suppress-deprecations: false halt-on-fail: false
But if you still have those, you probably want to start there, because they won’t be supported in Drupal 9.
Last but not the least if you think the is module is not ready yet to fix all the deprecation warning you can set
As a contrib module maintainer or a contrib module consumer I encourage you to add this file to all the contrib modules you maintain or use, or at least create an issue in the module’s issue queue so that at the time of Drupal 9 release all of your favourite modules will be ready. JSONAPI module added this file in https://www.drupal.org/node/2982964 which inspired me to add this to DER in https://www.drupal.org/node/3001640.