<?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>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>
    <item>
      <title>Elo 1800</title>
      <link>https://dri.es/elo-1800</link>
      <guid>https://dri.es/elo-1800</guid>
      <pubDate>Fri, 20 Mar 2026 16:47:59 -0400</pubDate>
      <description>&lt;p&gt;I finally crossed 1800 on Chess.com. It took 17 months to gain 100 points. It felt endless.&lt;/p&gt;
&lt;p&gt;A few times, I was one game away from reaching 1800. Each time, I collapsed into a losing streak and dropped back to the low 1700s. Few things I do for fun frustrate me as much as chess.&lt;/p&gt;
&lt;p&gt;Growth never happens in a straight line. Improvement often looks like regression. Even when I&#039;m going backward, I&#039;m still improving. That lesson carries into work and life.&lt;/p&gt;
&lt;p&gt;When working out on the Peloton, I often watch 2000-rated players on YouTube. They&#039;re only 200 Elo points higher, but the gap feels massive. Skill doesn&#039;t scale linearly.&lt;/p&gt;
&lt;p&gt;My game has certainly improved. I see weaknesses faster now, which helps me form better middle game plans. For better or worse, I still rely on a few familiar openings, but they usually get me to a playable position.&lt;/p&gt;
&lt;p&gt;Still, 17 months for 100 points feels slow. Should I aim for 2000? Part of me wants the challenge. Another part questions the tradeoff, or whether I&#039;ll get there at all. I&#039;ve not decided yet. For now, I am proud of reaching 1800.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Never submit code you don&#039;t understand</title>
      <link>https://dri.es/never-submit-code-you-do-not-understand</link>
      <guid>https://dri.es/never-submit-code-you-do-not-understand</guid>
      <pubDate>Mon, 16 Mar 2026 11:37:45 -0400</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/blog/never-submit-code-you-dont-understand-1280w.png&quot; alt=&quot;Blue and red graphic with a white star and the text: &amp;amp;quot;Never submit code you don&amp;amp;#039;t understand.&amp;amp;quot;&quot; width=&quot;1280&quot; height=&quot;720&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Years ago, in the early Drupal days, you would see a mantra everywhere: &amp;quot;Don&#039;t hack core&amp;quot;.&lt;/p&gt;
&lt;p&gt;It showed up in issue queues, conference talks, support channels, stickers, and even on T-shirts. It was short and memorable, and it solved a real problem: too many people were modifying Drupal Core instead of extending it properly.&lt;/p&gt;
&lt;p&gt;Over time the mantra worked. The ecosystem matured. Not just the software itself, but also the habits and expectations around it. Today you rarely hear people say &amp;quot;Don&#039;t hack core&amp;quot;.&lt;/p&gt;
&lt;p&gt;With AI changing how code gets written, we may need a new mantra.&lt;/p&gt;
&lt;p&gt;In Open Source, all code needs to be understood and reviewed before it can be merged. That responsibility belongs to both contributors and maintainers. AI is changing how code gets written, but it does not change that responsibility. In fact, it may make it easier to forget.&lt;/p&gt;
&lt;p&gt;Code you don&#039;t understand becomes someone else&#039;s problem. In Open Source, that someone is often &lt;a href=&quot;https://dri.es/ai-creates-asymmetric-pressure-on-open-source&quot;&gt;the maintainer reviewing your patch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Offloading bad code onto maintainers wastes people&#039;s time, which is inconsiderate, and slows down reviews for everyone. You also miss the chance to learn from the code and grow as a developer.&lt;/p&gt;
&lt;p&gt;It shouldn&#039;t matter what tools you use. But if you submit code, you should be able to explain what it does, why it works, and how it interacts with the rest of the code.&lt;/p&gt;
&lt;p&gt;Everyone starts somewhere. Even today&#039;s top contributors submitted imperfect patches early on. You are welcome here, with or without AI tools. Perfection isn&#039;t required, but understanding your code is. Own your code and respect people&#039;s time.&lt;/p&gt;
&lt;p&gt;Maybe it&#039;s time for some new stickers and T-shirts.&lt;/p&gt;
&lt;p&gt;Never submit code you don&#039;t understand.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thanks to &lt;a href=&quot;https://www.drupal.org/u/cainaru&quot;&gt;Natalie Cainaru&lt;/a&gt;, &lt;a href=&quot;https://www.drupal.org/u/jeremy&quot;&gt;Jeremy Andrews&lt;/a&gt; and &lt;a href=&quot;https://www.drupal.org/u/g%C3%A1bor-hojtsy&quot;&gt;Gábor Hojtsy&lt;/a&gt; for reviewing my draft.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>What it costs to run Drupal&#039;s infrastructure</title>
      <link>https://dri.es/what-it-costs-to-run-drupal-infrastructure</link>
      <guid>https://dri.es/what-it-costs-to-run-drupal-infrastructure</guid>
      <pubDate>Tue, 10 Mar 2026 18:30:34 -0400</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/blog/complex-infrastructure-1280w.jpg&quot; alt=&quot;Silhouette of a person standing before a large circular portal surrounded by glowing screens and cables, suggesting complex digital infrastructure.&quot; width=&quot;1280&quot; height=&quot;850&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Yesterday I wrote about &lt;a href=&quot;https://dri.es/open-source-infrastructure-deserves-a-business-model&quot;&gt;how Open Source infrastructure across many ecosystems is fragile and underfunded&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Drupal is no exception.&lt;/p&gt;
