Assessing your Drupal 9 Readiness, Part I: Estimate, plan and action. Without tears.
[Update] Since writing this blog post Drupal have announced the Drupal 7 end of life has been extended to November 28 2022 to help those businesses impact buy the Covid-19 pandemic. Drupal 8 end of life will remain the same. You can read more about the update on the Drupal.org website.
It has already been a year since So long Drupal 7, welcome Drupal 9, and now we are just a few days away from the Drupal 9 release: 3rd of June 2020. Save the date.
There is a lot of excitement within the community, mixed with the stress of final touches. You may have read a lot about how easy it will be to upgrade, all the tools you need to check how “Drupal 9 ready” you are and memorised the commands you need to actually do it.
But… have you actually assessed your site(s)? Do you know how long the upgrade will take? Can you communicate with some confidence to your stakeholders, the date the migration will happen? What if something goes wrong? And actually… how will you check if something has gone wrong?
In this series of blog posts I will share the models and metrics we have been using at Manifesto to assess our Drupal 8 projects.
How late am I
Let’s start with a good news (+ Drupal 7 end of life has since moved to November 28, 2022):
“Drupal 9 will be released alongside Drupal 8.9, a long-term-support (LTS) minor release of Drupal 8 ”
Drupal 9 release date and what it means – Drupal.org
That gives you until about November 2021 to upgrade, which I promise is plenty of time.
However the process itself comes with many uncertainties, unless you assess the project as early as possible. So don’t wait, assess as soon as you can.
How Drupal 9 ready am I?
The first step is common to every project: install the wonderful Upgrade Status and scan your modules, themes and profiles. I suggest to first scan your custom code, and leave the contrib project for later, as we will plan the eventual work in different ways.
But before starting, why not review the list of your enabled modules and themes? Reducing the list will boost the work below as well as your site performances. Do you still need the Migrations modules enabled? Those Features can now be disabled? Do you really depend on that module, or that theme? Can’t we decouple, remove the dependencies and disable them? If any of these questions applies to you please go ahead and reduce the number of enabled modules, before reading on.
Check Drupal 9 environments requirements
Hosting platform requirements have been upgraded, so you want to first check you are ready for this step. Nothing major, so you are probably already covered. Drupal is only getting inline with modern technologies together with the deprecation policy of legacies.
You can either ask your provider or check yourself within the Upgrade Status module report page.
Drupal 8 already supports the same requirements, although some only from late versions i.e. PHP 7.3 is supported since version 8.6.4.
Stay up to date with Drupal core releases
However, if you are using an older version you should upgrade as soon as possible to the latest because you are not only missing the opportunity for an easy upgrade, but also opening to security issues and incompatibility with contrib modules.
Upgrade Status report page reminds us “Upgrades to Drupal 9 are supported from Drupal 8.8.x and Drupal 8.9.x” so let’s make sure you meet this requirement as soon as possible.
Estimate and plan work against custom modules and themes
If you have been a good developer, likely your custom modules and themes will have none or one change. If you haven’t, it’s likely you’ll need to put in a bit more work in order to be D9 ready.
In order to assess the entirety of the work before upgrade, this is the model we have been using to group and estimate:
- How many modules/themes are D9 ready: Good job! No work for those.
- How many modules/themes requires only info.yml changes: Estimate between 5 and 10 minute, depending on your confidence with the change.
- How many modules/themes with minor changes. These are all modules with one or more deprecations (other than the info.yml). Our definition of minor in here means “the change can be done and tested within a working day”. I.e. swapping drupal_set_message() calls with the Messenger service. We add to this group modules with less than 10 deprecations and the errors/warnings being of max 3 types (so the changes are similar). You can adjust the level of severity according to your team capabilities and velocity, but as you would have already understood we allocate between 1 and 8 hours for each.
- How many modules/themes require major refactoring: These are all the remaining projects, and if they are here it’s because doing the work and testing will require more effort. Assessing this group can be more difficult than just looking at the Upgrade Status report, and you may escalate work from the previous group to this one while in the action phase. That’s fine. Estimate anything more than a day.
Estimate work against custom modules and themes and start planning the work straight away. If you have followed the steps above and you are on a supported platform and on either Drupal 8.8 or 8.9 then you can already upgrade your custom module to be Drupal 9 ready.
Don’t wait for Drupal 9 to be out, and don’t wait to do all the upgrades at the same time! Better not be surprised by a Big bang update, and well worth going through this adventure in small, well defined and planned steps.
If your custom code depends on Drupal core only, then at the end of this step your job is done. If however your code depends on contrib projects then you may need a second round of assessment after estimating and planning the work against contrib modules and themes.
Already enough to digest, get ready for round two
I think that’s enough tasks to digest for now, so I’ll end there and leave the custom module assessment for this follow-up blog post.
However if you want to get ahead and understand Drupal.org contrib modules readiness please join Drupal 9 Porting Weekend May 22-23, 2020. This is a worldwide virtual contribution event helping contrib projects to be Drupal 9 ready.
It’s as easy as fun, so don’t be shy! There will be mentors helping first time contributors and tools and post to make it an enjoyable experience. Check Kristen Pol’s blog post about the last Drupal 9 porting event just a few weeks ago.
Share the word with #Drupal9Weekend
And if you are London based, why not RSVP to the event on our Drupal London Developers meetup, and join the #london channel in the Drupal slack.
See you through a screen at the Drupal 9 Porting Weekend, and stay tuned for next chapter of this series.