14 Jan 2026

feedDrupal.org aggregator

DDEV Blog: DDEV 2025 Year in Review

DDEV 2025 Year in Review

2025 has been a year of significant growth and accomplishment for DDEV. With 579 commits to the main repository and releases from v1.24.0 through v1.24.10, we've made substantial progress on features, infrastructure, and community building. Here's a look back at what we all achieved together.

Table of Contents

Organizational Milestones

Community Engagement

The DDEV open-source community continues excellent engagement on several fronts.

Major Features and Improvements

Sponsorship Communication

Add-on Ecosystem

Container and Infrastructure

Upcoming v1.25.0:

Developer Experience

Upcoming v1.25.0:

Language and Database Updates

Upcoming v1.25.0:

Windows Improvements

ddev.com Website and Documentation

IDE Integration

DDEV Developer Improvements

AI in DDEV Development

2025 saw significant AI integration in our development workflow:

Removals in v1.25.0

Challenges and things that could have gone better

Comparing Outcomes to 2025 Goals

In 2025 Plans we laid out ambitious plans for 2025. Here are the outcomes:

By the Numbers

Wow, Community Contributions!

As an open-source project we truly value the amazing contributions of the community. There are so many ways these contributions happen, including support requests and issues (we learn so much from those!) but also direct contributions.

By Contributor

I know this is "Too Much Information" but here is a simple and inadequate list of the amazing contributions directly to the main project by contributors other than Randy and Stas. It inspires me so much to see this consolidated list.

Ralf Koller - rpkoller - 36 contributions

Akiba - AkibaAT - 7 contributions

Ariel Barreiro - hanoii - 6 contributions

tyler36 - tyler36 - 4 contributions

Travis Carden - TravisCarden - 3 contributions

Laryn - laryn - 3 contributions

Andrew Berry - deviantintegral - 2 contributions

Raphael Portmann - raphaelportmann - 2 contributions

cyppe - cyppe - 2 contributions

Peter Bowyer - pbowyer - 2 contributions

Shelane French - shelane - 2 contributions

Pierre Paul Lefebvre - PierrePaul - 2 contributions

Sven Reichel - sreichel - 2 contributions

lguigo22 - lguigo22 - 1 contribution

Justin Vogt - JUVOJustin - 1 contribution

grummbeer - grummbeer - 1 contribution

crowjake - crowjake - 1 contribution

Markus Sommer - BreathCodeFlow - 1 contribution

James Sansbury - q0rban - 1 contribution

Moshe Weitzman - weitzman - 1 contribution

Yan Loetzer - yanniboi - 1 contribution

Garvin Hicking - garvinhicking - 1 contribution

Benny Poensgen - vanWittlaer - 1 contribution

Rob Loach - RobLoach - 1 contribution

JshGrn - JshGrn - 1 contribution

E - ara303 - 1 contribution

Alan Doucette - dragonwize - 1 contribution

Brooke Mahoney - brookemahoney - 1 contribution

gitressa - gitressa - 1 contribution

Eduardo Rocha - hockdudu - 1 contribution

Dezső BICZÓ - mxr576 - 1 contribution

Tomas Norre Mikkelsen - tomasnorre - 1 contribution

Danny Pfeiffer - danny2p - 1 contribution

Popus Razvan Adrian - punkrock34 - 1 contribution

Daniel Huf - dhuf - 1 contribution

Ayu Adiati - adiati98 - 1 contribution

Peter Philipp - das-peter - 1 contribution

O'Briat - obriat - 1 contribution

Andreas Hager - andreashager - 1 contribution

Bill Seremetis - bserem - 1 contribution

Olivier Mengué - dolmen - 1 contribution

Rui Chen - chenrui333 - 1 contribution

michaellenahan - michaellenahan - 1 contribution

August Miller - AugustMiller - 1 contribution

Loz Calver - lozcalver - 1 contribution

Tim Kelty - timkelty - 1 contribution

Pedro Antonio Fructuoso Merino - pfructuoso - 1 contribution

Bang Dinh - bangdinhnfq - 1 contribution

nmangold - nmangold - 1 contribution

Jeremy Gonyea - jgonyea - 1 contribution

Colan Schwartz - colans - 1 contribution

Mrtn Schndlr - barbieswimcrew - 1 contribution

Marvin Hinz - marvinhinz - 1 contribution

RubenColpaert - RubenColpaert - 1 contribution

Alexey Murz Korepov - MurzNN - 1 contribution

Adam - phenaproxima - 1 contribution

Nick Hope - Nick-Hope - 1 contribution

Damilola Emmanuel Olowookere - damms005 - 1 contribution

nickchomey - nickchomey - 1 contribution

Andrew Gearhart - AndrewGearhart - 1 contribution

Christopher Kaster - atomicptr - 1 contribution

Hervé Donner - vever001 - 1 contribution

Bernhard Baumrock - BernhardBaumrock - 1 contribution

Erik Peterson - eporama - 1 contribution

Tom Yukhayev - charginghawk - 1 contribution

Summary by Count