&lt;p&gt;Like most Open Source projects, Drupal runs on infrastructure that millions of people depend on but very few people directly pay for.&lt;/p&gt;
&lt;p&gt;Drupal&#039;s infrastructure costs roughly $3 million per year, including servers, bandwidth, CDNs, software, and staff.&lt;/p&gt;
&lt;p&gt;Funding comes from a mix of donated infrastructure from &lt;a href=&quot;https://aws.amazon.com/&quot;&gt;AWS&lt;/a&gt; and the &lt;a href=&quot;https://osuosl.org/&quot;&gt;OSU Open Source Lab&lt;/a&gt;, corporate memberships through our &lt;a href=&quot;https://www.drupal.org/drupal-services&quot;&gt;Drupal Certified Partner program&lt;/a&gt;, in‑kind contribution from &lt;a href=&quot;https://www.tag1.com/&quot;&gt;Tag1&lt;/a&gt;, revenue from DrupalCon, donations, and sponsorship on &lt;a href=&quot;https://www.drupal.org&quot;&gt;Drupal.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Last year, Drupal Association board member &lt;a href=&quot;https://www.drupal.org/u/farriss&quot;&gt;Tiffany Farriss&lt;/a&gt; and CTO &lt;a href=&quot;https://www.drupal.org/u/hestenet&quot;&gt;Tim Lehnen&lt;/a&gt; analyzed the project&#039;s infrastructure costs. Their estimate: infrastructure for Drupal 8+ sites costs about $10 per active website per year.&lt;/p&gt;
&lt;p&gt;But the Drupal Association has only about $7.50 per site per year to work with. About $3 comes from DrupalCon and the Certified Partner program. The remaining $4.50 comes from in-kind support: donated hosting, Tag1&#039;s infrastructure partnership, volunteer contributions and more.&lt;/p&gt;
&lt;p&gt;The missing $2.50 per site shows up as technical debt: certain upgrades get deferred, legacy systems persist longer than they should, and the community sometimes wonders why infrastructure progress feels slow.&lt;/p&gt;
&lt;p&gt;Plus, the $7.50 per site we currently fund is fragile. DrupalCon revenue depends on event attendance. Advertising depends on traffic. Tag1&#039;s in-kind contribution depends on one company&#039;s continued generosity. Our donated infrastructure from AWS and OSU could disappear at any time. If any of that support disappears, the funding gap grows, more infrastructure work gets deferred, and things could start breaking.&lt;/p&gt;
&lt;p&gt;Before talking about new funding models, it is worth asking whether the Drupal Association could reduce its infrastructure costs. Ten dollars per site per year may sound like a lot. Should we operate all of this infrastructure ourselves, or rely more on hosted platforms like GitHub or GitLab.com? Are parts of our infrastructure more complex than they need to be? Could we customize less to reduce costs and move faster?&lt;/p&gt;
&lt;p&gt;These are the right questions to ask. I believe we need to work both sides of the ledger: take a hard look at what we spend and build a funding model that depends less on goodwill. In practice, infrastructure decisions rarely optimize for everything at once. They involve tradeoffs between cost, speed, flexibility, and control.&lt;/p&gt;
&lt;p&gt;Corporate patronage is worth considering. A single well-resourced sponsor could fund Drupal&#039;s infrastructure in a way community fundraising cannot, and if the choice were between a patron and a crisis, a patron wins. It&#039;s fast, requires no technical changes, and doesn&#039;t touch the social contract with site owners.&lt;/p&gt;
&lt;p&gt;But patronage trades one fragility for another. Instead of depending on event attendance or AWS cloud credits, you depend on one company&#039;s continued generosity and strategic alignment with the project. If their priorities shift, we&#039;re back where we started.&lt;/p&gt;
&lt;p&gt;A patron funding infrastructure at this scale would also expect meaningful benefits. That could mean greater visibility, access to lead flow, and some level of control over Drupal.org.&lt;/p&gt;
&lt;p&gt;Most infrastructure systems connect usage to funding. Cloud platforms charge for compute. Roads are funded by taxes paid by the people who drive them. Drupal&#039;s infrastructure has no such mechanism: hundreds of thousands of sites depend on Drupal.org services, but the cost of operating those services is disconnected from the people who rely on them.&lt;/p&gt;
&lt;p&gt;A funding model tied to usage avoids some of the issues with corporate patronage, but comes with its own trade-off. Open Source culture is built on anonymous access. You can download any package, no questions asked, no account required. Any usage-based model has to break that norm.&lt;/p&gt;
&lt;p&gt;The simplest version would probably require a Drupal.org API key to download packages or receive automatic update notifications. Requiring an API key is standard practice for any commercial API, but in Open Source it feels different. Requiring site owners to identify themselves to Drupal.org is a cultural shift, even if the key itself is free forever.&lt;/p&gt;
&lt;p&gt;Any such mechanism requires changes to Drupal Core, which could take years to reach the installed base. If we go down this route, we can&#039;t wait for a funding crisis to begin this work. By the time a real crisis arrives, we could still be years away from a solution.&lt;/p&gt;
&lt;p&gt;I don&#039;t have a specific mechanism to propose yet. My goal here is to lay out the problem, explore potential solutions, and start the conversation. But we should start that conversation now, while we have the time and stability to get it right. Otherwise we may end up having this conversation later, under more pressure and with fewer options.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thanks to &lt;a href=&quot;https://www.drupal.org/u/farriss&quot;&gt;Tiffany Farriss&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; and &lt;a href=&quot;https://www.drupal.org/u/lauriii&quot;&gt;Lauri Timmanee&lt;/a&gt; for reviewing my draft.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Open Source infrastructure deserves a business model </title>
      <link>https://dri.es/open-source-infrastructure-deserves-a-business-model</link>
      <guid>https://dri.es/open-source-infrastructure-deserves-a-business-model</guid>
      <pubDate>Mon, 09 Mar 2026 14:36:23 -0400</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/blog/open-source-infrastructure-cracks-1280w.jpg&quot; alt=&quot;A person stands before a massive circular machine with cracks forming inside it, suggesting infrastructure under pressure.&quot; width=&quot;1280&quot; height=&quot;850&quot; fetchpriority=&quot;high&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Open Source software is free to download. But the infrastructure that makes it usable is not.&lt;/p&gt;
