<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Dries Buytaert</title>
    <description>On digital experiences, Open Source, Open Web, Drupal, and our digital future.</description>
    <link>https://dri.es/</link>
    <atom:link href="https://dri.es/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Why Drupal CMS matters</title>
      <link>https://dri.es/why-drupal-cms-matters</link>
      <guid>https://dri.es/why-drupal-cms-matters</guid>
      <pubDate>Tue, 19 May 2026 20:20:33 -0400</pubDate>
      <description>&lt;p&gt;Last week at &lt;a href=&quot;https://drupalsouth.org/&quot;&gt;Drupal South&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/pameeela&quot;&gt;Pamela Barone&lt;/a&gt; delivered &lt;a href=&quot;https://www.youtube.com/watch?v=tT5xOX-GRnI&quot;&gt;a keynote on Drupal CMS&lt;/a&gt;. Her talk is one of the clearest articulations I&#039;ve seen of what Drupal CMS is, why it exists, and where it&#039;s headed. That shouldn&#039;t come as a surprise because Pam is the Product Lead for Drupal CMS.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;div style=&quot;position: relative; padding-bottom: 56.25%; height: 0&quot;&gt;&lt;iframe src=&quot;https://www.youtube-nocookie.com/embed/tT5xOX-GRnI&quot; style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%&quot; loading=&quot;lazy&quot; title=&quot;YouTube video&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Pam quoted a familiar Drupal saying: &lt;q&gt;Drupal makes hard things possible, but it also makes easy things hard.&lt;/q&gt;. The room laughed because it&#039;s true.&lt;/p&gt;
&lt;p&gt;Her keynote was about how Drupal CMS is helping to fix that. Drupal CMS is making Drupal easier to learn, easier to use, and easier to sell, without removing any of Drupal&#039;s power and flexibility. It brings visual page editing, a smoother path for new developers, and better project economics.&lt;/p&gt;
&lt;p&gt;And these improvements are not just interesting for smaller projects. Universities, governments, and large enterprises want the same benefits. That is why Drupal CMS matters at every scale.&lt;/p&gt;
&lt;p&gt;Pam also explains how Drupal CMS sits on top of Drupal Core, why it is not a &lt;a href=&quot;https://dri.es/tag/drupal-distributions&quot;&gt;Drupal distribution&lt;/a&gt;, how it gives digital agencies leverage, what site templates unlock, and how &lt;a href=&quot;https://dri.es/tag/drupal-canvas&quot;&gt;Drupal Canvas&lt;/a&gt; reshapes the page building experience.&lt;/p&gt;
&lt;p&gt;If you watch one Drupal video this week, make it Pam&#039;s!&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The gap between Drupal and its reputation</title>
      <link>https://dri.es/the-gap-between-drupal-and-its-reputation</link>
      <guid>https://dri.es/the-gap-between-drupal-and-its-reputation</guid>
      <pubDate>Sun, 17 May 2026 18:20:51 -0400</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/blog/walking-upstream-1280w.jpg&quot; alt=&quot;A figure in a red jacket walks up a hillside against a flow of glowing blue petals carried on the wind.&quot; width=&quot;1280&quot; height=&quot;853&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;I saw two thoughtful posts in my LinkedIn feed over the last week that I wanted to reshare here before the LinkedIn feed buried them. Both were spot on, honest, and deserve a longer shelf life.&lt;/p&gt;
&lt;p&gt;The first was from &lt;a href=&quot;https://www.linkedin.com/feed/update/urn:li:activity:7460624673861586944/&quot;&gt;Hynek Naceradsky&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&#039;m pissed.&lt;/p&gt;
&lt;p&gt;Not at Drupal. At the people confidently hating on it without ever having understood what it actually does.&lt;/p&gt;
&lt;p&gt;&amp;quot;Drupal is outdated.&amp;quot; &amp;quot;Drupal is too complex.&amp;quot; &amp;quot;Nobody uses Drupal anymore.&amp;quot;&lt;/p&gt;
&lt;p&gt;Tell that to the EU institutions, governments, universities, and enterprises quietly running mission-critical platforms on it.&lt;/p&gt;
&lt;p&gt;Here is what actually gets me though: the Drupal community lets this narrative win.&lt;/p&gt;
&lt;p&gt;I am guilty of this too.&lt;/p&gt;
&lt;p&gt;We literally have thousands of contributed modules, maintained for free, by people who owe you absolutely nothing. The security team responds faster than most paid vendors. The community has been showing up for 20+ years.&lt;/p&gt;
&lt;p&gt;And yet we&#039;re somehow losing the PR war to frameworks that can&#039;t handle a proper content workflow without three paid plugins and a prayer.&lt;/p&gt;
&lt;p&gt;Drupal people: talk louder. Write the posts. Go to the meetups. Tell the stories, fight for Drupal.&lt;/p&gt;
&lt;p&gt;Because the Drupal community is honestly the best thing in Open Source, and both it and Drupal deserve way better than silence.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The second was from &lt;a href=&quot;https://www.linkedin.com/feed/update/urn:li:activity:7460931100840996864/&quot;&gt;Thomas Scola&lt;/a&gt;, writing from a Drupal AI event in New York (lightly trimmed):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I overheard a couple people say, &amp;quot;Drupal? Is that still around?&amp;quot;&lt;/p&gt;
&lt;p&gt;Hell yes it is.&lt;/p&gt;
&lt;p&gt;And not only is it still around, I&#039;d argue pretty heavily that Drupal is uniquely positioned for what comes next with the agentic web.&lt;/p&gt;
&lt;p&gt;API-first before API-first was cool and trendy. Structured content that actually makes sense. Mature permissions, workflows, governance, integrations.&lt;/p&gt;
&lt;p&gt;A lot of platforms are now scrambling to figure out how AI fits into what they already built.&lt;/p&gt;
&lt;p&gt;Drupal doesn&#039;t have to force it. The architecture has been there.&lt;/p&gt;
&lt;p&gt;But honestly, the tech is only part of it. The community is what always gets me. The people, passion and innovation. [...]&lt;/p&gt;
&lt;p&gt;What comes next? Who knows.&lt;/p&gt;
&lt;p&gt;But if I&#039;m betting on a community to adapt, build, and help define that future, I&#039;m putting my money on this one, and on what we&#039;ve all built together.&lt;/p&gt;
&lt;p&gt;For a platform people love to ask if it&#039;s &amp;quot;still around&amp;quot;, it feels more relevant than ever.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I could not agree more with both posts. Drupal is one of the strongest Open Source platforms out there right now, but too few people realize it. The &lt;a href=&quot;https://www.drupal.org/&quot;&gt;Drupal community&lt;/a&gt; has been modernizing the platform faster than its reputation evolves.&lt;/p&gt;
&lt;p&gt;If the loudest narrative about Drupal is that it is outdated, people will keep repeating it, even when it is wrong. AI systems will too, because they absorb the same narratives, blog posts, forum threads, and social media the rest of the industry does.&lt;/p&gt;
&lt;p&gt;The danger is not just that Drupal is misunderstood today. It&#039;s that the gap between perception and reality may be &lt;em&gt;growing&lt;/em&gt;, not shrinking.&lt;/p&gt;
&lt;p&gt;The narratives we reinforce today become part of how AI describes Drupal tomorrow. The Drupal community&#039;s silence today becomes tomorrow&#039;s AI consensus.&lt;/p&gt;
&lt;p&gt;So if you&#039;re in the Drupal community, take Hynek&#039;s advice and help set the record straight. Not for AI, but for people. Write about the great work happening in Drupal: share the case studies, the technical breakthroughs, the AI innovation, the shared learnings, and the hard problems being solved every day.&lt;/p&gt;
&lt;p&gt;We need to spend a lot more time explaining where Drupal fits, the kinds of problems it solves well, and why so many organizations believe in Open Source and the Drupal community.&lt;/p&gt;
&lt;p&gt;I know many people in Open Source dislike marketing or self-promotion. I do too, sometimes. But if we don&#039;t document what is great about Drupal, others will define Drupal for us.&lt;/p&gt;
&lt;p&gt;Every accurate case study, technical blog post, demo, presentation, or community success story helps future developers, evaluators, and AI systems understand what Drupal actually is.&lt;/p&gt;
&lt;p&gt;Drupal does not need hype. It needs a better public record.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Acquia builds Drupal funding into its partner program</title>
      <link>https://dri.es/acquia-builds-drupal-funding-into-its-partner-program</link>
      <guid>https://dri.es/acquia-builds-drupal-funding-into-its-partner-program</guid>
      <pubDate>Thu, 14 May 2026 17:12:53 -0400</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/images/drupal/blue-hearts-1.jpg&quot; alt=&quot;A blue heart&quot; width=&quot;1224&quot; height=&quot;753&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Today &lt;a href=&quot;https://www.acquia.com/&quot;&gt;Acquia&lt;/a&gt; announced something I&#039;m really proud of. We&#039;re calling it the &lt;a href=&quot;https://www.acquia.com/partners/fair-trade-initiative&quot;&gt;Acquia Fair Trade Initiative&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When an Acquia partner closes a deal, 2% of that deal flows directly to the &lt;a href=&quot;https://www.drupal.org/association&quot;&gt;Drupal Association&lt;/a&gt;, credited in the partner&#039;s name, to &lt;a href=&quot;https://dri.es/what-it-costs-to-run-drupal-infrastructure&quot;&gt;fund Drupal&#039;s infrastructure&lt;/a&gt; and long-term growth. This is in addition to the millions of dollars Acquia already invests in Drupal each year.&lt;/p&gt;