Contributor GitHub Count
Ralf Koller rpkoller 36
Akiba AkibaAT 7
Ariel Barreiro hanoii 6
tyler36 tyler36 4
Travis Carden TravisCarden 3
Laryn laryn 3
Andrew Berry deviantintegral 2
Raphael Portmann raphaelportmann 2
cyppe cyppe 2
Peter Bowyer pbowyer 2
Shelane French shelane 2
Pierre Paul Lefebvre PierrePaul 2
Sven Reichel sreichel 2
lguigo22 lguigo22 1
Justin Vogt JUVOJustin 1
grummbeer grummbeer 1
crowjake crowjake 1
Markus Sommer BreathCodeFlow 1
James Sansbury q0rban 1
Moshe Weitzman weitzman 1
Yan Loetzer yanniboi 1
Garvin Hicking garvinhicking 1
Benny Poensgen vanWittlaer 1
Rob Loach RobLoach 1
JshGrn JshGrn 1
E ara303 1
Alan Doucette dragonwize 1
Brooke Mahoney brookemahoney 1
gitressa gitressa 1
...and 36 more contributors

Blog Guest Contributors

Guest contributions to the blog are always welcome and key contributors added significant posts this year:

Ajith Thampi Joseph - atj4me

Bill Seremetis - bserem

Garvin Hicking - garvinhicking

Jeremy Gonyea - jgonyea

ayalon - ayalon

And thanks to all of you who use DDEV, report issues, answer questions in Discord and other venues, and spread the word. Your support makes this project possible.

Amazing Official Add-on Maintainers

There are so many unofficial add-ons being maintained by so many people, but here are the folks that maintained official repositories:

  1. @tyler36 - ddev-browsersync, ddev-cron, ddev-cypress, ddev-qr, plus contributions to 20+ other add-ons
  2. @weitzman (Moshe Weitzman) - ddev-drupal-contrib, ddev-selenium-standalone-chrome
  3. @cmuench (Christian Münch) - ddev-opensearch
  4. @julienloizelet (Julien Loizelet) - ddev-mongo, ddev-redis-insight
  5. @mkalkbrenner - ddev-solr
  6. @robertoperuzzo - ddev-sqlsrv
  7. @b13 (TYPO3 agency) - ddev-typo3-solr, ddev-rabbitmq
  8. @jedubois - ddev-varnish
  9. @hussainweb - ddev-redis
  10. @seebeen - ddev-ioncube, ddev-minio
  11. @bserem (Bill Seremetis) - ddev-adminer
  12. @AkibaAT - ddev-intellij-plugin
  13. @biati-digital - vscode-ddev-manager

Looking Ahead to 2026

Stay tuned for our 2026 plans post where we'll outline what's next for DDEV. As always, we welcome your input through all our support venues.

Claude Code and GitHub Copilot were used as assistants in gathering lists and material, and in reviewing this article.

14 Jan 2026 11:19pm GMT

Dries Buytaert: The Third Audience

An empty office chair facing several glowing computer monitors, with small glowing fragments floating upward.

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.

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.

Within an hour, I had hundreds of requests from AI crawlers, including ClaudeBot, GPTBot, OpenAI's SearchBot, and more. So much for waiting a few weeks.

For two decades, we built sites for two audiences: humans and search engines. AI agents are now the third audience, and most websites aren't optimized for them yet.

We learned how to play the SEO game so our sites would rank in Google. Now people are starting to invest in things like Generative Engine Optimization (GEO) and Answer Engine Optimization (AEO), which are about getting cited in AI-generated answers.

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.

If you've been following my blog, you know that Drupal stores my blog posts as Markdown. 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't serving it to them.

It only took a few changes, and Drupal made that easy.

First, I added content negotiation to my site. When a request includes Accept: text/markdown in the HTTP headers, my site returns the Markdown instead of the rendered HTML.

Second, I made it possible to append .md to any URL. For example, https://dri.es/principles-for-life.md gives you clean Markdown with metadata like title, date, and tags.

But how did those crawlers find the Markdown version so fast? I borrowed a pattern from RSS: RSS auto-discovery. Many sites include a link tag with rel="alternate" 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 .md URL.

That "Markdown auto-discovery" 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.

In the end, this took surprisingly little work. If your content already exists in a cleaner, structured form, you might be closer to this than you think. For me, this feels like the beginning of a longer experiment.

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'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.

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 value exchange between creators and AI companies is far from settled, and it's entirely possible that making content easier for AI to consume will accelerate the hollowing out of the web.

I don't have a good answer to that yet, but I'd rather experiment than look away. I'm going to leave this running and report back.

14 Jan 2026 10:33pm GMT

Drupal Core News: Announcing Drupal 12.0.0 platform requirements

Drupal 12 development has reached a point where the system requirements may be raised in the development branch. To prepare core developers for this and to inform the community at large, we are announcing the following requirements for Drupal 12.

Webserver

The webserver requirements have not changed since Drupal 11. They are Apache 2.4.7 or nginx 1.1 minimum. IIS is not supported.

PHP

Drupal 12 will require PHP 8.5. Older versions of PHP are not supported.

Database

The minimum database requirements for backends supported by Drupal 12 core are MySQL 8.0, MariaDB 10.11, PostgreSQL 18, and SQLite 3.45.

The MySQL and SQLite requirements have not changed since Drupal 11.0. MariaDB is raised from 10.6 and PostgreSQL from 16.

Composer

Drupal recommends the latest secure release of Composer, 2.9.3.

Browsers

The existing browser policy has not changed and there was no need to update it for Drupal 12. Drupal already drops support for older versions of browsers as new ones get released.

Drupal 11 will receive long term support

Drupal 11 will continue to be supported until mid-late 2028, at least until the release of Drupal 13.

14 Jan 2026 5:27pm GMT