&lt;p&gt;When developers install or update dependencies through npm, Composer, pip, or Cargo, those tools rely on package registries that host and distribute millions of software packages. When maintainers collaborate, they depend on hosted services: Git repositories, CI pipelines, and other tools to build, test, and release software.&lt;/p&gt;
&lt;p&gt;Most of this infrastructure is invisible to end users, and almost no one thinks about what it costs to run.&lt;/p&gt;
&lt;p&gt;But it is not free. Someone has to operate the servers, pay for bandwidth, respond to support questions, patch security issues, and keep everything reliable.&lt;/p&gt;
&lt;p&gt;Much of the modern software ecosystem depends on these services working reliably. And yet the organizations operating them are almost always scrambling to fund them.&lt;/p&gt;
&lt;h3&gt;A patchwork of fragile arrangements&lt;/h3&gt;
&lt;p&gt;Every large Open Source project has found some way to keep its infrastructure running. Usually that means a mix of donated services, sponsorships, fundraising, cross-subsidy, or patronage from a single company.&lt;/p&gt;
&lt;p&gt;The table below highlights the primary funding mechanisms various Open Source projects depend on, even though most projects combine several.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
  &lt;tr&gt;
  &lt;th&gt;&lt;/th&gt;
  &lt;th&gt;Donated infrastructure&lt;/th&gt;
  &lt;th&gt;Multi-company sponsorship&lt;/th&gt;
  &lt;th&gt;Community funding&lt;/th&gt;
  &lt;th&gt;Single-company patronage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
  &lt;td&gt;PyPI&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☑&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
  &lt;td&gt;Packagist&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☑&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
  &lt;td&gt;npm&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☑&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
  &lt;td&gt;WordPress&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☑&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
  &lt;td&gt;RubyGems&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☑&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☑&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
  &lt;td&gt;Drupal&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☑&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☑&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☑&lt;/td&gt;
  &lt;td style=&quot;text-align:center;&quot;&gt;☐&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The mix differs across ecosystems, and some rely on several mechanisms at once. But one thing stands out: none of these approaches tie funding directly to how much the infrastructure is used.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pypi.org/&quot;&gt;PyPI&lt;/a&gt;, the Python Package Index, illustrates the sponsorship model. It handles billions of downloads a day on infrastructure donated by Fastly, AWS, and Google Cloud. The &lt;a href=&quot;https://www.python.org/psf-landing/&quot;&gt;Python Software Foundation&lt;/a&gt; described this arrangement&#039;s fragility in a &lt;a href=&quot;https://pyfound.blogspot.com/2025/10/open-infrastructure-is-not-free-pypi.html&quot;&gt;post last October&lt;/a&gt;: if a single sponsor decides not to renew, it would cost them tens of thousands of dollars a month to replace the lost infrastructure.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://packagist.org/&quot;&gt;Packagist&lt;/a&gt;, the main PHP package repository, follows a different approach. It is run by a private company that also sells a commercial product called &lt;a href=&quot;https://packagist.com/&quot;&gt;Private Packagist&lt;/a&gt;. Revenue from the paid product subsidizes the free public registry. It&#039;s one of the more sustainable models out there, though it means a public good depends on one company&#039;s continued success.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.npmjs.com/&quot;&gt;npm&lt;/a&gt; tried to operate as an independent company, ran into serious financial trouble, and was eventually acquired by GitHub in 2020. The end result is that critical JavaScript infrastructure is now owned by Microsoft.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://wordpress.org/&quot;&gt;WordPress.org&lt;/a&gt; runs on a different version of the same dynamic: corporate patronage. Automattic, by far the ecosystem&#039;s largest commercial beneficiary, subsidizes most of the infrastructure. It works, but it also means that whoever funds the infrastructure controls it.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://fair.pm/&quot;&gt;FAIR project&lt;/a&gt;, a federated package manager backed by the Linux Foundation, was designed to give the WordPress ecosystem an independent alternative. The software works but its organizers recently stepped back after &lt;a href=&quot;https://joost.blog/fair-wordpress-and-knowing-when-to-stop/&quot;&gt;failing to secure long-term funding commitments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://rubygems.org/&quot;&gt;RubyGems&lt;/a&gt; took the community fundraising route, &lt;a href=&quot;https://rubycentral.org/news/rubygems-org-funding-model-a-new-path-for-community-led-growth/&quot;&gt;launching a program&lt;/a&gt; last year asking businesses for $2,500 to $5,000 annually, with about 110 supporters needed to cover the registry&#039;s operations.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.drupal.org&quot;&gt;Drupal&lt;/a&gt;, the Open Source CMS I help lead, depends on the Drupal Association to run much of the infrastructure behind the project: Composer endpoints, GitLab repositories, CI pipelines, automatic update notifications, and more. Running all of this costs roughly $3 million a year. Funding comes from a mix of donated infrastructure, community funding, DrupalCon revenue, and sponsorship.&lt;/p&gt;