&lt;p&gt;Imagine an Acquia partner closes a $100,000 Drupal deal with Acquia. $2,000 goes to the Drupal Association, attributed to that partner. The 2% comes from Acquia, not from partner margins, so the partner keeps their full revenue and incentives.&lt;/p&gt;
&lt;p&gt;The donation is publicly attributed in the Acquia Partner Portal and counts toward the partner&#039;s standing in the &lt;a href=&quot;https://www.drupal.org/drupal-services&quot;&gt;Drupal Association&#039;s Certified Partner Program&lt;/a&gt;. It is recognized as financial support for the Drupal Association, separate from non-financial contributions like code, case studies, or community participation.&lt;/p&gt;
&lt;p&gt;Most of all, I like that this program is structural. It is not a one-time gift or sponsorship campaign. It is built into the economics of Acquia&#039;s partner program, so Drupal&#039;s funding grows automatically as Acquia and its partners grow.&lt;/p&gt;
&lt;p&gt;Too often, funding for Open Source projects depends on periodic fundraising or individual goodwill. That can work, but it rarely scales in a predictable way.&lt;/p&gt;
&lt;p&gt;Open Source sustainability works best when incentives align. With the Fair Trade Initiative, the Drupal Association receives more predictable funding, partners receive recognition through the Drupal Association&#039;s Certified Partner Program, and Acquia invests in the long-term health of the Drupal ecosystem its business depends on. And yes, this also creates more incentive for partners to work with Acquia on Drupal projects. Drupal wins, Acquia&#039;s partners win, and Acquia wins too. That is what incentive alignment looks like.&lt;/p&gt;
&lt;p&gt;I set a reminder for myself to report back in a year, maybe sooner. I&#039;m curious to see what this model can become.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>AI-generated Rector rules for Drupal</title>
      <link>https://dri.es/ai-generated-rector-rules-for-drupal</link>
      <guid>https://dri.es/ai-generated-rector-rules-for-drupal</guid>
      <pubDate>Wed, 06 May 2026 14:41:48 -0400</pubDate>
      <description>&lt;p&gt;Keeping up with major Drupal Core releases takes real effort. Each release deprecates APIs and introduces new coding patterns, forcing module developers to update their code.&lt;/p&gt;
