<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Artificial Intelligence</title>
    <description>Dries Buytaert on Artificial Intelligence.</description>
    <link>https://dri.es/tag/artificial-intelligence</link>
    <atom:link href="https://dri.es/tag/artificial-intelligence/rss.xml" rel="self" type="application/rss+xml" />
    <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>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>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>
    <item>
      <title>Drupal&#039;s AI roadmap for 2026</title>
      <link>https://dri.es/drupal-ai-roadmap-for-2026</link>
      <guid>https://dri.es/drupal-ai-roadmap-for-2026</guid>
      <pubDate>Wed, 11 Feb 2026 14:41:09 -0500</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/drupal/drupal-ai-roadmap-2026-1280w.png&quot; alt=&quot;Graphic banner reading &amp;amp;quot;Drupal&amp;amp;#039;s AI roadmap for 2026&amp;amp;quot; with a futuristic illustration of a person standing beneath floating, colorful sci-fi structures in the sky.&quot; width=&quot;1280&quot; height=&quot;850&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;For the past months, the AI Initiative Leadership Team has been working with &lt;a href=&quot;https://www.drupal.org/ai/makers&quot;&gt;our contributing partners&lt;/a&gt; to define what the Drupal AI initiative should focus on in 2026. That plan is now ready, and I want to share it with the community.&lt;/p&gt;