&lt;p&gt;When the economics break, the consequences become visible. In February 2026, &lt;a href=&quot;https://www.gnome.org/&quot;&gt;GNOME&lt;/a&gt; began &lt;a href=&quot;https://www.phoronix.com/news/GNOME-GitHub-GitLab-Redirect&quot;&gt;redirecting Git traffic from its own GitLab to GitHub mirrors&lt;/a&gt; to reduce bandwidth costs. As a result, GitHub and its owner Microsoft now absorb some of GNOME&#039;s bandwidth cost.&lt;/p&gt;
&lt;p&gt;Taken together, these examples point to the same underlying problem. Most Open Source infrastructure does not have a real business model. It survives through donations, corporate sponsorship, and community fundraising, rather than revenue tied to the value it delivers.&lt;/p&gt;
&lt;h3&gt;From steward to service provider&lt;/h3&gt;
&lt;p&gt;One direction that makes sense to me is a simple &lt;em&gt;value exchange&lt;/em&gt;: keep core infrastructure free for individuals and small projects, while organizations using it at scale help pay for what they consume. Not as a donation, but as payment for the infrastructure their software depends on.&lt;/p&gt;
&lt;p&gt;I look at Drupal as a concrete example of this in a follow-up post: &lt;a href=&quot;https://dri.es/what-it-costs-to-run-drupal-infrastructure&quot;&gt;what it costs to run Drupal&#039;s infrastructure&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In practice, this could mean the backend infrastructure around Open Source projects operating more like a SaaS service: the software remains open, but the infrastructure that powers updates and security becomes a paid service for large organizations.&lt;/p&gt;
&lt;p&gt;Some people will instinctively resist the idea of charging for the infrastructure behind an Open Source project. That reaction may feel familiar to anyone who remembers &lt;a href=&quot;https://dri.es/the-commercialization-of-a-volunteer-driven-open-source-project&quot;&gt;the early debates about paid contributors&lt;/a&gt;. At the time, many feared corporate money would drive volunteers away. In practice, the opposite happened. Projects grew, contributor bases expanded, and paid engineers became some of their most active contributors.&lt;/p&gt;
&lt;p&gt;That does not mean every new funding idea is a good one. But instinctive discomfort alone is not a reason to reject it.&lt;/p&gt;
&lt;p&gt;In Open Source, what looks like fairness often is not. Free for everyone sounds equitable, but the cost does not disappear. It is absorbed by those who can least afford it, while the organizations that benefit most often pay the least. When a Fortune 500 company consumes Open Source infrastructure for free, that is not a neutral outcome. It is a subsidy flowing in the wrong direction.&lt;/p&gt;
&lt;p&gt;If the problem is that costs are disconnected from usage, the obvious place to start is linking them. Exactly how that would work in practice is a separate design question, and the answer will likely differ from one Open Source project to another. One possible approach is usage-based fees, tiered by download volume or API consumption. Questions about measurement, thresholds, and enforcement would need careful community discussion.&lt;/p&gt;
&lt;h3&gt;Governance is downstream of funding&lt;/h3&gt;
&lt;p&gt;If infrastructure funding models need to change, the obvious question is who decides. In Open Source, questions like this ultimately belong to the community.&lt;/p&gt;
&lt;p&gt;But communities do not decide these things in a vacuum. In practice, governance tends to follow funding.&lt;/p&gt;
&lt;p&gt;Discussions about Open Source infrastructure often focus on governance: who should control it and who gets to make the decisions. In reality, those questions are often settled by something simpler: who pays for it.&lt;/p&gt;
&lt;p&gt;FAIR is a recent example. The organizers didn&#039;t step back because federation was the wrong idea. They stepped back because no host would commit funding.&lt;/p&gt;
&lt;p&gt;When one organization pays for the infrastructure, it ultimately controls it. When a broader set of stakeholders funds it, governance broadens with it.&lt;/p&gt;
&lt;p&gt;That is why Open Source infrastructure needs more than better fundraising. It needs a business model that connects the cost of operating shared infrastructure to the organizations that rely on it most.&lt;/p&gt;
&lt;p&gt;Infrastructure that entire ecosystems depend on cannot rely indefinitely on goodwill alone. It deserves a business model.&lt;/p&gt;
&lt;p&gt;Solving the funding problem is a prerequisite to solving the governance problem.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thanks to &lt;a href=&quot;https://www.drupal.org/u/farriss&quot;&gt;Tiffany Farriss&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; and &lt;a href=&quot;https://www.drupal.org/u/lauriii&quot;&gt;Lauri Timmanee&lt;/a&gt; for reviewing my draft.&lt;/em&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Markdown, llms.txt and AI crawlers</title>
      <link>https://dri.es/markdown-llms-txt-and-ai-crawlers</link>
      <guid>https://dri.es/markdown-llms-txt-and-ai-crawlers</guid>
      <pubDate>Thu, 05 Mar 2026 10:18:15 -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;In January, I made &lt;a href=&quot;https://dri.es/the-third-audience&quot;&gt;every page on my site available as Markdown&lt;/a&gt;. Immediately AI crawlers quickly found the Markdown versions. I was excited, but excitement isn&#039;t data. Now that the dust has settled, I pulled a month of Cloudflare logs and analyzed them.&lt;/p&gt;