&lt;p&gt;That is how most software evolves: old patterns are gradually replaced by better ones.&lt;/p&gt;
&lt;p&gt;Tools like &lt;a href=&quot;https://github.com/palantirnet/drupal-rector&quot;&gt;Drupal Rector&lt;/a&gt; help automate parts of that work, but still rely on hand-written rules. Historically, that hasn&#039;t scaled well. Writing Rector rules is often more tedious than difficult: reading change records, understanding edge cases, finding real-world usage patterns, and testing rules.&lt;/p&gt;
&lt;p&gt;So I asked a different question: what if we didn&#039;t have to write Rector rules at all?&lt;/p&gt;
&lt;p&gt;If AI can generate Rector rules automatically, Drupal Core can keep evolving without every API change turning into manual migration work.&lt;/p&gt;
&lt;p&gt;That idea led me to extend &lt;a href=&quot;https://github.com/dbuytaert/drupal-digests&quot;&gt;Drupal Digests&lt;/a&gt;, the tool I built to &lt;a href=&quot;https://dri.es/a-better-way-to-follow-drupal-development&quot;&gt;follow key Drupal developments&lt;/a&gt;. In addition to generating summaries, it now also analyzes Drupal Core commits and generates &lt;a href=&quot;https://getrector.com&quot;&gt;Rector&lt;/a&gt; rules automatically.&lt;/p&gt;
&lt;p&gt;When a Drupal Core commit deprecates an API or introduces a new pattern, the tool reads the related issue, analyzes the discussion around it, reviews the code changes, and generates a corresponding Rector rule.&lt;/p&gt;
&lt;p&gt;The system has only been running for a few weeks, yet it has already generated &lt;a href=&quot;https://github.com/dbuytaert/drupal-digests/tree/main/rector/rules&quot;&gt;over 175 Rector rules&lt;/a&gt;, with new rules continuously added as the pipeline processes more Drupal Core issues.&lt;/p&gt;
&lt;p&gt;AI-generated code is far from perfect. Some rules will have bugs, and others will miss edge cases. But that is exactly why I wanted to publish them now: the more people test them on real projects, the faster they will improve.&lt;/p&gt;
&lt;p&gt;Special thanks to &lt;a href=&quot;https://www.drupal.org/u/bbrala&quot;&gt;Björn Brala&lt;/a&gt;, co-maintainer of Drupal Rector, who discovered I was working on this and quickly jumped in to help test and validate some of the generated rules. That kind of feedback is incredibly valuable.&lt;/p&gt;
&lt;p&gt;You can try them as follows:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/dbuytaert/drupal-digests.git
composer require --dev rector/rector
vendor/bin/rector process web/modules/custom \
  --config drupal-digests/rector/all.php --dry-run
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Example&lt;/h3&gt;
&lt;p&gt;Take Drupal&#039;s modernization of the &lt;a href=&quot;https://www.drupal.org/node/3571065&quot;&gt;&lt;code&gt;$entity-&amp;gt;original&lt;/code&gt; property&lt;/a&gt;, which exposed the unchanged copy of an entity. Drupal 11.2 deprecated the property in favor of explicit &lt;code&gt;$entity-&amp;gt;getOriginal()&lt;/code&gt; and &lt;code&gt;$entity-&amp;gt;setOriginal()&lt;/code&gt; methods. The old property will be removed in Drupal 12 so various module maintainers have to update their code.&lt;/p&gt;
&lt;p&gt;Drupal Digests generated a &lt;a href=&quot;https://github.com/dbuytaert/drupal-digests/blob/main/rector/rules/replace-deprecated-entity-original-magic-property-with-3571065.php&quot;&gt;Rector rule&lt;/a&gt; that rewrites read access to &lt;code&gt;getOriginal()&lt;/code&gt; and write assignment to &lt;code&gt;setOriginal()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;$entity-&amp;gt;original-&amp;gt;field-&amp;gt;value;
$entity-&amp;gt;original = $unchanged;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;$entity-&amp;gt;getOriginal()-&amp;gt;field-&amp;gt;value;
$entity-&amp;gt;setOriginal($unchanged);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;AI-generated upgrade rules will not eliminate all upgrade work anytime soon. But even partial automation can reduce a surprising amount of repetitive work while helping Drupal evolve faster.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>AI rewards strict APIs</title>
      <link>https://dri.es/ai-rewards-strict-apis</link>
      <guid>https://dri.es/ai-rewards-strict-apis</guid>
      <pubDate>Tue, 28 Apr 2026 09:00:35 -0400</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/blog/drupal-ai-advantage-1280w.jpg&quot; alt=&quot;An astronaut explores a surreal landscape beneath rainbow-colored planetary rings, symbolizing the journey into AI&amp;amp;#039;s transformative potential for Drupal.&quot; width=&quot;1280&quot; height=&quot;853&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Every framework&#039;s API surface sits on a spectrum, from strict (typed interfaces, schemas, service containers) to loose (string keys, naming conventions, untyped hooks). Strict APIs cost more upfront: more boilerplate, more to learn before writing code. Loose APIs shift that cost later: more ambiguity, more reliance on naming conventions, and more bugs that are harder to detect and fix.&lt;/p&gt;
&lt;p&gt;AI changes who pays. Boilerplate and learning curves don&#039;t slow agents down. What slows them down is missing feedback: code that runs but does the wrong thing, errors that don&#039;t point to the cause, conventions that have to be guessed. Magic-name binding, untyped hooks, unvalidated configuration, and conventions the code doesn&#039;t enforce produce exactly those failure modes.&lt;/p&gt;
&lt;h3&gt;Magic strings break the loop&lt;/h3&gt;
&lt;p&gt;For example, both Drupal and WordPress have long used magic-string hooks. In Drupal, you write a function like &lt;code&gt;mymodule_user_login&lt;/code&gt;. WordPress uses a related pattern: a string action name passed to &lt;code&gt;add_action()&lt;/code&gt;. In both cases, the binding is a string the language can&#039;t validate.&lt;/p&gt;
&lt;p&gt;Get the name wrong and the system silently skips your code: no error, no warning, nothing in the logs. The function just sits there, unloved.&lt;/p&gt;
&lt;p&gt;The signature is a convention, not a contract: the documentation says the &lt;code&gt;user_login&lt;/code&gt; hook receives a &lt;code&gt;$user&lt;/code&gt; object, but nothing enforces it. To your IDE or a static analyzer like PHPStan, it&#039;s just a function. They don&#039;t know it&#039;s wired into the platform&#039;s login flow, so they can&#039;t warn you when it&#039;s wrong.&lt;/p&gt;
&lt;p&gt;A typed alternative makes the binding explicit. With a PHP attribute like &lt;code&gt;#[Hook(&#039;user_login&#039;)]&lt;/code&gt; on a registered service, the class must exist, the method signature is type-checked, and the container wires the dependencies. IDEs, static analyzers, and AI coding agents can follow the chain from the attribute to the implementation.&lt;/p&gt;
&lt;p&gt;For AI agents, this keeps the feedback loop tight instead of turning it into trial and error. That means they can move faster, spend less time debugging, and use fewer tokens.&lt;/p&gt;
&lt;p&gt;At DrupalCon Chicago this March, AI coding tools migrated a &lt;a href=&quot;https://dri.es/state-of-drupal-presentation-march-2026&quot;&gt;Lovable-generated site into Drupal&lt;/a&gt; in hours. The strict APIs kept the agent on track.&lt;/p&gt;
&lt;h3&gt;A bet made before AI existed&lt;/h3&gt;
&lt;p&gt;This didn&#039;t start with AI. Drupal 8, which we shipped in 2015, introduced Symfony&#039;s routing, services, and event dispatcher, replacing large parts of the procedural hook system. Since then, we&#039;ve kept reducing magic hooks. The attribute-based approach (&lt;code&gt;#[Hook(&#039;user_login&#039;)]&lt;/code&gt;) landed in Drupal 11.1 and helps remove more of the remaining procedural-only paths.&lt;/p&gt;
&lt;p&gt;Hooks aren&#039;t the only place Drupal has been getting stricter. Drupal stores a lot of configuration in YAML, which was one of the loosest parts of the system. A &lt;a href=&quot;https://wimleers.com/validation-first&quot;&gt;multi-year validation effort&lt;/a&gt; has been tightening that.&lt;/p&gt;
&lt;p&gt;When an agent generates a content type definition or editor configuration, validation catches missing keys, invalid values, and broken references before anything is saved. The agent gets a precise error pointing to the exact field, instead of a runtime failure. That tight feedback loop is what makes Drupal a strong CMS for AI-assisted development.&lt;/p&gt;
&lt;p&gt;Drupal made this bet early, and it was painful. The Drupal 7 to Drupal 8 transition broke backward compatibility and took years to recover from. But it left the platform much stricter. More than ten years in, &lt;a href=&quot;https://dbuytaert.github.io/drupal-core-metrics/&quot;&gt;we&#039;re still making Drupal stricter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Meanwhile, WordPress made a different bet, prioritizing backward compatibility over stricter APIs. That kept the platform stable for a long time. It also kept the looseness.&lt;/p&gt;
&lt;p&gt;Those trade-offs now determine how efficiently AI agents can work with each platform.&lt;/p&gt;
&lt;h3&gt;What was style is now speed&lt;/h3&gt;
&lt;p&gt;What used to be a stylistic choice is now a speed and cost problem. Loose APIs mean more debugging and guesswork. Strict APIs mean faster, more precise feedback. This was always true for humans. It&#039;s now also true for AI agents. But today that cost shows up in tokens.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>What does &#039;Buy European&#039; even mean?</title>
      <link>https://dri.es/what-does-buy-european-even-mean</link>
      <guid>https://dri.es/what-does-buy-european-even-mean</guid>
      <pubDate>Wed, 15 Apr 2026 08:13:15 -0400</pubDate>
      <description>&lt;p&gt;&lt;em&gt;This post was co-authored with &lt;a href=&quot;https://www.linkedin.com/in/nckgts/&quot;&gt;Nicholas Gates&lt;/a&gt;, senior policy advisor at &lt;a href=&quot;https://openforumeurope.org/&quot;&gt;OpenForum Europe&lt;/a&gt;. It was originally published on &lt;a href=&quot;https://euobserver.com/210047/when-it-comes-to-techs-software-dependency-what-does-buy-european-even-mean/&quot;&gt;EUobserver&lt;/a&gt;, an independent online newspaper widely read by EU policymakers, journalists and advocacy groups. The article summarizes a series of posts I&#039;ve been writing about &lt;a href=&quot;https://dri.es/tag/digital-sovereignty&quot;&gt;digital sovereignty&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;European digital assets have a habit of not staying European – a problem current discussions about sovereignty are overlooking.&lt;/p&gt;
