Drupal 9: We Did It.

Just before the holiday break, a brave handful of devs adventured through terrifying dependency chains and deprecations to bring Islandora on Drupal 9 to us all. There were many twists, turns, and bumps in the road, but in the end, they pulled it off. Islandora is now compatible with both Drupal 8 and 9! In fact, as an outcome of this sprint, keep.lib.asu.edu is now running on Drupal 9 in the wild.  Oh, and did we mention that it's kind of a multi-site? Maybe it's not exactly what a multi-site was in 7.x, but prism.lib.asu.edu is running happily alongside.

Moving Islandora to Drupal 9 is a significant accomplishment for a small crew of volunteer developers just before the holidays. In particular, it was a lot of work to thread the needle and keep support for 8 while unlocking 9. Not to mention all the testing that had to be done.  And as an added bonus, everyone's favourite CI platform, Travis, made a guest appearance just to keep things interesting. Many thanks to everyone who powered through and brought this over the finish line. 

In order to support both 8 and 9 concurrently, there's a few things you'll need to be ready for when this code is eventually released.

  • To use Composer 2 with Drupal 8, you need PHP 7.3+.
  • You can no longer install/maintain the drupal console using Composer 2. But you can totally install it via other means.
  • For Drupal 9, you need PHP 7.4+. This is due to a dependency requiring PHP 7.4 in Drupal 9.
  • We had to leave behind some modules for Drupal 9 compatibility.  You'll need to uninstall and remove these modules from your site if you want Drupal 9:
    • hook_post_action
    • libraries
    • name
    • permissions_by_term

As for how you can get this code, it's available right now on all 8.x-1.x branches of our modules in Github.  For the less adventurous out there, this code will be included in the next release.  Which means we have to tackle documenting/demystifying the update process.  And given the size of the changes required for Drupal 9, it feels like it's about time we start formally providing changelogs.  The changes aren't unreasonable, but they are significant enough that we wouldn't want anyone to be caught by surprise.

Also, now that we support two versions of Drupal at the same time, what do we call this?  Islandora 8 using Drupal 9?  Islandora 9?  Dare I say just Islandora? That might seem like a silly question, but it has implications that we as a community need to consider. Besides, we all know that naming is the hardest part of programming ;)

As always, there are so many people to thank for continuously improving Islandora. This software keeps getting better because awesome people give their time and talent to help make it the best it can be. Thank you to everyone who took part in this sprint:

  • Daniel Aitken - discoverygarden
  • Jordan Dukart - discoverygarden
  • Nick Ruest - York University
  • Seth Shaw - University of Nevada, Las Vegas
  • Alan Stanley - Agile Humanities
  • Jared Whiklo - University of Manitoba
  • Eli Zoller - Arizona State University

Be sure to thank one of these fine people next time you bump into them in zoom or slack.  And we'll be doing more sprints soon.  Details to come.