&lt;p&gt;I compared how much AI bots crawl my site to how often AI answer engines link back. For every citation they sent, their crawlers had fetched 1,241 pages. That is a lot of reading for very little traffic in return. It is &lt;a href=&quot;https://dri.es/the-webs-broken-deal-with-ai-companies&quot;&gt;the deal AI is offering creators&lt;/a&gt; right now, and it is not a good one.&lt;/p&gt;
&lt;p&gt;People also asked whether serving Markdown reduced my bot traffic since the files are smaller. It does not. Bots fetch both versions, and my crawler traffic increased by about 7%. Offering a lighter format does not replace the heavier one. It simply gives bots more to crawl.&lt;/p&gt;
&lt;p&gt;As the table below shows, several AI companies crawl my site. Some fetch thousands of pages each month, but very few request the Markdown versions.&lt;/p&gt;
&lt;div class=&quot;large&quot;&gt;
  &lt;table&gt;
  &lt;thead&gt;
  &lt;tr&gt;&lt;th&gt;Bot&lt;/th&gt;&lt;th&gt;Vendor&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;Total&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;HTML files&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;.md files&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;Content Neg&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;% .md&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
  &lt;tbody&gt;
  &lt;tr&gt;&lt;td&gt;Amazonbot&lt;/td&gt;&lt;td&gt;Amazon&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;16,872&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;15,032&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1,840&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;10.9%&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;ChatGPT-User&lt;/td&gt;&lt;td&gt;OpenAI&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;13,864&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;13,856&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;8&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0.1%&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Meta AI&lt;/td&gt;&lt;td&gt;Meta&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;9,011&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;8,526&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;485&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;5.4%&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;ClaudeBot&lt;/td&gt;&lt;td&gt;Anthropic&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;7,144&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;6,995&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;149&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;2.1%&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;OAI-SearchBot&lt;/td&gt;&lt;td&gt;OpenAI&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;5,722&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;4,422&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1,300&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;22.7%&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;GPTBot&lt;/td&gt;&lt;td&gt;OpenAI&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;3,385&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;2,208&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1,177&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;34.8%&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Bytespider&lt;/td&gt;&lt;td&gt;ByteDance&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1,190&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1,190&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0.0%&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;CCBot&lt;/td&gt;&lt;td&gt;CommonCrawl&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;530&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;530&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0.0%&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;PerplexityBot&lt;/td&gt;&lt;td&gt;Perplexity&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;467&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;466&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0.2%&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Claude-User&lt;/td&gt;&lt;td&gt;Anthropic&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;94&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;87&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;7&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;0&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;7.4%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Interestingly, OpenAI runs three bots with different roles. &lt;code&gt;OAI-SearchBot&lt;/code&gt; indexes content for search, &lt;code&gt;GPTBot&lt;/code&gt; crawls for training data, and &lt;code&gt;ChatGPT-User&lt;/code&gt; fetches pages in real time during live ChatGPT sessions.&lt;/p&gt;