&lt;p&gt;For example, Skype had Swedish and Danish founders, Estonian engineers, a Luxembourg headquarters, and proprietary code.&lt;/p&gt;
&lt;p&gt;Every sovereignty credential was correct on the day it would have been assessed – and meaningless after eBay acquired it, Microsoft bought it, and eventually shut it down in 2025.&lt;/p&gt;
&lt;p&gt;This speaks to a core tension at the heart of Europe&#039;s digital sovereignty moment. The real story has to do with licensing, dependencies, and supply chains more than it has to do with ownership or operational control – both of which can (and often do) change in Europe.&lt;/p&gt;
&lt;p&gt;The current conception of cloud sovereignty asks the right questions about where data is stored, where companies are headquartered, and whether supply chains are European.&lt;/p&gt;
&lt;p&gt;What they don&#039;t yet ask is whether the sovereignty they are assessing is durable and resilient – for example, whether it will survive a change of ownership, a corporate acquisition, or a disruption in the infrastructure the software depends on.&lt;/p&gt;
&lt;p&gt;The European Commission&#039;s &lt;a href=&quot;https://commission.europa.eu/document/download/09579818-64a6-4dd5-9577-446ab6219113_en?filename=Cloud-Sovereignty-Framework.pdf&quot;&gt;Cloud Sovereignty Framework&lt;/a&gt; provides a non-legislative assessment tool designed to evaluate the digital independence of cloud services in Europe.&lt;/p&gt;
&lt;p&gt;It enables public authorities to rank services based on factors such as immunity from non-EU laws, operational control, and data protection.&lt;/p&gt;
&lt;p&gt;The forthcoming &lt;a href=&quot;https://www.eu-cloud-ai-act.com/&quot;&gt;Cloud and AI Development Act&lt;/a&gt; (CAIDA) – expected at the end of May – will possibly go further.&lt;/p&gt;
&lt;p&gt;That said, while both are serious and welcome efforts, they are likely to solve only part of the problem.&lt;/p&gt;
&lt;h2&gt;&#039;Buy European&#039; is a fragile concept&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://euobserver.com/203466/leaked-details-of-what-will-be-in-brussels-new-made-in-europe-rules/&quot;&gt;Europe&#039;s &#039;Buy European&#039; strategy&lt;/a&gt; is being built on two fragile foundations it hasn&#039;t yet explicitly addressed, and this could have disastrous implications in the cloud domain in particular.&lt;/p&gt;
&lt;p&gt;Proprietary software with a perfect sovereignty score today is one acquisition away from a different answer tomorrow. Open Source software means the question doesn&#039;t arise.&lt;/p&gt;
&lt;p&gt;The legal right to fork changes the power dynamic entirely: it gives you leverage, lets a community step in, and means the technology cannot be held hostage.&lt;/p&gt;
&lt;p&gt;This is the distinction the Cloud Sovereignty Framework currently misses.&lt;/p&gt;
&lt;p&gt;When Oracle acquired Sun Microsystems in 2010, governments running MySQL faced an immediate question: what happens to this software now?&lt;/p&gt;
&lt;p&gt;The answer turned on one thing – the licence. Because MySQL was GPL-licensed, the right to fork and maintain it independently was already being exercised before the acquisition even completed.&lt;/p&gt;
&lt;p&gt;MySQL&#039;s creator, Monty Widenius, forked it in 2009 precisely because he saw the acquisition coming – that fork exists today as MariaDB. The licence didn&#039;t prevent Oracle from buying Sun. It meant the acquisition couldn&#039;t end the software, and anyone paying attention could act on that right before any harm materialised.&lt;/p&gt;
&lt;p&gt;Getting the licence right is necessary, but it is not sufficient.&lt;/p&gt;
&lt;p&gt;In 2024, a conflict between WordPress co-founder Matt Mullenweg and WP Engine disrupted updates for millions of websites.&lt;/p&gt;
&lt;p&gt;The code was Open Source. The delivery infrastructure had a single point of control. Most programming languages rely on a single central registry and most are controlled by US companies.&lt;/p&gt;
&lt;p&gt;In 2019, GitHub restricted access for developers in sanctioned countries; since GitHub also owns npm, the JavaScript ecosystem&#039;s delivery infrastructure became subject to the same trade controls. These aren&#039;t interchangeable download sites you can swap out.&lt;/p&gt;
&lt;p&gt;Sovereign software on fragile infrastructure is not sovereign. It is software waiting for a supply chain to break.&lt;/p&gt;
&lt;p&gt;Both fragility problems point to the same conclusion: a &#039;Buy European&#039; label is not a sovereignty guarantee unless it embraces licensing as a tool and helps to safeguard the supply chains the software depends on.&lt;/p&gt;
&lt;p&gt;Consider two scenarios. A government running proprietary software on a European cloud has jurisdiction, but no exit if the provider is acquired – replacing the software could take years.&lt;/p&gt;
&lt;p&gt;A government running Open Source software on Amazon Web Services (AWS) in Europe can move the same software to a European provider whenever it wants. Neither is ideal, but they are not equal.&lt;/p&gt;
&lt;p&gt;Europe&#039;s sovereignty frameworks need to internalise this asymmetry. Structural sovereignty – the kind that survives change – requires open foundations that flow from licensing through the critical supply chains on which that software depends.&lt;/p&gt;
&lt;h2&gt;A call-to-action for the Cloud and AI Development Act&lt;/h2&gt;
&lt;p&gt;CAIDA should not make the same mistakes as the Cloud Sovereignty Framework. It would be a mistake to simply extend a &#039;Buy European&#039; checklist. The legislation should instead define what makes sovereignty durable.&lt;/p&gt;
&lt;p&gt;Two concrete steps would make an immediate difference.&lt;/p&gt;
&lt;p&gt;First, it can make Open Source licensing a pass/fail gate for mission-critical procurement under the Cloud Sovereignty Framework – a condition of eligibility at the highest assurance levels, not a weighted factor in a composite score.&lt;/p&gt;
&lt;p&gt;Second, it should require supply chain resilience assessments that distinguish between dependencies switchable in weeks and those that would take an entire language community years to replicate, with federated or mirrored European alternatives required where no fallback exists.&lt;/p&gt;
&lt;p&gt;Yes, requiring Open Source for mission-critical systems narrows the field in the short term.&lt;/p&gt;
&lt;p&gt;But the providers you lose are the ones whose sovereignty credentials don&#039;t survive change.&lt;/p&gt;
&lt;p&gt;In the longer term, these requirements push European companies toward Open Source software – technology that no one can take away.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Introducing headers.dev</title>
      <link>https://dri.es/introducing-headers-dev</link>
      <guid>https://dri.es/introducing-headers-dev</guid>
      <pubDate>Tue, 07 Apr 2026 05:44:37 -0400</pubDate>
      <description>&lt;p&gt;My &lt;a href=&quot;https://headers.dev&quot;&gt;HTTP Header Analyzer&lt;/a&gt; started as &lt;a href=&quot;https://dri.es/the-little-http-header-analyzer-that-could&quot;&gt;a small tool on my blog&lt;/a&gt; six years ago. It makes HTTP headers visible and explains what they do. You give it a URL, it fetches the response headers, and it breaks down what is present, what is missing, and what is possibly misconfigured.&lt;/p&gt;
