Content Management
Drupal 9 Ships, and the Upgrade Is Boring. That's the Achievement.
Eight years ago, when Drupal 8’s ground-up Symfony rebuild was announced, we published a warning. The 7-to-8 crossing would be re-platforming trauma, budgeted and staffed as such, whatever the release notes called it. It was. The migration engagements of the mid-decade confirmed the forecast line by line, and the community’s own retrospectives said the same.
This month, Drupal 9.0.0 shipped, and the post we get to write is the turnaround’s completion. The upgrade is boring, and the boredom is the achievement. Drupal 9 is built from Drupal 8’s final minor release, 8.9, with deprecated code removed and dependencies updated. A well-maintained 8 site’s path to 9 is a deprecation scan, fixes for whatever the scan flags, and an afternoon’s update. An update, not a migration, in the precise senses we have always distinguished.
The community promised, after the 8 trauma, that there would be no more rewrites at that scale. Majors would ship from minors, and the platform would modernize continuously rather than in episodes. This month it delivered, on schedule. The anticlimax deserves the emphasis that anticlimaxes never get, because underneath it is a genuine change in what the platform costs to own.
How the boring was engineered, briefly
The mechanics deserve a section because they generalize past Drupal. The 8-era release process introduced two instruments that made this month possible. Semantic minors with continuous feature delivery: Drupal 8 shipped new capability in scheduled minor releases for five years. The modernization that once piled up toward a big-bang major was instead absorbed bit by bit by every maintained site. By 8.9, a current site was already, functionally, running most of what 9.0 is.
Deprecation as a managed pipeline: old APIs were formally deprecated with replacements documented and tooling shipped. The deprecation scanners, the IDE integrations. ‘Ready for 9’ became a measurable, step-by-step property of a codebase rather than a leap of faith. Contributed modules crossed en masse before release day, in visible contrast to the 8-era module lag that stranded early adopters.
The result: the major version became a cleanup event rather than a rebuild. Remove what was already deprecated. Update what was already scheduled. The platform steps forward with its ecosystem walking beside it. Readers will recognize the pattern this joins. It is the maturity model serious platforms are settling on. WordPress’s compatibility ethic. The evergreen browsers. The cloud services’ constant delivery. Steady updating replaces big-bang migration, and the total cost of owning the platform changes shape. Maintenance terms, not rebuild terms, which is a different conversation in every budget meeting.
The two audiences, addressed separately
Maintained Drupal 8 sites: congratulations, take the afternoon. Run the deprecation scan. If your maintenance practice has been current, it is likely already clean or nearly so. Fix the residue, schedule the update through the standard staging path, and annotate the change. Your 9 crossing is the payoff on every boring maintenance quarter since 2015, and the payoff is denominated in afternoons.
Drupal 7 sites: the comfortable era of deferral just ended. The 7 population remains enormous, with higher education and government prominently in it. 7-to-9 is a true migration. The 8-era rebuild, now pointed at 9, with all the content-model and module work that entails. The countdown is real. Community support for Drupal 7 has a published end, currently slated for late 2022, pandemic-extended once already. After that, the security-coverage physics take over. Drupal 9’s arrival starts that clock in earnest. The migration target is now stable and modern. The tooling is mature. Every quarter of delay from here forward is spent against a fixed horizon.
The planning advice, for the 7 tier: scope now. The content audit, the module inventory, and the integration census, applied to your own site. Budget across fiscal years deliberately rather than in a deadline scramble. Treat the migration as the redesign chance it genuinely is. Planning beats deadlines. Ask us how we know, and read our 2014 coverage if the security half of the argument needs refreshing.
A worked example from the bench
A representative well-maintained Drupal 8 site makes the point. Keep it current on 8.9, scan for deprecated code, update contributed modules with Drupal 9-ready releases, and handle the remaining custom-code changes as ordinary API updates. For a disciplined build, the work can be measured in days rather than a major migration program.
Contrast the parallel case the same month. A Drupal 7 site began its migration scoping. The same meeting produced a content audit plan, a sixty-module inventory with successor mapping, and a two-year budget conversation.
Same platform family, same month, same client sector. An afternoon versus a program. The difference was not talent or budget. It was which side of the 8-era rebuild each site stood on, and the 7 sites reading this have just seen both futures priced side by side.
What the release model proves
The larger point. This month is what accountability looks like in open source, and it deserves naming as such. The 8 transition’s costs were real. We and the community both said so at the time. The project’s response was not defensiveness but engineering. A release model redesigned so the trauma could not structurally recur. Promises made in public, and now kept in public, on schedule, verifiably.
That sequence runs costly transition, honest reckoning, structural fix, boring delivery. We weigh it more heavily than any feature list when evaluations ask ‘can we trust this platform for a decade.’ It is evidence about how the steward behaves when things go wrong, which is the only evidence that predicts anything.
Drupal earned this month’s anticlimax the hard way, and the sites that stayed current earned their afternoon the boring way, which is the only way that compounds. Two audiences, two messages, one file note for every platform we cover. Majors that arrive as afternoons are not luck. They are release engineering, purchased years earlier, by communities that decided the trauma should not happen twice. May the pattern spread, and may the 7 sites read the clock.