&lt;p&gt;When I added Markdown support to my site, &lt;a href=&quot;https://dri.es/the-third-audience&quot;&gt;I exposed it in two ways&lt;/a&gt;. The first is through dedicated Markdown URLs: append &lt;code&gt;.md&lt;/code&gt; to any page and you get the Markdown version. The second is through content negotiation, where the original URL returns Markdown instead of HTML when the request includes an &lt;code&gt;Accept: text/markdown&lt;/code&gt; header.&lt;/p&gt;
&lt;p&gt;No AI crawler uses content negotiation. Not one. They only discover the Markdown pages through the dedicated URLs, and only via the auto-discovery link.  To be fair, the auto-discovery link points to the &lt;code&gt;.md&lt;/code&gt; version.&lt;/p&gt;
&lt;div class=&quot;large&quot;&gt;
  &lt;table&gt;
  &lt;thead&gt;
  &lt;tr&gt;&lt;th&gt;Bot&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;robots.txt&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;sitemap.xml&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;llms.txt&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;.md files&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
  &lt;tbody&gt;
  &lt;tr&gt;&lt;td&gt;Amazonbot&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;182&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1,840&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;ChatGPT-User&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;8&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Meta AI&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;75&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;485&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;ClaudeBot&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;496&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;115&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;149&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;OAI-SearchBot&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;653&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1,300&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;GPTBot&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;4&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1,177&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Bytespider&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;259&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;CCBot&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;8&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;PerplexityBot&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;142&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;1&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt;&lt;td&gt;Claude-User&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;87&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;-&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;7&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;And then my favorite: &lt;a href=&quot;https://llmstxt.org/&quot;&gt;llms.txt&lt;/a&gt;, a proposed standard where sites describe their content for AI systems. My site received 52 requests for it last month. Every one came from SEO audit tools. Not a single request came from an AI answer engine or crawler.  (I don&#039;t use or pay for SEO tools but apparently that doesn&#039;t stop them from auditing my site.)&lt;/p&gt;