&lt;p&gt;It has been used more than 5 million times, despite being buried at &lt;code&gt;https://dri.es/headers&lt;/code&gt;. So last week I finally registered &lt;a href=&quot;https://headers.dev&quot;&gt;headers.dev&lt;/a&gt; and gave it a proper home.&lt;/p&gt;
&lt;p&gt;While I was at it, I also audited the analyzer against &lt;a href=&quot;https://owasp.org/www-project-secure-headers/&quot;&gt;OWASP&#039;s recommendations for HTTP headers&lt;/a&gt;. I found a few gaps worth fixing. A site could have a Content Security Policy that included &lt;code&gt;unsafe-inline&lt;/code&gt; and &lt;code&gt;unsafe-eval&lt;/code&gt;, and the analyzer would describe each directive without mentioning that those two keywords effectively disable XSS protection. Or you could set HSTS with &lt;code&gt;preload&lt;/code&gt; but forget &lt;code&gt;includeSubDomains&lt;/code&gt;, which means your preload submission gets silently rejected. These are the kinds of issues a human reviewer might miss but an automated tool should catch. I fixed those and more, so if you&#039;ve used the analyzer before, your scores might look different now.&lt;/p&gt;
&lt;p&gt;The analyzer also learned about dozens of new headers. &lt;code&gt;Speculation-Rules&lt;/code&gt;, for example, tells browsers to prerender pages a user is likely to visit next. &lt;code&gt;Cache-Status&lt;/code&gt; replaces the patchwork of vendor-specific &lt;code&gt;X-Cache&lt;/code&gt; headers with a single structured format that can describe multiple cache layers in one value. And &lt;code&gt;Reporting-Endpoints&lt;/code&gt; is the modern replacement for &lt;code&gt;Report-To&lt;/code&gt;, using a simpler key-value syntax for telling browsers where to send security violation reports.&lt;/p&gt;
&lt;p&gt;Try it at &lt;a href=&quot;https://headers.dev&quot;&gt;headers.dev&lt;/a&gt;. It now explains over 150 headers and catches misconfigurations that it used to miss. The &lt;a href=&quot;https://dri.es/tag/open-web&quot;&gt;Open Web&lt;/a&gt; is better when more people check their HTTP headers.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The Sovereignty Prerequisite</title>
      <link>https://dri.es/the-sovereignty-prerequisite</link>
      <guid>https://dri.es/the-sovereignty-prerequisite</guid>
      <pubDate>Wed, 01 Apr 2026 05:06:03 -0400</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/blog/sovereignty-prerequisite-1280w.jpg&quot; alt=&quot;A row of identical closed dark cubes with a single open red cube in the middle, symbolizing that Open Source licensing should be treated differently.&quot; width=&quot;1280&quot; height=&quot;850&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Procurement frameworks aren&#039;t the most exciting topic. But the European Commission is about to propose the &lt;a href=&quot;https://www.europarl.europa.eu/legislative-train/theme-a-new-plan-for-europe-s-sustainable-prosperity-and-competitiveness/file-cloud-and-ai-development-act&quot;&gt;Cloud and AI Development Act&lt;/a&gt; (CADA), and how it treats Open Source will affect every Open Source project and Open Source business operating in Europe. This is one of those moments where the details matter.&lt;/p&gt;
