Sector(s)

Team Members

Visit the site

Visit the site

Organizations Involved

Community contributions

This project was the reason for the creation of the Markdown Easy module.

DrupalEasy.com is the online home for a Drupal training and consulting firm. DrupalEasy has been using Drupal since Drupal 5, and has gone through each major Drupal upgrade, taking the knowledge from each upgrade and utilizing it for both our consulting and training clients.

Over the course of 2 months, the site was upgraded from Drupal 9.5 to Drupal 10.1 methodically, relying heavily on the Upgrade Status module to help guide the process. Portions of the upgrade were performed during live screenshares as a learning opportunity for DrupalEasy long-form training course students and alumns.

The upgrade faced several challenges; none that were unique to the site. This case study will provide an overview of the process and how each challenge was overcome.
 

About the project

When Drupal 10 was released in December 2022, we began the process of evaluating the level of effort to upgrade DrupalEasy.com. It was quickly apparent that there were a number of contributed modules in use on the site that did not yet have a Drupal 10 compatible version. This fact, combined with our available team bandwidth, led to the quick decision to delay the start of the project by a few months. 

The Upgrade Status module was used from the very beginning stages of the project to gauge the level of readiness of site dependencies, including custom modules and theme and hosting parameters (such as PHP version.) 

We decided to take a very methodical and measured approach to the upgrade, as we were not under any type of time deadline (other than the eventual end-of-life of Drupal 9,) and wanted to involve the DrupalEasy Learning Community as much as possible. Therefore, we broke the project up into several stages based on our site's configuration:

  • Upgrade contrib modules to Drupal 10 compatible versions
  • Upgrade from CKEditor 4 to CKEditor 5
  • Disable/replace deprecated core modules
  • Upgrade custom modules
  • Upgrade custom theme
  • Upgrade Drupal core

After we made a first pass at upgrading contributed modules to Drupal 10 compatible versions, we were left with a few modules that either didn't have updates yet available, but whose progress was moving along at a reasonable pace (we participated in issues to help the processes along). Still, there was a single module whose Drupal 10 future was still a bit murky: Markdown.

Our upgrade of CKEditor was fairly straight-forward, as the site wasn't using any contributed or custom CKEditor plugins. We updated our text formats, did some testing, and then disabled CKEditor 4. For other sites, who depend on contributed and/or custom CKEditor plugins, the process can be more complex. 

Next, we evaluated our use of several deprecated core modules, including Aggregator, Color, Quick Edit, RDF, and HAL. While some were enabled, we decided that none were crucial to the site, so they were uninstalled. 

DrupalEasy.com utilizes several small custom modules - one for displaying a podcast audio player and one for managing social media links for our authors. The former is actually part of one of our long-form training courses and already had a Drupal 10 compatible version available. The other was a simple upgrade with no deprecated functions, so all that was necessary was an update to the core_version_requirement in its *.info.yml file.

The custom theme involved a bit more work to upgrade. Based on the Bootstrap base theme, we waited for it to have an official Drupal 10 compatible release. Once that was complete, we did have some minor template file and SASS updates to make as we hadn't updated the base theme in more time than we'd like to admit. 

At this point, we felt we were in pretty good shape to proceed with the final step - the core upgrade - with one exception, the Markdown module. We use Markdown extensively on DrupalEasy.com, so going without it would've required us to update a large amount of content manually - this was not something we were willing to do. We considered getting more involved in the community effort to upgrade the Markdown module to be Drupal 10 compatible, but we felt that the complexity of the module (which we did not really require) was going to make the upgrade process a long one, with an uncertain time frame.

We then decided to take matters into our own hands and create a less-complex, more opinionated Markdown Easy module. The goal was to create a small, simple, and much more easily maintainable Markdown processor module.

With this final hurdle behind us, we proceeded to update Drupal core, Drush, the Upgrade status module, Drupal core development tools, our hosting dependencies, and associated dependencies in one fell swoop with Composer utilizing the "--with-all-dependencies" option. Once successful, we performed a "drush updb" and then deployed the update to a remote testing server for review. 

Overall, the elapsed time of the upgrade was several months (mainly idle time waiting for contrib modules to be upgraded). The total amount of active developer and testing time for the update was not kept track of, but is estimated at around 40 hours (including Markdown Easy development time and significant testing time). 

Overall, the process went as we expected - by far, this was the easiest major Drupal upgrade the site has been through. The maturity of the Upgrade Status module is, in our opinion, vital to the process. 

Thanks to Maritza Medina for the cover image above.

Why Drupal was chosen

Drupal was selected for this project as we are a Drupal training and consulting agency with a long history of using Drupal for our site. Additionally, DrupalEasy.com has been using Drupal since its inception. 

Technical Specifications

Drupal version:

Key modules/theme/distribution used:

Why these modules/theme/distribution were chosen

The Upgrade Status module is a proven best-practice module to utilize to help identify and overcome challenges when upgrading between major Drupal versions.