&lt;p&gt;For fun, we also looked across &lt;a href=&quot;https://www.acquia.com/&quot;&gt;Acquia&lt;/a&gt;&#039;s entire hosting fleet and found about 5,000 &lt;code&gt;llms.txt&lt;/code&gt; requests out of 400 million total (0.001%), nearly all from SEO tools. &lt;code&gt;llms.txt&lt;/code&gt; is a solution looking for a problem. The bots it was designed for don&#039;t look for it.&lt;/p&gt;
&lt;p&gt;So should you add Markdown support to your site? Probably not. There is no clear benefit today. It does not reduce crawl traffic, and I can&#039;t demonstrate that it improves how AI systems use your content.&lt;/p&gt;
&lt;p&gt;We do know that AI systems love Markdown, and they fetch it when it is available. At best, it may become more useful over time.&lt;/p&gt;
&lt;p&gt;If it is easy to add and you enjoy experimenting, go ahead. If it takes real effort, spend that effort on your content instead. What still works is what has always worked: clear writing, authoritative content, and timely publishing.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Drupal 25th Anniversary Gala at DrupalCon Chicago</title>
      <link>https://dri.es/drupal-25th-anniversary-gala-at-drupalcon-chicago</link>
      <guid>https://dri.es/drupal-25th-anniversary-gala-at-drupalcon-chicago</guid>
      <pubDate>Tue, 03 Mar 2026 10:55:07 -0500</pubDate>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img src=&quot;https://dri.es/files/cache/drupal/25th-anniversary-gala-1280w.png&quot; alt=&quot;Graphic reading &amp;amp;#039;Drupal 25th Anniversary Gala&amp;amp;#039; over a purple-lit ballroom with chandeliers and silhouetted guests.&quot; width=&quot;1280&quot; height=&quot;850&quot; /&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;There is a big party happening at DrupalCon Chicago, and I can&#039;t wait.&lt;/p&gt;