&lt;p&gt;Last month, I proposed a &lt;a href=&quot;https://dri.es/the-software-sovereignty-scale&quot;&gt;Software Sovereignty Scale&lt;/a&gt; that grades software from A to E based on how easily your rights can be taken away. My core argument: if you want sovereignty that lasts, Open Source matters more than buying European proprietary software.&lt;/p&gt;
&lt;p&gt;I submitted the Software Sovereignty Scale as feedback to the European Commission, recommending that Open Source carry more weight in the &lt;a href=&quot;https://commission.europa.eu/document/download/09579818-64a6-4dd5-9577-446ab6219113_en?filename=Cloud-Sovereignty-Framework.pdf&quot;&gt;Cloud Sovereignty Framework&lt;/a&gt;, the tool EU institutions like the Commission and Parliament use to evaluate cloud providers when purchasing cloud services for their own operations.&lt;/p&gt;
&lt;p&gt;The Cloud Sovereignty Framework only applies to how EU institutions buy their own cloud services. The Cloud and AI Development Act, which is expected to build on its approach, would set rules for the entire EU cloud market, across all 27 member states. The difference in scale is enormous, and the time to get this right is now.&lt;/p&gt;
&lt;p&gt;My &lt;a href=&quot;https://dri.es/the-software-sovereignty-scale&quot;&gt;original recommendation&lt;/a&gt; was to give Open Source more weight in the Cloud Sovereignty Framework&#039;s scoring. I&#039;ve since realized that isn&#039;t enough. Licensing shouldn&#039;t be in the sovereignty score at all. It should be a prerequisite.&lt;/p&gt;
&lt;h3&gt;Open Source is not a rounding error&lt;/h3&gt;
&lt;p&gt;The Cloud Sovereignty Framework evaluates providers across eight sovereignty objectives, each weighted into a composite score, as shown in the screenshot below. Contracting authorities use that score to rank and compare providers when selecting software and cloud services.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/images/blog/eu-cloud-sovereignty-framework-weights.png&quot; alt=&quot;A table and formula from the European Commission&amp;amp;#039;s Cloud Sovereignty Framework showing how the composite sovereignty score is computed. Eight sovereignty objectives are weighted: Strategic Sovereignty 15%, Legal and Jurisdictional 10%, Data and AI 10%, Operational 15%, Supply Chain 20%, Technology 15%, Security and Compliance 10%, and Environmental Sustainability 5%. The sovereignty score is the weighted sum of each objective&amp;amp;#039;s normalized score.&quot; width=&quot;1156&quot; height=&quot;1128&quot; /&gt;
&lt;figcaption&gt;&lt;em&gt;Screenshot of how the European Commission computes its composite sovereignty score. Technology Sovereignty (SOV-6), which covers open licensing, accounts for 15% of the total. Source: &lt;a href=&quot;https://commission.europa.eu/document/download/09579818-64a6-4dd5-9577-446ab6219113_en?filename=Cloud-Sovereignty-Framework.pdf&quot;&gt;Cloud Sovereignty Framework&lt;/a&gt;, version 1.2.1, October 2025.&lt;/em&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Technology Sovereignty (SOV-6), the objective that covers Open Source, accounts for 15% of the total. Within it, open licensing is one of four contributing factors. That means software being Open Source can contribute roughly 4% to a provider&#039;s final sovereignty score.&lt;/p&gt;
&lt;p&gt;Does that feel right to you? The one thing that guarantees sovereignty long-term is worth ~4%.&lt;/p&gt;
&lt;p&gt;A framework designed to measure sovereignty treats the one factor that makes sovereignty permanent as a rounding error. I could argue the percentage should be higher, or that Open Source supports other objectives, but even at 40%, licensing would still be in the wrong place.&lt;/p&gt;
&lt;p&gt;Licensing is fundamentally different from every other objective in the framework. Skype checked every sovereignty box until eBay acquired it in 2005. Every credential was valid before the acquisition and meaningless after.&lt;/p&gt;
&lt;p&gt;Had Skype been Open Source, no one could have taken the code away. You would still retain the right to use, modify, and fork it regardless of who acquired the company. That right is permanent, but a European headquarters is not.&lt;/p&gt;
&lt;p&gt;That makes licensing a prerequisite, not something to average into a score. Scores compare trade-offs. Prerequisites define what is non-negotiable.&lt;/p&gt;
&lt;h3&gt;The gate already exists&lt;/h3&gt;
&lt;p&gt;Beyond the composite score, the framework defines Sovereign Effectiveness Assurance Levels, or SEAL levels. These range from SEAL-0 (no sovereignty at all) to SEAL-4 (full EU control with no critical non-EU dependencies).&lt;/p&gt;
&lt;p&gt;For each of the eight sovereignty objectives, the contracting authority sets a minimum SEAL level. Any provider that falls below the minimum is rejected outright. These minimums work as pass/fail gates.&lt;/p&gt;
&lt;p&gt;My proposal: licensing belongs in the gate, not in the score. Make Open Source a minimum requirement for the highest SEAL levels.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://dri.es/the-software-sovereignty-scale&quot;&gt;Software Sovereignty Scale&lt;/a&gt; could map onto SEAL levels like this:&lt;/p&gt;
&lt;div class=&quot;large&quot;&gt;
&lt;table&gt;
  &lt;thead&gt;
  &lt;tr&gt;
  &lt;th&gt;SEAL level&lt;/th&gt;
  &lt;th&gt;Framework definition&lt;/th&gt;
  &lt;th&gt;Proposed licensing gate&lt;/th&gt;
  &lt;th&gt;What it means in practice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
  &lt;td&gt;SEAL-3 or above&lt;/td&gt;
  &lt;td&gt;Digital Resilience / Full Digital Sovereignty&lt;/td&gt;
  &lt;td&gt;&lt;a href=&quot;https://dri.es/the-software-sovereignty-scale&quot;&gt;Grade A, B, or C&lt;/a&gt; (Open Source)&lt;/td&gt;
  &lt;td&gt;Software can be forked and maintained independently. Sovereignty survives acquisition.&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
  &lt;td&gt;SEAL-2&lt;/td&gt;
  &lt;td&gt;Data Sovereignty&lt;/td&gt;
  &lt;td&gt;&lt;a href=&quot;https://dri.es/the-software-sovereignty-scale&quot;&gt;Grade D&lt;/a&gt; or above (including European proprietary software)&lt;/td&gt;
  &lt;td&gt;European jurisdiction, but structurally vulnerable to acquisition or relicensing.&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
  &lt;td&gt;SEAL-1&lt;/td&gt;
  &lt;td&gt;Jurisdictional Sovereignty&lt;/td&gt;
  &lt;td&gt;No licensing gate&lt;/td&gt;
  &lt;td&gt;Minimal sovereignty assurance.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Under this proposal, mission-critical software with high switching costs would require a minimum of SEAL-3, making Open Source a requirement. For lower-risk procurement where the software is easy to replace, SEAL-2 would allow proprietary providers to compete.&lt;/p&gt;
&lt;p&gt;Won&#039;t this exclude many proprietary providers? Yes, it would. But we have to be honest: proprietary software doesn&#039;t give you sovereignty that lasts.&lt;/p&gt;
&lt;p&gt;I support the push to buy homegrown technology (&amp;quot;Buy European&amp;quot;). It keeps investment in Europe. But it doesn&#039;t solve the underlying problem.&lt;/p&gt;
&lt;h3&gt;Which government is sovereign?&lt;/h3&gt;
&lt;p&gt;Consider two scenarios. In the first, a government runs proprietary software on a sovereign European cloud. The provider gets acquired by a non-EU company, and the government can&#039;t migrate without replacing the software entirely. It has jurisdiction but ultimately no control. It&#039;s not very sovereign.&lt;/p&gt;
&lt;p&gt;In the second, a government runs Open Source software on Amazon Web Services (AWS), a US-owned cloud provider with data centers in Europe. If AWS becomes a problem because of the CLOUD Act, policy changes, or geopolitics, the government can move the same software to a European cloud provider. Switching cloud providers can be hard, but switching software is much harder.&lt;/p&gt;
&lt;p&gt;It may seem counterintuitive, but the second government is in a stronger position. Open Source on a non-European cloud gives you more sovereignty than proprietary software on a European one, because you can always change the infrastructure. You can&#039;t fix the licensing.&lt;/p&gt;
&lt;p&gt;This doesn&#039;t make the second scenario risk-free. The ideal solution would be Open Source on a sovereign European cloud.&lt;/p&gt;
&lt;p&gt;People overestimate jurisdiction and underestimate licensing. Licensing is not one sovereignty factor among many. It&#039;s the sovereignty prerequisite.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Special thanks to &lt;a href=&quot;https://www.drupal.org/u/farriss&quot;&gt;Tiffany Farriss&lt;/a&gt; and &lt;a href=&quot;https://www.linkedin.com/in/sachikomuto/&quot;&gt;Sachiko Muto&lt;/a&gt; for their review of this blog post.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Drupal 12 switches to Argon2id</title>
      <link>https://dri.es/drupal-12-switches-to-argon2id</link>
      <guid>https://dri.es/drupal-12-switches-to-argon2id</guid>
      <pubDate>Mon, 30 Mar 2026 05:15:35 -0400</pubDate>
      <description>&lt;p&gt;Drupal 12 will &lt;a href=&quot;https://www.drupal.org/project/drupal/issues/3530186&quot;&gt;hash passwords with Argon2id by default&lt;/a&gt;. It moves every Drupal site to what is now best practice for password storage, recommended by &lt;a href=&quot;https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html&quot;&gt;OWASP&lt;/a&gt; and aligned with &lt;a href=&quot;https://pages.nist.gov/800-63-4/sp800-63b.html&quot;&gt;NIST guidance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Drupal is often used for security-sensitive and large-scale sites, so these kinds of changes matter.&lt;/p&gt;
