Drupal 9 Prep - Get ready for the update
Wondering what the update to Drupal 9 will look like?
From Acquia's Ultimate Guide accessible here: https://www.acquia.com/resources/ebooks/ultimate-guide-drupal-9
Upgrading to Drupal 9 will be relatively straightforward First, make sure your environment is compatible with the requirements for Drupal 9. The key things to note here are that Drupal 9 requires PHP 7.3 or higher and that version requirements will be raised for MySQL (at least to 5.7), MariaDB (at least to 10.2), PostgreSQL (to 9.6) and SQLite (to 3.26). Also, for those using Drush, only Drush 10 is compatible with Drupal 9. Next, update Drupal core to the latest version. Drupal 8’s last minor release (8.9.0) will become Drupal 9. You should also remove any dependencies you are not using at this time. Make sure all your contributed modules are up to date (we’ll address custom modules below); beginning with Drupal 8.7.7, it is possible for modules to be compatible with both Drupal 8 and 9 at the same time. In other words, you can update modules to their latest versions on Drupal 8 and still have a fully working site with modules that are already Drupal 9 compatible as well — you can also 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.
Upgrade Tools To ensure you are using the most current versions of contributed modules, you should install and enable the Upgrade Status Module or use the Drupal Check tool. As of this writing, Upgrade Status has additional code coverage, which includes .info.yml files and Twig deprecated syntax detection. Run either to scan your contributed modules for compatibility issues and uses of deprecated code. If uncommitted patches are already available, you can use cweagans/composer-patches to apply patches to contributed modules where necessary and provide feedback to the patch authors and module maintainers about your experience with them. Use the same tools to analyze your custom modules and themes. Fixing problems found by these tools will result in code that is both Drupal 8 and Drupal 9 compatible. Of course, fixing problems manually is not your only option. You can, instead, use drupal-rector directly or the Upgrade Rector user interface to generate patches that address compatibility issues. As of this writing, a limited number of transformations are available in drupal-rector that help with getting some deprecated API uses removed automatically.
Typically, with our clients having large and complex websites, KWALL runs through the process in a slow and methodical flow of review and testing. With many major releases there can be a few speed bumps or critical bugs that come out. Once a major release is out we take time to test them out, see if there's any incompatibilities with modules, functions, or features used on the site. We also watch the issue queues to see what others are experiencing on the upgrade. Once the dust settles we start working through the update process. This has taken 4-6 months in prior major releases to have community created modules get up to date and mature with less bugs or issues. In the case of Drupal 9 we're expecting less of this as the update to the codebase isn't as aggressive.
While there will likely be some custom code to update for each of these complex sites with complex integrations the Drupal upgrade still should be quite quick and seamless.
A quick breakdown of the process will look like the following:
- Review the hosting used, does it meet the newer PHP and MySql / Database requirements
- Ensure there's a development environment, sync that with production
- Upgrade to the latest Drupal 8 version
- Run some checks on modules, codebase, perform test upgrades
- Run the final update to Drupal 9, check every integration, login, form, admin page, review logs
- Push code update to production, sync all environments
It sounds easier than it probably will be, but rest assured that we'll help you get to the next stage of Drupal and keep your organization moving.