&lt;p&gt;This roadmap builds directly on the strategy we outlined in &lt;a href=&quot;https://dri.es/accelerating-ai-innovation-in-drupal&quot;&gt;Accelerating AI Innovation in Drupal&lt;/a&gt;. That post described the direction. This plan turns it into concrete priorities and execution for 2026.&lt;/p&gt;
&lt;p&gt;The full plan is &lt;a href=&quot;https://dri.es/files/drupal-ai-roadmap-2026.pdf&quot;&gt;available as a PDF&lt;/a&gt;, but let me explain the thinking behind it.&lt;/p&gt;
&lt;p&gt;Producing consistently high-quality content and pages is really hard. Excellent content requires a subject matter expert who actually knows the topic, a copywriter who can translate expertise into clear language, someone who understands your audience and brand, someone who knows how to structure pages with your component library, good media assets, and an SEO/AEO specialist so people actually discover what you made.&lt;/p&gt;
&lt;p&gt;Most organizations are missing at least some of these skillsets, and even when all the people exist, coordinating them is where everything breaks down. We believe AI can fill these gaps, not by replacing these roles but by making their expertise available to every content creator on the team.&lt;/p&gt;
&lt;p&gt;For large organizations, this means stronger brand consistency, better accessibility, and improved compliance across thousands of pages. For smaller ones, it means access to skills that were previously out of reach: professional copywriting, SEO, and brand-consistent design without needing a specialist for each.&lt;/p&gt;
&lt;p&gt;Used carelessly, AI just makes these problems worse by producing fast, generic content that sounds like everything else on the internet. But used well, with real structure and governance behind it, AI can help organizations raise the bar on quality rather than just volume.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.drupal.org/&quot;&gt;Drupal&lt;/a&gt; has always been built around the realities of serious content work: structured content, workflows, permissions, revisions, moderation, and more. These capabilities are what make quality possible at scale. They&#039;re also exactly &lt;a href=&quot;https://dri.es/why-drupal-is-built-for-the-ai-era&quot;&gt;the foundation AI needs&lt;/a&gt; to actually work well.&lt;/p&gt;
&lt;p&gt;Rather than bolting on a chatbot or a generic text generator, we&#039;re embedding AI into the content and page creation process itself, guided by the structure, governance, and brand rules that already live in Drupal.&lt;/p&gt;
&lt;p&gt;For website owners, the value is faster site building, faster content delivery, smarter user journeys, higher conversions, and consistent brand quality at scale. For digital agencies, it means delivering higher-quality websites in less time. And for IT teams, it means less risk and less overhead: automated compliance, auditable changes, and fewer ad hoc requests to fix what someone published.&lt;/p&gt;
&lt;p&gt;We think the real opportunity goes further than just adding AI to what we already have. It&#039;s also about connecting how content gets created, how it performs, and how it gets governed into one loop, so that what you learn from your content actually shapes what you build next.&lt;/p&gt;
&lt;p&gt;The things that have always made Drupal good at content are the same things that make AI trustworthy. That is not a coincidence, and it&#039;s why we believe Drupal is the right place to build this.&lt;/p&gt;
&lt;h3&gt;What we&#039;re building in 2026&lt;/h3&gt;
&lt;p&gt;The 2026 plan identifies eight capabilities we&#039;ll focus on. Each is described in detail in the &lt;a href=&quot;https://dri.es/files/drupal-ai-roadmap-2026.pdf&quot;&gt;full plan&lt;/a&gt;, but here is a quick overview:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Page generation&lt;/strong&gt; - Describe what you need and get a usable page, built from your actual design system components&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context management&lt;/strong&gt; - A central place to define brand voice, style guides, audience profiles, and governance rules that AI can use&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Background agents&lt;/strong&gt; - AI that works without being prompted, responding to triggers and schedules while respecting editorial workflows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design system integration&lt;/strong&gt; - AI that builds with your components and can propose new ones when needed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content creation and discovery&lt;/strong&gt; - Smarter search, AI-powered optimization, and content drafting assistance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advanced governance&lt;/strong&gt; - Batch approvals, branch-based versioning, and comprehensive audit trails for AI changes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intelligent website improvements&lt;/strong&gt; - AI that learns from performance data, proposes concrete changes, and gets smarter over time through editorial review&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-channel campaigns&lt;/strong&gt; - Create content for websites, social, email, and automation platforms from a single campaign goal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These eight capabilities are where the official AI Initiative is focusing its energy, but they&#039;re not the whole picture for AI in Drupal. There is a lot more we want to build that didn&#039;t make this initial list, and we expect to revisit the plan in six months to a year.&lt;/p&gt;
&lt;p&gt;We also want to be clear: community contributions outside this scope are welcome and important. Work on migrations, chatbots, and other AI capabilities continues in the broader Drupal community. If you&#039;re building something that isn&#039;t in our 2026 plan, keep going.&lt;/p&gt;
&lt;h3&gt;How we&#039;re making this happen&lt;/h3&gt;
&lt;p&gt;Over the past year, we&#039;ve brought together organizations willing to contribute people and funding to the AI initiative.  Today, &lt;a href=&quot;https://drupal.org/ai/makers&quot;&gt;28 organizations support the initiative&lt;/a&gt;, collectively pledging more than 23 full-time equivalent contributors. That is over 50 individual contributors working across time zones and disciplines.&lt;/p&gt;
&lt;p&gt;Coordinating 50+ people across organizations takes real structure, so we&#039;ve hired two dedicated teams from among our partners:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.qed42.com/&quot;&gt;QED42&lt;/a&gt; is focused on innovation, pushing forward on what is next.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.1xinternet.com/&quot;&gt;1xINTERNET&lt;/a&gt; is focused on productization, taking what we&#039;ve built and making it stable, intuitive, and easy to install.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both teams are &lt;a href=&quot;https://www.drupal.org/project/issues/search?issue_tags=AI%20Initiative%20Sprint&quot;&gt;creating backlogs&lt;/a&gt;, managing issues, and giving all our contributors clear direction. You can read more about &lt;a href=&quot;https://www.drupal.org/about/starshot/initiatives/ai/blog/from-strategy-to-execution-how-the-drupal-ai-initiative-is-scaling-delivery-for-2026&quot;&gt;how we are going from strategy to execution&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is a new model for Drupal. We&#039;re testing whether open source can move faster when you pool resources and coordinate in a new way.&lt;/p&gt;
&lt;h3&gt;Get involved&lt;/h3&gt;
&lt;p&gt;If you&#039;re a contributing partner, we&#039;re asking you to align your contributions with this plan. The &lt;a href=&quot;https://www.drupal.org/project/issues/ai_initiative?categories=All&quot;&gt;prioritized backlogs&lt;/a&gt; are in place, so pick up something that fits and let&#039;s build.&lt;/p&gt;
&lt;p&gt;If you&#039;re not a partner but want to contribute, jump in. The prioritized backlogs are open to everyone.&lt;/p&gt;
&lt;p&gt;And if you want to &lt;a href=&quot;https://new.drupal.org/ai/become-a-maker&quot;&gt;join the initiative as an official partner&lt;/a&gt;, we&#039;d absolutely welcome that.&lt;/p&gt;
&lt;p&gt;This plan wasn&#039;t built in a room by itself. It&#039;s the result of collaboration across 28 sponsoring organizations who bring expertise in UX, core development, QA, marketing, and more. Thank you.&lt;/p&gt;
&lt;p&gt;We&#039;re building something new for Drupal,  in a new way, and I&#039;m excited to see where it goes.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Self-improving AI skills </title>
      <link>https://dri.es/self-improving-ai-skills</link>
      <guid>https://dri.es/self-improving-ai-skills</guid>
      <pubDate>Fri, 30 Jan 2026 15:41:12 -0500</pubDate>
      <description>&lt;p&gt;If you read one thing this week, make it &lt;a href=&quot;https://simonwillison.net/2026/Jan/30/moltbook/&quot;&gt;Simon Willison&#039;s post on Moltbook&lt;/a&gt;. &lt;a href=&quot;https://moltbook.com&quot;&gt;Moltbook&lt;/a&gt; is a social network for AI agents. To join, you tell your agent to read a URL. That URL points to a &lt;a href=&quot;https://www.moltbook.com/skill.md&quot;&gt;skill file&lt;/a&gt; that teaches the agent how to join and participate.&lt;/p&gt;