&lt;p&gt;Early versions of Drupal stored passwords as simple MD5 hashes, which is extremely weak by today&#039;s standards. Drupal 7 introduced a modified version of the &lt;a href=&quot;https://www.openwall.com/phpass/&quot;&gt;phpass library&lt;/a&gt; using &lt;a href=&quot;https://en.wikipedia.org/wiki/SHA-2&quot;&gt;SHA-512&lt;/a&gt; with multiple iterations and a salt, and &lt;a href=&quot;https://www.drupal.org/node/3322420&quot;&gt;Drupal 10 switched to bcrypt&lt;/a&gt;. Each jump was a response to attackers getting faster hardware, and this change continues that pattern.&lt;/p&gt;
&lt;p&gt;When I first looked at this change, I wanted to understand what &lt;a href=&quot;https://en.wikipedia.org/wiki/Argon2&quot;&gt;Argon2id&lt;/a&gt; actually does differently from &lt;a href=&quot;https://en.wikipedia.org/wiki/Bcrypt&quot;&gt;bcrypt&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Its key advantage is that it is &amp;quot;memory hard&amp;quot;. Each Argon2id hash requires far more memory to compute than a bcrypt hash, and the amount is configurable.&lt;/p&gt;
&lt;p&gt;Modern GPUs can run many bcrypt computations in parallel because each one uses very little RAM. GPUs have a lot of total memory, but it is shared across thousands of parallel computations. As a result, Argon2id limits how many hash computations can run in parallel, making it harder and more expensive to scale attacks.&lt;/p&gt;
&lt;p&gt;The best security upgrades are the ones nobody has to think about. Once a site upgrades to Drupal 12, existing passwords will automatically be rehashed to Argon2id the next time each user logs in. And in the unlikely event that Argon2id is not available in a particular PHP installation, Drupal will fall back to bcrypt for compatibility.&lt;/p&gt;
&lt;p&gt;Many site owners never think about password hashing, so Drupal&#039;s defaults become their security policy. The people who benefit most from this change may never know it happened. It&#039;s why being &amp;quot;secure by default&amp;quot; matters so much.&lt;/p&gt;
&lt;p&gt;Thanks to everyone who helped make this happen.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>State of Drupal presentation (March 2026)</title>
      <link>https://dri.es/state-of-drupal-presentation-march-2026</link>
      <guid>https://dri.es/state-of-drupal-presentation-march-2026</guid>
      <pubDate>Thu, 26 Mar 2026 19:06:55 -0400</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;div style=&quot;position: relative; padding-bottom: 56.25%; height: 0&quot;&gt;&lt;iframe src=&quot;https://www.youtube-nocookie.com/embed/WQcCYMcWtOs&quot; style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%&quot; loading=&quot;lazy&quot; title=&quot;YouTube video&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;This year, Drupal turned 25. DrupalCon Chicago felt like the right place to mark that milestone. My keynote was part celebration and part wake-up call. I talked about Drupal&#039;s foundations, how AI is putting pressure on them, and why I believe we can rebuild them stronger than before.&lt;/p&gt;