&lt;p&gt;On March 24th, we&#039;re celebrating Drupal&#039;s 25th Anniversary with a gala from 7–10 pm CT. It&#039;s a separate ticketed event, not included in your DrupalCon registration.&lt;/p&gt;
&lt;p&gt;Some of Drupal&#039;s earliest contributors are coming back for this, including a few who haven&#039;t attended DrupalCon in years. That alone makes it special.&lt;/p&gt;
&lt;p&gt;If you&#039;ve been part of Drupal&#039;s story, whether for decades or just a few months, I&#039;d love for you to be there. It&#039;s shaping up to become a memorable night.&lt;/p&gt;
&lt;p&gt;The dress code is &amp;quot;Drupal Fancy&amp;quot;. That means anything from gowns and black tie, to your favorite Drupal t-shirt. If you&#039;ve ever wanted an excuse to dress up for a Drupal event, this is it!&lt;/p&gt;
&lt;p&gt;Tickets are $125, with a limited number of $25 tickets underwritten by sponsors so cost isn&#039;t a barrier. All tickets must be purchased in advance. They won&#039;t be available at the door. Registration closes March 18th, so &lt;a href=&quot;https://www.zeffy.com/en-US/ticketing/drupal-25th-anniversary-gala&quot;&gt;grab your tickets&lt;/a&gt; soon.&lt;/p&gt;
&lt;p&gt;Organizations can reserve a table for their team. Even better, invite a few contributors to join you. It&#039;s a great way to &lt;a href=&quot;https://www.zeffy.com/en-US/ticketing/drupal-25th-anniversary-gala-sponsorship&quot;&gt;give back&lt;/a&gt; to the people who helped build what your business runs on.&lt;/p&gt;
&lt;p&gt;For questions or sponsorship opportunities, please reach out to &lt;a href=&quot;https://www.drupal.org/u/farriss&quot;&gt;Tiffany Farriss&lt;/a&gt;, who is serving as Gala Chair and part of the team coordinating the celebration.&lt;/p&gt;
&lt;p&gt;Know someone who should be there? Share this with them.&lt;/p&gt;
&lt;p&gt;What matters most is that you&#039;re there. I can&#039;t wait to celebrate together in Chicago.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Skiing in Saint-Gervais, France</title>
      <link>https://dri.es/skiing-in-saint-gervais-france</link>
      <guid>https://dri.es/skiing-in-saint-gervais-france</guid>
      <pubDate>Tue, 24 Feb 2026 05:10:23 -0500</pubDate>
      <description>&lt;p&gt;Last week, we went on a ski trip in Saint-Gervais, France. For the first time, Axl wasn&#039;t with us. He&#039;s off at university now, and his school breaks no longer line up with Stan&#039;s. So Stan and I had a lot of father-son time on the slopes.&lt;/p&gt;
&lt;p&gt;Our friends Alexis and Héloïse were also on the trip with us, and Alexis captured this short video one of the days. I love it. Thank you, &lt;a href=&quot;https://www.herbosch-architects.com/&quot;&gt;Alexis&lt;/a&gt;!&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/Tmm-eUXyDaE&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;
</description>
    </item>
  </channel>
</rss>