&lt;p&gt;Visit Moltbook and you&#039;ll see something really strange: agents from around the world talking to each other and sharing what they&#039;ve learned. Humans just watch.&lt;/p&gt;
&lt;p&gt;This is the most interesting bad idea I&#039;ve seen in a while. And I can&#039;t stop thinking about it.&lt;/p&gt;
&lt;p&gt;When I work on my Drupal site, I sometimes use Claude Code with a custom &lt;code&gt;CLAUDE.md&lt;/code&gt; skill file. It teaches the agent the steps I follow, like safely cloning my production database, [running PHPUnit tests](https://dri.es/phpunit-tests-for-drupal, clearing Drupal caches, and more.&lt;/p&gt;
&lt;p&gt;Moltbook agents share tips through posts. They&#039;re chatting, like developers on Reddit. But imagine a skill that doesn&#039;t just read those ideas, but finds other skill files, compares approaches, and pulls in the parts that fit. That stops being a conversation. That is a skill rewriting itself.&lt;/p&gt;
&lt;p&gt;Skills that learn from each other. Skills that improve by being part of a community, the way humans do.&lt;/p&gt;
&lt;p&gt;The wild thing is how obvious this feels. A skill learning from other skills isn&#039;t science fiction. It&#039;s a small step from what we&#039;re already doing.&lt;/p&gt;
&lt;p&gt;Of course, this is a terrible idea. It&#039;s a supply chain attack waiting to happen. One bad skill poisons everything that trusts it.&lt;/p&gt;
&lt;p&gt;This feels inevitable. The question isn&#039;t whether skills will learn from other skills. It&#039;s whether we&#039;ll have good sandboxes before they do.&lt;/p&gt;
&lt;p&gt;I&#039;ve been writing a lot about AI to help figure out its impact on Drupal and our ecosystem. I&#039;ve always tried to take a positive but balanced view. I explore it because it matters, and because ignoring it doesn&#039;t make it go away.&lt;/p&gt;
&lt;p&gt;But if I&#039;m honest, I&#039;m scared for what comes next.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>AI creates asymmetric pressure on Open Source</title>
      <link>https://dri.es/ai-creates-asymmetric-pressure-on-open-source</link>
      <guid>https://dri.es/ai-creates-asymmetric-pressure-on-open-source</guid>
      <pubDate>Thu, 29 Jan 2026 19:58:44 -0500</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/blog/asymmetric-ai-pressure-1280w.jpg&quot; alt=&quot;A humanoid figure stands in a rocky, shallow stream, facing a glowing triangular portal suspended amid crackling energy.&quot; width=&quot;1280&quot; height=&quot;832&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;AI makes it cheaper to contribute to Open Source, but it&#039;s not making life easier for maintainers. More contributions are flowing in, but the burden of evaluating them still falls on the same small group of people. That asymmetric pressure risks breaking maintainers.&lt;/p&gt;
&lt;h3&gt;The curl story&lt;/h3&gt;
&lt;p&gt;Daniel Stenberg, who maintains &lt;a href=&quot;https://curl.se/&quot;&gt;curl&lt;/a&gt;, just &lt;a href=&quot;https://daniel.haxx.se/blog/2026/01/26/the-end-of-the-curl-bug-bounty/&quot;&gt;ended the curl project&#039;s bug bounty program&lt;/a&gt;. The program had worked well for years. But in 2025, fewer than one in twenty submissions turned out to be real bugs.&lt;/p&gt;
&lt;p&gt;In a post called &lt;a href=&quot;https://daniel.haxx.se/blog/2025/07/14/death-by-a-thousand-slops/&quot;&gt;&amp;quot;Death by a thousand slops&amp;quot;&lt;/a&gt;, Stenberg described the toll on curl&#039;s seven-person security team: each report engaged three to four people, sometimes for hours, only to find nothing real. He wrote about the &amp;quot;emotional toll&amp;quot; of &amp;quot;mind-numbing stupidities&amp;quot;.&lt;/p&gt;
&lt;p&gt;Stenberg&#039;s response was pragmatic. He didn&#039;t ban AI. He ended the bug bounty. That alone removed most of the incentive to flood the project with low-quality reports.&lt;/p&gt;
&lt;p&gt;Drupal doesn&#039;t have a bug bounty, but it still has incentives: contribution credit, reputation, and visibility all matter. Those incentives can attract low-quality contributions too, and &lt;a href=&quot;https://dri.es/never-submit-code-you-do-not-understand&quot;&gt;the cost of sorting them out often lands on maintainers&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Caught between two truths&lt;/h3&gt;
&lt;p&gt;We&#039;ve seen some AI slop in Drupal, though not at the scale curl experienced. But our maintainers are stretched thin, and they see what is happening to other projects.&lt;/p&gt;
&lt;p&gt;That tension shows up in conversations about AI in Drupal Core and can lead to indecision. For example, people hesitate around &lt;a href=&quot;https://www.drupal.org/project/drupal/issues/3568936&quot;&gt;AGENTS.md files&lt;/a&gt; and &lt;a href=&quot;https://www.drupal.org/project/drupalorg/issues/3563839&quot;&gt;adaptable modules&lt;/a&gt; because they worry about inviting more contributions without adding more capacity to evaluate them.&lt;/p&gt;
&lt;p&gt;This is AI-driven asymmetric pressure in our community. I understand the hesitation. When we get this wrong, maintainers pay the price. They&#039;ve earned the right to be skeptical.&lt;/p&gt;
&lt;p&gt;Many also have concerns about AI itself: its environmental cost, its impact on their craft, and the unresolved legal and ethical questions around how it was trained. Others worry about security vulnerabilities slipping through. And for some, it&#039;s simply demoralizing to watch something they built with care become a target for high-volume, low-quality contributions. These concerns are legitimate and deserve to be heard.&lt;/p&gt;
&lt;p&gt;As a result, I feel caught between two truths.&lt;/p&gt;
&lt;p&gt;On one side, maintainers hold everything together. If they burn out or leave, Drupal is in serious trouble. We can&#039;t ask them to absorb more work without first creating relief.&lt;/p&gt;
&lt;p&gt;On the other side, the people who depend on Drupal are watching other platforms accelerate. If we move too slowly, they&#039;ll look elsewhere.&lt;/p&gt;
&lt;p&gt;Both are true. Protecting maintainers and accelerating innovation shouldn&#039;t be opposites, but right now they feel that way. As Drupal&#039;s project lead, my job is to help us find a path that honors both.&lt;/p&gt;
&lt;p&gt;I should be honest about where I stand. I&#039;ve been &lt;a href=&quot;https://dri.es/claude-code-meets-drupal&quot;&gt;writing software with AI tools&lt;/a&gt; for over a year now. I&#039;ve had real successes. I&#039;ve also seen some of our most experienced contributors become dramatically more productive, doing things they simply couldn&#039;t do before. That view comes from experience, not hype.&lt;/p&gt;
&lt;p&gt;But having a perspective is not the same as having all the answers. And leadership doesn&#039;t mean dragging people where they don&#039;t want to go. It means pointing a direction with care, staying open to different viewpoints, and not abandoning the people who hold the project together.&lt;/p&gt;
&lt;h3&gt;We&#039;ve sort of been here before&lt;/h3&gt;
&lt;p&gt;New technology has a way of lowering barriers, and lower barriers always come with tradeoffs. I saw this early in my career. I was writing low-level C for embedded systems by day, and after work I&#039;d come home and work on websites with Drupal and PHP. It was thrilling, and a stark contrast to my day job. You could build in an evening what took days in C.&lt;/p&gt;
&lt;p&gt;I remember that excitement. The early web coming alive. I hadn&#039;t felt the same excitement in 25 years, until AI.&lt;/p&gt;
&lt;p&gt;PHP brought in hobbyists and self-taught developers, people learning as they went. Many of them built careers here. But it also meant that a lot of early PHP code had serious security problems. The language got blamed, and many experts dismissed it entirely. Some still do.&lt;/p&gt;
&lt;p&gt;The answer wasn&#039;t rejecting PHP for enabling low-quality code. The answer was frameworks, better security practices, and shared standards.&lt;/p&gt;
&lt;p&gt;AI is a different technology, but I see the same patterns. It lowers barriers and will bring in new contributors who aren&#039;t experts yet. And like scripting languages, AI is here to stay. The question isn&#039;t whether AI is coming to Open Source. It&#039;s how we make it work.&lt;/p&gt;
&lt;h3&gt;AI in the right hands&lt;/h3&gt;
&lt;p&gt;The curl story doesn&#039;t end there. In October 2025, a researcher named Joshua Rogers used AI-powered code analysis tools to &lt;a href=&quot;https://daniel.haxx.se/blog/2025/10/10/a-new-breed-of-analyzers/&quot;&gt;submit hundreds of potential issues&lt;/a&gt;. Stenberg was &amp;quot;amazed by the quality and insights&amp;quot;. He and a fellow maintainer merged about 50 fixes from the initial batch alone.&lt;/p&gt;
&lt;p&gt;Earlier this week, a security startup called AISLE &lt;a href=&quot;https://www.lesswrong.com/posts/7aJwgbMEiKq5egQbd/ai-found-12-of-12-openssl-zero-days-while-curl-cancelled-its&quot;&gt;announced they had used AI to find 12 zero-days&lt;/a&gt; in the latest OpenSSL security release. OpenSSL is one of the most scrutinized codebases on the planet. It encrypts most of the internet. Some of the bugs AISLE found had been hiding for over 25 years. They also reported over 30 valid security issues to curl.&lt;/p&gt;
&lt;p&gt;The difference between this and the slop flooding Stenberg&#039;s inbox wasn&#039;t the use of AI. It was expertise and intent. Rogers and AISLE used AI to amplify deep knowledge. The low-quality reports used AI to replace expertise that wasn&#039;t there, chasing volume instead of insight.&lt;/p&gt;
&lt;p&gt;AI created new burden for maintainers. But used well, it may also be part of the relief.&lt;/p&gt;
&lt;h3&gt;Earn trust through results&lt;/h3&gt;
&lt;p&gt;I reached out to Daniel Stenberg this week to compare notes. He&#039;s navigating the same tensions inside the curl project, with maintainers who are skeptical, if not outright negative, toward AI.&lt;/p&gt;
&lt;p&gt;His approach is simple. Rather than pushing tools on his team, he tests them on himself. He uses AI review tools on his own pull requests to understand their strengths and limits, and to show where they actually help. The goal is to find useful applications without forcing anyone else to adopt them.&lt;/p&gt;
&lt;p&gt;The curl team does use AI-powered analyzers today because, as Stenberg puts it, &amp;quot;they have proven to find things no other analyzers do&amp;quot;. The tools earned their place.&lt;/p&gt;
&lt;p&gt;That is a model I&#039;d like us to try in Drupal. Experiments should stay with willing contributors, and the burden of proof should remain with the experimenters. Nothing should become a new expectation for maintainers until it has demonstrated real, repeatable value.&lt;/p&gt;
&lt;p&gt;That does not mean we should wait. If we want evidence instead of opinions, we have to create it. Contributors should experiment on their own work first. When something helps, show it. When something doesn&#039;t, share that too. We need honest results, not just positive ones. Maintainers don&#039;t have to adopt anything, but when someone shows up with real results, it&#039;s worth a look.&lt;/p&gt;
&lt;p&gt;Not all low-quality contributions come from bad faith. Many contributors are learning, experimenting, and trying to help. They want what is best for Drupal. A welcoming environment means building the guidelines and culture to help them succeed, with or without AI, not making them afraid to try.&lt;/p&gt;
&lt;p&gt;I believe AI tools are part of how we create relief. I also know that is a hard sell to someone already stretched thin, or dealing with AI slop, or wrestling with what AI means for their craft. The people we most want to help are often the most skeptical, and they have good reason to be.&lt;/p&gt;
&lt;p&gt;I&#039;m going to do my part. I&#039;ll seek out contributors who are experimenting with AI tools and share what they&#039;re learning, what works, what doesn&#039;t, and what surprises them. I&#039;ll try some of these tools myself before asking anyone else to. And I&#039;ll keep writing about what I find, including the failures.&lt;/p&gt;
&lt;p&gt;If you&#039;re experimenting with AI tools, I&#039;d love to hear about it. I&#039;ve opened &lt;a href=&quot;https://www.drupal.org/project/drupal/issues/3570498&quot;&gt;an issue on Drupal.org&lt;/a&gt; to collect real-world experiences from contributors. Share what you&#039;re learning in the issue, or write about it on your own blog and link it there. I&#039;ll report back on what we learn on my blog or at DrupalCon.&lt;/p&gt;
&lt;h3&gt;Protect your maintainers&lt;/h3&gt;
&lt;p&gt;This isn&#039;t just Drupal&#039;s challenge. Every large Open Source project is navigating the same tension between enthusiasm for AI and real concern about its impact.&lt;/p&gt;
&lt;p&gt;But wherever this goes, one principle should guide us: protect your maintainers. They&#039;re a rare asset, hard to replace and easy to lose. Any path forward that burns them out isn&#039;t a path forward at all.&lt;/p&gt;
&lt;p&gt;I believe Drupal will be stronger with AI tools, not weaker. I believe we can reduce maintainer burden rather than add to it. But getting there will take experimentation, honest results, and collaboration. That is the direction I want to point us in. Let&#039;s keep an open mind and let evidence and adoption speak for themselves.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thanks to &lt;a href=&quot;https://www.drupal.org/u/phenaproxima&quot;&gt;phenaproxima&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/hestenet&quot;&gt;Tim Lehnen&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/scott-falconer&quot;&gt;Scott Falconer&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/nod_&quot;&gt;Théodore Biadala&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/jurgenhaas&quot;&gt;Jürgen Haas&lt;/a&gt; and &lt;a href=&quot;https://www.drupal.org/u/effulgentsia&quot;&gt;Alex Bronstein&lt;/a&gt; for reviewing my draft.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Software as clay on the wheel</title>
      <link>https://dri.es/software-as-clay-on-the-wheel</link>
      <guid>https://dri.es/software-as-clay-on-the-wheel</guid>
      <pubDate>Tue, 20 Jan 2026 14:39:26 -0500</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/miscellaneous-2020/ceramics-2-1280w.jpg&quot; alt=&quot;Two people shape a clay pot on a spinning pottery wheel, their hands covered in wet clay.&quot; width=&quot;1280&quot; height=&quot;853&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;A few weeks ago, Simon Willison started a coding agent, went to decorate a Christmas tree with his family, watched a movie, and came back to a working HTML5 parser.&lt;/p&gt;
&lt;p&gt;It sounds like a party trick.  But it worked because the results were easy to check. The unit tests either pass or they don&#039;t. The type checker either accepts the code or it doesn&#039;t. In that kind of environment, the work can keep moving without much supervision.&lt;/p&gt;
&lt;p&gt;Geoffrey Huntley&#039;s &lt;a href=&quot;https://ghuntley.com/loop/&quot;&gt;Ralph Wiggum loop&lt;/a&gt; is probably the cleanest expression of this idea I&#039;ve seen, and it&#039;s becoming more popular quickly. In &lt;a href=&quot;https://youtu.be/4Nna09dG_c0&quot;&gt;his demonstration video&lt;/a&gt;, he describes creating specifications through conversation with an AI agent, and letting the loop run. Each iteration starts fresh: the agent reads the specification, picks the most important remaining task, implements it, runs the tests. If they pass, it commits to Git and exits. The next iteration begins with empty context, reads the current state from disk, and picks up where the previous run left off.&lt;/p&gt;
&lt;p&gt;If you think about it, that&#039;s what human prompting already looks like: prompt, wait, review, prompt again. You&#039;re shaping the code or text the way a potter shapes clay: push a little, spin the wheel, look, push again. The Ralph loop just automates the spinning, which makes much more ambitious tasks practical.&lt;/p&gt;
&lt;p&gt;The key difference is how state is handled. When you work this way by hand, the whole conversation comes along for the ride. In the Ralph loop, each iteration starts clean.&lt;/p&gt;
&lt;p&gt;Why? Because carrying everything with you all the time is a great way to stop getting anywhere. If you&#039;re going to work on a problem for hundreds of iterations, things start to pile up. As tokens accumulate, the signal can get lost in noise. By flushing context between iterations and storing state in files, each run can start clean.&lt;/p&gt;
&lt;p&gt;Simon Willison&#039;s &lt;a href=&quot;https://simonwillison.net/2025/Dec/15/porting-justhtml/&quot;&gt;port of an HTML5 library from Python to JavaScript&lt;/a&gt; showed the principle at larger scale. Using GPT-5.2 through Codex CLI with the &lt;code&gt;--yolo&lt;/code&gt; flag for uninterrupted execution, he gave a handful of prompts and let it run while he decorated a Christmas tree with his family and watched a movie.&lt;/p&gt;
&lt;p&gt;Four and a half hours later, the agent had produced a working HTML5 parser. It passed over 9,200 tests from the official &lt;a href=&quot;https://github.com/html5lib/html5lib-tests&quot;&gt;html5lib-tests suite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;HTML5 parsing is notoriously complex, but the specification precisely defines how even malformed markup should be handled, with thousands of edge cases accumulated over years. The tests gave the AI agent constant grounding: each test run pulled it back to reality before errors could compound.&lt;/p&gt;
&lt;p&gt;As Simon put it: &amp;quot;If you can reduce a problem to a robust test suite you can set a coding agent loop loose on it with a high degree of confidence that it will eventually succeed&amp;quot;. Ralph loops and Willison&#039;s approach differ in structure, but both depend on tests as the source of truth.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cursor.com/blog/scaling-agents&quot;&gt;Cursor&#039;s research on scaling agents&lt;/a&gt; confirms this is starting to work at enterprise scale. Their team explored what happens when hundreds of agents work concurrently on a single codebase for weeks. In one experiment, they built a web browser from scratch. Over a million lines of code across a thousand files, generated in a week. And &lt;a href=&quot;https://simonwillison.net/2026/Jan/19/scaling-long-running-autonomous-coding/&quot;&gt;the browser worked&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That doesn&#039;t mean it&#039;s secure, fast, or something you&#039;d ship. It just means it met the criteria they gave it. If you decide to check for security or performance, it will work toward that as well. But the pattern is what matters: clear tests, constant verification, and agents that know when they&#039;re done.&lt;/p&gt;
&lt;p&gt;From solo loops to hundreds of agents running in parallel, the same pattern keeps emerging. It feels like something fundamental is crystallizing: autonomous AI is starting to work well when you can accurately define success upfront.&lt;/p&gt;
&lt;p&gt;Willison&#039;s success criteria were &amp;quot;simple&amp;quot;: all 9,200 tests needed to pass. That is a lot of tests, but the agent got there. Clear success criteria made autonomy possible.&lt;/p&gt;
&lt;p&gt;As I argued in &lt;a href=&quot;https://dri.es/ai-flattens-interfaces-and-deepens-foundations&quot;&gt;AI flattens interfaces and deepens foundations&lt;/a&gt;, this changes where humans add value:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Humans are moving to where they set direction at the start and refine results at the end. AI handles everything in between.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The title of this post comes from Geoffrey Huntley. He describes software as &lt;a href=&quot;https://ghuntley.com/loop/&quot;&gt;clay on the pottery wheel&lt;/a&gt;, and once you&#039;ve worked this way, it&#039;s hard to think about it any other way. As Huntley wrote: &amp;quot;If something isn&#039;t right, you throw it back on the wheel and keep going&amp;quot;. That is exactly how it felt when I built my first Ralph Wiggum loop. Throw it back, refine it, spin again until it&#039;s right.&lt;/p&gt;
&lt;p&gt;Of course, the Ralph Wiggum loop has limits. It works well when verification is unambiguous. A unit test returns pass or fail. But not all problems come with clear tests. And writing tests can be a lot of work.&lt;/p&gt;
&lt;p&gt;For example, I&#039;ve been thinking about how such loops could work for Drupal, where non-technical users build pages. &amp;quot;Make this page more on-brand&amp;quot; isn&#039;t a test you can run.&lt;/p&gt;
&lt;p&gt;Or maybe it is? An AI agent could evaluate a page against brand guidelines and return pass or fail. It could check reading level and even do some basic accessibility tests. The verifier doesn&#039;t have to be a traditional test suite. It just has to provide clear feedback.&lt;/p&gt;
&lt;p&gt;All of this just exposes something we already intuitively understand: defining success is hard. Really hard. When people build pages manually, they often iterate until it &amp;quot;feels right&amp;quot;. They know what they want when they see it, but can&#039;t always articulate it upfront. Or they hire experts who carry that judgment from years of experience. This is the part of the work that is &lt;a href=&quot;https://dri.es/ai-and-the-great-digital-agency-unbundling&quot;&gt;hardest to automate&lt;/a&gt;. The craft is moving upstream, from implementation to specification and validation.&lt;/p&gt;
&lt;p&gt;The question for any task is becoming: &lt;em&gt;can you tell, reliably, whether the result is getting better or worse?&lt;/em&gt; Where you can, the loop takes over. Where you can&#039;t, your judgment still matters.&lt;/p&gt;
&lt;p&gt;The boundary keeps moving fast. A year ago, I was &lt;a href=&quot;https://dri.es/comparing-local-llms-for-alt-text-generation&quot;&gt;wrestling with local LLMs to generate good &lt;code&gt;alt&lt;/code&gt;-text&lt;/a&gt; for my photos. Today, AI agents build working HTML5 parsers while you watch a movie.  It&#039;s hard not to find that a little absurd. And hard not to be excited.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>The Third Audience</title>
      <link>https://dri.es/the-third-audience</link>
      <guid>https://dri.es/the-third-audience</guid>
      <pubDate>Wed, 14 Jan 2026 17:33:29 -0500</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/blog/machines-reading-web-content-1280w.jpg&quot; alt=&quot;An empty office chair facing several glowing computer monitors, with small glowing fragments floating upward.&quot; width=&quot;1280&quot; height=&quot;850&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;I used Claude Code to build a new feature for my site this morning. Any URL on my blog can now return Markdown instead of HTML.&lt;/p&gt;
&lt;p&gt;I added a small hint in the HTML to signal that the Markdown version exists, mostly to see what would happen. My plan was to leave it running for a few weeks and write about it later if anything interesting turned up.&lt;/p&gt;
&lt;p&gt;Within an hour, I had &lt;em&gt;hundreds&lt;/em&gt; of requests from AI crawlers, including ClaudeBot, GPTBot, OpenAI&#039;s SearchBot, and more. So much for waiting a few weeks.&lt;/p&gt;
&lt;p&gt;For two decades, we built sites for two audiences: humans and search engines. AI agents are now the third audience, and most websites aren&#039;t optimized for them yet.&lt;/p&gt;
&lt;p&gt;We learned how to play the &lt;a href=&quot;https://en.wikipedia.org/wiki/Search_engine_optimization&quot;&gt;SEO&lt;/a&gt; game so our sites would rank in Google. Now people are starting to invest in things like &lt;a href=&quot;https://en.wikipedia.org/wiki/Generative_engine_optimization&quot;&gt;Generative Engine Optimization&lt;/a&gt; (GEO) and Answer Engine Optimization (AEO).&lt;/p&gt;
&lt;p&gt;I wanted to understand what that actually means in practice, so I turned my own site into a small experiment and made every page available as Markdown.&lt;/p&gt;
&lt;p&gt;If you&#039;ve been following my blog, you know that &lt;a href=&quot;https://dri.es/switching-to-markdown-after-20-years-of-html&quot;&gt;Drupal stores my blog posts as Markdown&lt;/a&gt;. But when AI crawlers visited, they got HTML like everyone else. They had to wade through navigation menus and wrapper divs to find the actual content. My content already existed in a more AI-friendly format. I just wasn&#039;t serving it to them.&lt;/p&gt;
&lt;p&gt;It only took a few changes, and &lt;a href=&quot;https://www.drupal.org/&quot;&gt;Drupal&lt;/a&gt; made that easy.&lt;/p&gt;
&lt;p&gt;First, I added content negotiation to my site. When a request includes &lt;code&gt;Accept: text/markdown&lt;/code&gt; in the HTTP headers, my site returns the Markdown instead of the rendered HTML.&lt;/p&gt;
&lt;p&gt;Second, I made it possible to append &lt;code&gt;.md&lt;/code&gt; to any URL. For example, &lt;code&gt;https://dri.es/principles-for-life.md&lt;/code&gt; gives you clean Markdown with metadata like title, date, and tags. You can also try adding &lt;code&gt;.md&lt;/code&gt; to the URL of this post.&lt;/p&gt;
&lt;p&gt;But how did those crawlers find the Markdown version so fast? I borrowed a pattern from RSS: &lt;a href=&quot;https://dri.es/rss-auto-discovery&quot;&gt;RSS auto-discovery&lt;/a&gt;. Many sites include a link tag with &lt;code&gt;rel=&amp;quot;alternate&amp;quot;&lt;/code&gt; pointing to their RSS feed. I applied the same idea to Markdown: every HTML page now includes a link tag announcing that an alternative Markdown version exists at the &lt;code&gt;.md&lt;/code&gt; URL.&lt;/p&gt;
&lt;p&gt;That &amp;quot;Markdown auto-discovery&amp;quot; turned out to be the key. The crawlers parse the HTML, find the alternate Markdown link, and immediately switch. That explains the hundreds of requests I saw within the first hour.&lt;/p&gt;
&lt;p&gt;The speed of adoption tells me AI agents are hungry for cleaner content formats and will use them the moment they find them. What I don&#039;t know yet is whether this actually benefits me. It might lead to more visibility in AI answers, or it might just make it easier for AI companies to use my content without sending traffic back.&lt;/p&gt;
&lt;p&gt;I know not everyone will love this experiment. Humans, including me, are teaching machines how to read our sites better, while machines are teaching humans to stop visiting us. The &lt;a href=&quot;https://dri.es/the-webs-broken-deal-with-ai-companies&quot;&gt;value exchange between creators and AI companies&lt;/a&gt; is far from settled, and it&#039;s entirely possible that making content easier for AI to consume will accelerate the hollowing out of the web.&lt;/p&gt;
&lt;p&gt;I don&#039;t have a good answer to that yet, but I&#039;d rather experiment than look away. I&#039;m going to leave this running and report back.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>AI is a business model stress test</title>
      <link>https://dri.es/ai-is-a-business-model-stress-test</link>
      <guid>https://dri.es/ai-is-a-business-model-stress-test</guid>
      <pubDate>Fri, 09 Jan 2026 21:17:02 -0500</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/blog/sailing-into-the-unknown-1280w.jpg&quot; alt=&quot;A lone sailor in a small boat glides across a glowing, calm sea at night beneath a star-filled sky.&quot; width=&quot;1280&quot; height=&quot;850&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://tailwindcss.com/&quot;&gt;Tailwind Labs&lt;/a&gt; laid off 75% of its engineering team last week.&lt;/p&gt;
&lt;p&gt;Adam Wathan, CEO of Tailwind Labs, spent the holidays running revenue forecasts. In a &lt;a href=&quot;https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957&quot;&gt;GitHub comment&lt;/a&gt;, he explained what happened:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The reality is that 75% of the people on our engineering team lost their jobs here yesterday because of the brutal impact AI has had on our business. Traffic to our docs is down about 40% from early 2023 despite Tailwind being more popular than ever.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The story circulating is that AI is killing Open Source businesses. I don&#039;t think that is quite right.&lt;/p&gt;
&lt;p&gt;AI didn&#039;t kill Tailwind&#039;s business. It stress tested it. Their business model failed the test, but that is not an indictment of all Open Source business models.&lt;/p&gt;
&lt;p&gt;Tailwind&#039;s business model worked for years. It relied on developers visiting their documentation, discovering Tailwind Plus while browsing, and buying it. Tailwind Plus is a $299 collection of pre-built UI components. Traffic led to discovery, and discovery drove sales. It was a reasonable business model, but always fragile.&lt;/p&gt;
&lt;p&gt;In the last year, more and more developers started asking AI for code instead of reading documentation, and their sales and marketing funnel broke.&lt;/p&gt;
&lt;p&gt;There is a fairness issue here that I don&#039;t want to skip past. AI companies trained their models on Tailwind&#039;s documentation and everything the community wrote about it. And now those models generate Tailwind code and answer Tailwind questions without sending anyone to Tailwind&#039;s website. The value got extracted, but &lt;a href=&quot;https://dri.es/the-webs-broken-deal-with-ai-companies&quot;&gt;compensation isn&#039;t flowing back&lt;/a&gt;. That bothers me, and it deserves a broader policy conversation.&lt;/p&gt;
&lt;p&gt;What I keep coming back to is this: AI commoditizes anything you can fully &lt;em&gt;specify&lt;/em&gt;. Documentation, pre-built card components, a CSS library, Open Source plugins. Tailwind&#039;s commercial offering was built on &amp;quot;specifications&amp;quot;. AI made those things trivial to generate. AI can ship a specification but it can&#039;t run a business.&lt;/p&gt;
&lt;p&gt;So where does value live now? In what requires showing up, not just specifying. Not what you can specify once, but what requires showing up again and again.&lt;/p&gt;
&lt;p&gt;Value is shifting to operations: deployment, testing, rollbacks, observability. You can&#039;t prompt 99.95% uptime on Black Friday. Neither can you prompt your way to keeping a site secure, updated, and running.&lt;/p&gt;
&lt;p&gt;That is why &lt;a href=&quot;https://vercel.com/&quot;&gt;Vercel&lt;/a&gt; created &lt;a href=&quot;https://nextjs.org/&quot;&gt;Next.js&lt;/a&gt; and gives it away for free. The Open Source framework is the conduit; the hosting is the product. Same with &lt;a href=&quot;https://www.acquia.com/&quot;&gt;Acquia&lt;/a&gt;, my own company. A big part of Acquia&#039;s business model is selling products around &lt;a href=&quot;https://www.drupal.org/&quot;&gt;Drupal&lt;/a&gt;: hosting, search, CI/CD pipelines, digital asset management, and more. We don&#039;t sell describable things; we sell operations.&lt;/p&gt;
&lt;p&gt;Open Source was never the commercial product. It&#039;s the conduit to something else.&lt;/p&gt;
&lt;p&gt;When asked what to pivot to, Wathan was candid: &amp;quot;Still to this day, I don&#039;t know what we should be pivoting to&amp;quot;. I&#039;ve written about &lt;a href=&quot;https://dri.es/ai-and-the-great-digital-agency-unbundling&quot;&gt;how digital agencies might evolve&lt;/a&gt;, but CSS frameworks and component libraries are a harder case. Some Open Source projects make for great features, but not great businesses.&lt;/p&gt;
&lt;p&gt;Tailwind CSS powers millions of sites. The framework will survive. Whether the company does is a different question. I&#039;m rooting for them. The world needs more successful Open Source businesses.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