&lt;p&gt;If you missed the keynote, you can &lt;a href=&quot;https://youtu.be/WQcCYMcWtOs&quot;&gt;watch the video below&lt;/a&gt; or &lt;a href=&quot;https://dri.es/files/state-of-drupal-march-2026.pdf&quot;&gt;download my slides&lt;/a&gt; (32.6 MB).&lt;/p&gt;
&lt;p&gt;It will be interesting to rewatch this keynote in 10 years, when AI is fully mainstream and has reshaped how we work, including our agencies, our craft, and how we collaborate in Open Source. It feels like a snapshot of an industry in transition.&lt;/p&gt;
&lt;h3&gt;Site templates and the marketplace&lt;/h3&gt;
&lt;p&gt;&lt;figure&gt;&lt;div style=&quot;position: relative; padding-bottom: 56.25%; height: 0&quot;&gt;&lt;iframe src=&quot;https://www.youtube-nocookie.com/embed/RExPXpjH3q4&quot; style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%&quot; loading=&quot;lazy&quot; title=&quot;YouTube video&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;About a year ago at &lt;a href=&quot;https://dri.es/state-of-drupal-presentation-march-2025&quot;&gt;DrupalCon Atlanta&lt;/a&gt;, I introduced the idea of &lt;a href=&quot;https://dri.es/exploring-a-marketplace-for-drupal-site-templates&quot;&gt;site templates&lt;/a&gt; and a marketplace to go with them. By &lt;a href=&quot;https://dri.es/state-of-drupal-presentation-october-2025&quot;&gt;DrupalCon Vienna&lt;/a&gt;, we had one site template, but no marketplace.&lt;/p&gt;
&lt;p&gt;In Chicago, I showed eleven site templates available in a basic marketplace at &lt;a href=&quot;https://marketplace.drupal.org/&quot;&gt;marketplace.drupal.org&lt;/a&gt;. All eleven can be installed directly from the &lt;a href=&quot;https://www.drupal.org/project/drupal_cms_installer/&quot;&gt;Drupal CMS installer&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;AI for site building&lt;/h3&gt;
&lt;p&gt;For more than 20 years, Drupal&#039;s ecosystem has rested on a stable triangle: the platform itself, digital agencies who bring Drupal into the real world, and the community that builds and maintains it. That triangle has proven remarkably resilient through many waves of new technologies.&lt;/p&gt;
&lt;p&gt;But what happens when AI disrupts all three sides at the same time? In my keynote, I showed how Drupal is responding.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;div style=&quot;position: relative; padding-bottom: 56.25%; height: 0&quot;&gt;&lt;iframe src=&quot;https://www.youtube-nocookie.com/embed/eQ_NcJHwYew&quot; style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%&quot; loading=&quot;lazy&quot; title=&quot;YouTube video&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;I started by showing a demo of a workflow I believe will become common for Drupal agencies. You quickly prototype a website with AI, then turn it into a Drupal site with the help of AI and a skilled developer, all within hours.&lt;/p&gt;
&lt;p class=&quot;pullquote&quot;&gt;AI gets you to a prototype fast. Drupal gives it the foundations that last.&lt;/a&gt;
&lt;p&gt;I believe Drupal has a unique advantage in this new world. Organizations will always need real workflows, permissions, security, scalability, integrations, compliance, and governance. Drupal is very well suited for AI-driven workflows.&lt;/p&gt;
&lt;p&gt;The demo worked because Drupal CMS ships with &lt;a href=&quot;https://www.drupal.org/project/canvas&quot;&gt;Drupal Canvas&lt;/a&gt;, which includes both CLI tools and AI skills. But the real strength comes from Drupal&#039;s foundations: its APIs, reusable building blocks, and mature architecture, refined over 25 years. This is the &lt;a href=&quot;https://dri.es/why-drupal-is-built-for-the-ai-era&quot;&gt;accidental AI advantage&lt;/a&gt; I have written about before.  This is what makes Drupal one of the best platforms for AI-driven development.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/drupalcon-chicago-2026/under-the-hood-1280w.png&quot; alt=&quot;Front view of a car with a transparent hood revealing a Drupal engine. Labels point to features like governance, security, permissions, customizations, scalability, integrations, authoring, and compliance.&quot; width=&quot;1280&quot; height=&quot;720&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3&gt;AI for content management&lt;/h3&gt;
&lt;p&gt;At &lt;a href=&quot;https://dri.es/state-of-drupal-presentation-october-2025&quot;&gt;DrupalCon Vienna&lt;/a&gt;, I introduced the &lt;a href=&quot;https://www.drupal.org/project/ai_context&quot;&gt;Context Control Center&lt;/a&gt; as a rough prototype. Since then, we have added many features. It is now nearly production-ready.&lt;/p&gt;
&lt;p&gt;The idea is straightforward: AI agents need good context to help manage tasks in Drupal. With the Context Control Center, teams define their brand voice, target audiences, key messages, product details, and editorial guidelines in one place. Then every AI agent on the site draws from this single source of truth. The result is that you create knowledge once, and scale it to all the pages and content on your website.&lt;/p&gt;
&lt;p&gt;In my keynote, I showed two demos of the Context Control Center in action. First, Drupal&#039;s AI agents turn a simple marketing brief into a complete, on-brand page using Drupal Canvas, consulting the Context Control Center along the way. It followed brand rules, asked clarifying questions, generated structured data for search, and added cross-links.&lt;/p&gt;
&lt;p&gt;Second, I showed a proof of concept for dynamic contexts, where the Context Control Center pulls in real-time data from Google Analytics to help improve content performance after publication.&lt;/p&gt;
&lt;h3&gt;Saying no to AI slop&lt;/h3&gt;
&lt;p&gt;AI is lowering the barrier to contribute to Open Source projects like Drupal. On paper, that sounds great. More contributors, more patches, more momentum.&lt;/p&gt;
&lt;p&gt;But it can also be a real challenge. The volume of contributions is going up while the quality is going down.  More patches are landing on a small group of maintainers, and reviewing low-quality code wastes their time. This creates &lt;a href=&quot;https://dri.es/ai-creates-asymmetric-pressure-on-open-source&quot;&gt;asymmetric pressure on Open Source&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&#039;re using AI to contribute, you are responsible for what you submit: &lt;a href=&quot;https://dri.es/never-submit-code-you-do-not-understand&quot;&gt;don&#039;t submit code you don&#039;t understand&lt;/a&gt;. Our quality standards matter, and we will uphold them.&lt;/p&gt;
&lt;h3&gt;Our craft always evolves&lt;/h3&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/drupalcon-chicago-2026/our-craft-always-evolves-1280w.png&quot; alt=&quot;Slide with the text &amp;amp;quot;Our craft always evolves&amp;amp;quot;.&quot; width=&quot;1280&quot; height=&quot;720&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;In my keynote, I also told the stories of two community members who embraced AI in a meaningful way.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.drupal.org/u/afoster&quot;&gt;Aidan Foster&lt;/a&gt;, who has been running Foster Interactive for 17 years, chose to go all in on the &lt;a href=&quot;https://dri.es/accelerating-ai-innovation-in-drupal&quot;&gt;Drupal AI Initiative&lt;/a&gt; instead of staying on the sidelines. Together with his team, he is rebuilding the foundations of his agency to leverage AI and prepare for what is next.&lt;/p&gt;
&lt;p&gt;And &lt;a href=&quot;https://www.drupal.org/u/jurgenhaas&quot;&gt;Jürgen Haas&lt;/a&gt;, a longtime contributor and creator of the ECA module, used AI to move at the speed of a team and make &lt;a href=&quot;https://www.drupal.org/project/eca&quot;&gt;Drupal&#039;s ECA module&lt;/a&gt; much easier to use. In both cases, AI amplifies expertise. It does not replace it.&lt;/p&gt;
&lt;p&gt;The world is being flooded with AI-generated average. Average is cheap now, but expertise remains hard-earned and valuable. This community has spent 25 years building it, and that is not something AI can replicate.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/drupalcon-vienna-2025/ai-is-the-storm-1280w.png&quot; alt=&quot;A human in a space suit and a large cyborg stand side by side before a vast blue wave or cloud, stirred up by a mysterious technological behemoth on the horizon. The image includes the text: &amp;amp;quot;AI is the storm, and the way through it.&amp;amp;quot;&quot; width=&quot;1280&quot; height=&quot;720&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;AI is the storm, and AI is the way through the storm. I said that first in Vienna. Six months later, I believe it more than ever. Not as a slogan, but as something I have watched happen. We need more people like Aidan and Jürgen. If you want to get involved, join us on &lt;a href=&quot;https://www.drupal.org/join-slack&quot;&gt;Drupal Slack&lt;/a&gt; or attend DrupalCon Rotterdam this fall.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I want to extend my gratitude to everyone who contributed to making my presentation and demos a success. A special thank you to &lt;a href=&quot;https://www.drupal.org/u/phenaproxima&quot;&gt;Adam G-H&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/afoster&quot;&gt;Aidan Foster&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/burnashburn&quot;&gt;ASH Sullivan&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/breidert&quot;&gt;Christoph Breidert&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/ckrina&quot;&gt;Cristina Chumillas&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/emma-horrell&quot;&gt;Emma Horrell&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/g%C3%A1bor-hojtsy&quot;&gt;Gábor Hojtsy&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/gantal&quot;&gt;Gurwinder Antal&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/yautja_cetanu&quot;&gt;James Abrahams&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/jurgenhaas&quot;&gt;Jurgen Haas&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/kristen-pol&quot;&gt;Kristen Pol&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/lauriii&quot;&gt;Lauri Timmanee&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/marcus_johansson&quot;&gt;Marcus Johansson&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/mandclu&quot;&gt;Martin Anderson-Clutz&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/pameeela&quot;&gt;Pamela Barone&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/scott-falconer&quot;&gt;Scott Falconer&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/hestenet&quot;&gt;Tim Lehnen&lt;/a&gt;. Many others contributed indirectly to make this possible. If I&#039;ve inadvertently omitted anyone, please reach out.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
