Talking Drupal: Talking Drupal #493 - Drupal Developer Survey
Today we are talking about The Drupal Developer Survey, Last year's results, and How it helps Drupal with guest Mike Richardson. We’ll also cover HTMX as our module of the week.
For show notes visit: https://www.talkingDrupal.com/493
Topics- What is the Drupal Developer Survey
- How often does it come out
- How did it come to be
- What type of information does it collect
- Do you look at other surveys
- What were some of the most interesting stats last year
- Core contributors
- How do you expect last year to compare to this year
- Do you think the outlook will be more positive with Drupal CMS
- Drop off in Drupal 7
- Home users
- DDEV usage
- AI questions
- Security questions
Mike Richardson - Ironstar Dev Survey richo_au
HostsNic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi Andrew Berry - lullabot.com deviantintegral
MOTW CorrespondentMartin Anderson-Clutz - mandclu.com mandclu
- Brief description:
- Have you ever wanted to replace Drupal’s AJAX capabilities with a lightweight library that has no additional dependencies? There’s a module for that.
- Module name/project name:
- Brief history
- How old: created in May 2023 by wouters_f though recent releases are by fathershawn of Memorial Sloan Kettering Cancer Center
- Versions available: 1.3.5 and 1.4.0, both of which support Drupal 10.3 and 11
- Maintainership
- Actively maintained, latest release less than a month ago
- Security coverage
- Test coverage
- Documentation included in the repo as well as online
- Number of open issues: 3 open issues, 1 of which is a bug
- Usage stats:
- 92 sites
- Module features and usage
- To use HTMX, you need to attach the library to the render array of one or more elements where you want to use it, and then add data attributes to your render array that indicate how you want HTMX to react to user behaviour
- HTMX can help make your Drupal sites more interactive by dynamically loading or reloading parts of a page, giving it a more “application-like” user experience
- There is a planning issue to discuss gradually replace Drupal’s current AJAX system with HTMX, and a related Proof Of Concept showing how that could work with an existing Drupal admin form
- A number of elements in the current AJAX system also rely on jQuery, so adopting HTMX would also help to phase out jQuery in core. HTMX is also significantly more lightweight than JS frameworks like React
- HTMX is really a developer-oriented project, which is why I thought it would be appropriate for this week’s episode
Nonprofit Drupal posts: March Drupal for Nonprofits Chat
Join us THURSDAY, March 20 at 1pm ET / 10am PT, for our regularly scheduled call to chat about all things Drupal and nonprofits. (Convert to your local time zone.)
We don't have anything specific on the agenda this month, so we'll have plenty of time to discuss anything that's on our minds at the intersection of Drupal and nonprofits. Got something specific you want to talk about? Feel free to share ahead of time in our collaborative Google doc: https://nten.org/drupal/notes!
All nonprofit Drupal devs and users, regardless of experience level, are always welcome on this call.
This free call is sponsored by NTEN.org and open to everyone.
-
Join the call: https://us02web.zoom.us/j/81817469653
-
Meeting ID: 818 1746 9653
Passcode: 551681 -
One tap mobile:
+16699006833,,81817469653# US (San Jose)
+13462487799,,81817469653# US (Houston) -
Dial by your location:
+1 669 900 6833 US (San Jose)
+1 346 248 7799 US (Houston)
+1 253 215 8782 US (Tacoma)
+1 929 205 6099 US (New York)
+1 301 715 8592 US (Washington DC)
+1 312 626 6799 US (Chicago) -
Find your local number: https://us02web.zoom.us/u/kpV1o65N
-
- Follow along on Google Docs: https://nten.org/drupal/notes
The Drop Times: Time to Evolve
This past week, the Drupal community was stirred by an open letter from Josh Koenig, Co-Founder of Pantheon, challenging Drupal’s positioning in the modern digital space. Koenig argues that Drupal must move beyond the traditional Digital Experience Platform (DXP) model and redefine itself as an "agile business driver"—a tool that empowers digital teams with flexibility and control without vendor lock-in.
His perspective has ignited discussions on Drupal’s future, especially with DrupalCon Atlanta 2025 on the horizon. Is Drupal evolving fast enough to meet the needs of enterprise users? Should it shift focus to adaptability rather than chasing competitors? These questions are at the heart of Drupal’s next chapter.
Such debates and diverse perspectives are vital for open-source initiatives like Drupal, which rely on community-driven evolution. It is up to the community to pay heed, introspect, and ensure that Drupal continues to thrive—rather than risk fading into obscurity.
Let's have a look at last week's important stories.
Happy reading,
Thomas Alias K,
Sub Editor,
The Drop Times
Interview
Discover Drupal
- Josh Koenig Writes an Open Letter to His Peers
- AI-Powered Content Translation Module Released for Drupal
- A New Initiative to Make Drupal Accessible for College and University Students
- Qwen AI Enhances Drupal Development and Advances AI Performance
Events
- The Wait Ends: Splash Awards Switzerland 2025 Winners Announced
- Drupal Events of the Week: March 17 - March 23, 2025
- Decoupled Days 2025 Opens Call for Session Proposals
- Esmeralda Tijhoff to Speak at European Women in Technology 2025
- DrupalCamp Asheville Seeks Trainers for 2025 Event
- Backdrop LIVE 2025: A Global Unconference on Backdrop CMS
- All Things Open 2025 Returns for Its 13th Year in Raleigh
Organization News
DDEV Blog: Thanks to our Amazing Sponsors!
Thank you!
We just want to take a moment to thank all of the amazing sponsors of the DDEV open source project. All of you reading this know that we've been working for years now to make DDEV a financially sustainable project, so it can serve you into the future. So many have responded to that call. Thank you!
Even though we're going to mention the biggest sponsors first, we want all of you to know that your sponsorship matters too, and with care we can expand to many, many small sponsors to ensure DDEV's resilience and sustainability.
Major Sponsors
- Platform.sh has been a major sponsor of DDEV for a few years now. You may know that they recently reduced their sponsorship, but they remain our largest single supporter, and we appreciate it greatly. Platform.sh has also transferred the "ddev" domain names to the DDEV Foundation and will be transferring the "DDEV" trademark. And they're funding Randy's plane ticket to Drupalcon Atlanta!
- Tag1 Consulting stepped up to generously support DDEV at a very significant level so many years ago, and has continued doing that. And they don't just offer outstanding financial support, they're always making clear that they use and support DDEV, and we get to see them at conferences.
- Mobilistics and i-gelb both sponsor at the $500/month level.
- All these lovely organizations sponsor at the $100/month (or a bit higher) level: Lullabot, Affinity Bridge, Webikon, FameHelsinki, OPTASY, Gizra, Cambrico, Agaric, Centarro, Craft CMS, Redfin Solutions, b13. And brand new this week (welcome!) Full Fat Things.
So many more wonderful sponsors!
Here are some of many sponsors who help out via GitHub Sponsors.
In-Kind Sponsors
The open-source community has lots of folks helping out multiple collaborators. In our case, MacStadium provides us testing resources, and JetBrains provides a subscription to their IDE products, thanks!
But we never forget Docker. Docker has adopted us in the Docker-Sponsored-Open-Source (DSOS) program for a few years now, and this means that all of your image pulls are sponsored in that project. You may know that normal image pulls will be strictly limited starting April 1, 2025, but because of the DSOS, users of DDEV won't hit that restriction.
And please don't forget that the open-source Docker project underlies every single Docker provider. It doesn't matter if you're using OrbStack or Lima or Docker Desktop or whatever, they're all built on top of the amazing Docker open-source project.
JSON Detail about Sponsorships
We recently set up a full updated JSON feed that can be used to see exactly where DDEV's sponsorship comes from and how we're doing. You can see the latest data any day in the all sponsorships feed. And Mark Conroy has built a web component that can be used to show where we're at on any website. Thank you!
Many Ways to Sponsor
We have almost too many ways that you can sponsor, but we want to make it easy for you and your organization.
- For individuals and some organizations, GitHub Sponsors is super easy, takes moments and can be changed any time.
- We are happy to invoice your organization and do more of a "support contract" so that you don't have to explain open-source to your finance department. We accept ACH, Wise.com, bank transfer, IBAN, SWIFT, checks, we'll work with your organization to make it work for you. Just send us a note via the contact page or any other way.
- PayPal to DDEV
Oops, are you missing or did I forget you?
Is your name or your organization's name missing here? It's easy to get it here. How much does DDEV's support and ongoing maintenance mean to your organization?
(If I made a mistake and left you out, let me know and I'll edit this.)
Do you have questions or want to talk (about sponsoring or anything else)? Contact us! or join us in Discord.
Dominique De Cooman: From Craftsmanship to Innovation: Why Drupal’s Future Lies in AI driven Open DXP
Introduction
Over the past few weeks, the Drupal community has been buzzing with discussions about the future of Drupal.
From Craftsmanship to Innovation: Why Drupal’s Future Lies in AI driven Open DXP
drupalMonday, March 17, 2025 - 10:33eiriksm.dev: 9768 times yes to Auto-Updates
Just recently I read a really interesting blog post found in the Weekly Drop Newsletter called “Say No to Auto-Updates: Why Your Website Deserves Better Than Subscription Overhaul”. I appreciate articles that take a strong stance, and this one certainly does. However, I strongly disagree with its conclusions.
First, to get that out of the way. I actually do agree with two things
- Updates should be tested (manually, automatically or both)
- An experienced developer carefully running the correct composer commands is always better than a bad automation
But that's where my agreement ends. Many of the points in the article are in what I would call the “general skepticism category”. This is fine, and at this point quite expected. While skepticism is healthy, data and real-world experience tell a different story. So instead of speculating (and me making counter arguments to the article), let’s look at some numbers shall we? I have some numbers. It’s these specific numbers: 3, 8, 58, 9768.
3: My personal and professional experience is with 3 services: Violinist.io, Renovate and Dependabot. For Drupal (and PHP / Composer) updates mentioned in the article I use violinist.io.
8: I have been automating Drupal updates for 8 years.
58: Currently (at the time of writing) I have 58 personal and professional projects running Drupal (Composer) updates automatically. Most of these are automatically merged after passing tests.
9768: Over the last 8 years exactly 9768 commits have been added by an automatic updater to the 58 projects.
Personally, I think the numbers speak for themselves. But let’s put it in perspective- try converting 9,768 commits into billable hours. Imagine the sheer amount of repetitive work automated away. You can speculate all you want - whether automation fails half the time (spoiler: it doesn’t) or if it’s actually a massive time-saver (it is). But at the end of the day, the results are undeniable.
So, while some debate the risks, I’ll be over here letting automation do what it does best - saving time and getting things done. Here is an animated gif from the days from long before all of these fancy package managers and automation tools.
James Oakley: Using Radix as a Drupal base theme
I recently wrote about my experiences migrating this website from Drupal 7 to Drupal 10. In that post I said that I would write separately about my experiences theming the site. This is that post.
I was broadly happy with the look and feel of the Drupal 7 version of the site, so didn't want something vastly different. At the sametime, I wanted to make sure that I was using the most maintainable underlying code, behind what end-users see.
The Theming Spectrum: Base Themes
When it comes to theming a site, there is a spectrum. At one end of the spectrum, you build everything yourself. You write the HTML templates, using Twig from Drupal 8 onwards, that the site will use to render the content. You write all the CSS, laying things out, making sure they are responsive and designed for mobile devices first. At the other end of the spectrum, you pull an existing theme off the shelf, like the many excellent ones you can download from the Drupal website. (As I write, there are 3,190 themes on the Drupal website.)
In between those extremes, moving slightly more customised than starting with an off-the-peg theme, you can take an off-the-peg theme and create a subtheme where you tweak the things you want to change. CSS is easiest, allowing you to change fonts, margins, relative sizes, images, colours, and so on. But template tweaks are possible too.
But I'm most comfortable one level further of controlling things myself. I don't like to write everything myself — it's far too much work, and involves a lot of wheel re-invention. But I find customising someone else's theme constrains my ability to get things looking how I want. I've done that in the past, and end up changing colours and typeface but not a lot else; as soon as you want to move content around on the screen, things start to get messy.
So I like to start with a base theme. A base theme is one that does the heavy lifting for you by giving you lots of default HTML and sensible CSS, but that doesn't make assumptions about what you will want to do on your own site.
My dilemma was: Which base theme to use?
Use a stable theme, as far as you can.
Relatively few of the 260 actively maintained Drupal 10 themes are base themes.
Even fewer are stable.
One of the things I've learnt using earlier versions of Drupal is the importance of using themes that are actively maintained and will continue to be so. Too many times, I've customised a theme, only for the maintainer to wander off and stop updating it. I then have to choose a new base theme in order to keep moving through the versions of Drupal core. If I've customised a theme designed as a base theme, it means designing a new theme using that base theme as a starter. If I've tweaked a theme designed as a fully finished theme, it means swallowing the fact that the visual appearance of the site is going to have to change. Neither is great.
For example, in various previous versions of Drupal core, I've used:
- Omega. It was a very versatile base theme that was slightly further down the spectrum of doing things for you, but very capable with some great customisation tools. The maintainers started work on a Drupal 8 version of the theme, but never got one released. So, today, there are no releases available with current versions of Drupal core (Drupal 10 or 11). They got as far as 8.x-5.0-alpha7, and the project page says: “The current list of features for Omega Five is only a small sampling of the features available. This section will be updated with additional features and descriptions as it nears a stable release for Drupal 8.” Great in its day, but no more.
- Zen. Another very versatile theme. You have to do your customisations in code, rather than with the kind of UI you got with Omega, but I see that as a strength. Again, a workhorse of a base theme for me in Drupal 7. However the project page tells you the extra features you get with 7.x-6.x compared to 7.x-5.x, but no mention of the Drupal 8+ version. The most recent commit was in February 2021 (to help with getting things ready for Drupal 9), and the one before that was 3 years earlier. Sadly (because it was a great theme) it's also run out of steam.
- Pixture Reloaded. I loved this theme. It was more of a complete theme that you can recolour and adjust as you wish, but it was responsive and worked well. It was built on a base theme called Adaptive Theme. Back in the day, there were a good half dozen Adaptive Theme subthemes on the Drupal site. There was a website for Adaptive Themes where you could download any of them, or buy premium ones too. They offered a service to build a custom theme for your site. Sadly, none of this saw any releases beyond Drupal 7, and the Adaptive Themes website now just contains a domain-parking page.
You get the idea. Even since Drupal 8, there's been a whittling down. Just looking at themes that say they are actively maintained, and that have security team coverage, there are currently 210 themes that support Drupal 8, 181 that support Drupal 9, 162 that support Drupal 10, and 81 that support Drupal 11. So users of 129 of the 210 themes that support Drupal 8 are not able to move to Drupal 11, and nearly 50 of them can't use Drupal 10 either giving them no supported options. You'll recall that I'm using Drupal 10, not Drupal 11, because there are modules that haven't released Drupal 11 versions yet.
So as far as you can, try to find a base theme that is still being actively maintained. Look to see if code is still being committed. Look for two things in the issue queues. 1. Do the maintainers respond reasonably promptly? 2. Are there issues that have been stuck at "reviewed and tested by the community" for some time? If improvements / bug fixes have been tested, they should either be committed or moved to "won't fix" with a clear reason. Code stuck on RTBC is an amber flag in my book.
I also look for themes that are old. I don't want one that has just had its first release. I look for ones that have been around for several major versions of Drupal core, to demonstrate a maintainer who is active in moving it through the release cycles.
Bootstrap Barrio
My first attempt was a theme ecosystem named Barrio Bootstrap.
This is a really strong base theme. As the name suggests, it rewrites all of the Drupal templates to work within the Bootstrap framework. It is intended as a base theme. However, as you develop a sub-theme, it will help greatly if you can write your CSS using Sass; you get the benefits of the Sass mixins, you can use variables, and you can nest rules. There is a subtheme of Barrio Bootstrap called the Bootstrap 5 Sass Starter Kit. The maintainers recommend you extend that, rather than Barrio Bootstrap directly.
As I worked on site structure, I used the Sass Starter Kit unaltered. I think it was this that slightly put me off in the end. The fact I was able to use it out of the box means it made a lot of assumptions I'd want things coloured and laid out. As I came to start making the site look how I wanted it, it was harder work because I was editing to change inbuilt assumptions rather than working from scratch. I'm sure it can be quite intimidating to load an unaltered subtheme of a base theme, and to see just black text on white with no margins or borders between elements. However, if you're going to be using Chrome or Firefox developer tools to lay things out just how you want them, that is actually the best way to start and is going to be less work overall.
I was also slightly nervous that Barrio Bootstrap came with some colour editing tools in the UI. It wasn't immediately obvious where the theme saved the resulting CSS, or how that interfaced with the CSS that I had compiled myself from Sass. I found myself wishing all the configuration was in one place. If I was going to design a site myself, I don't want code potentially overwriting the CSS I've written; it could be hard to find where problems are coming from.
My final hesitation was the way it generates two CSS files, one with source links and one fully optimised. Shipping both, and changing which one is loaded in the theme's info file, felt clumsy. I'm sure to other people it feels really intuitive, but it didn't work for me.
So I looked to see what else was out there.
Radix
And I found the Radix base theme. The theme has a Drupal project page and a really good documentation site of their own. I am unclear what connection, if any, the Drupal theme Radix has with the wider Radix UI project. I suspect they're unrelated.
Unlike the Barrio family, this theme really is not designed to work on its own. In fact, it won't work properly. The theme ships with a starterkit for a subtheme, and sites will only render correctly if you have the elements from both a subtheme and the base theme in place. So your first step has to be to create your subtheme. Happily there are really good instructions for this on their website. I followed them, and everything just worked.
The more I use Radix, the more I like it as a base theme, and I can see this being my default base theme for future projects. Here are some of the things I like:
- It's well maintained. Development started in 2012, and the first non-beta release was for Drupal 7 in February 2014. That means it's an 11-year old project, with some continuity in the maintainers. The project has not one but three commercial organisations sponsoring development time, which is a great way to make sure things continue. (To give link-credit where it's due, those are Ramsalt Lab, Chapter Three, and O8). In February 2025 (last month), there were 10 commits to the 6.0.x branch. The latest release works with Drupal 10.3 and higher, and Drupal 11; it's current. The maintainers are really responsive in the issue queue. I've found a couple of (small) bugs or ways to improve, and they've been really proactive picking up merge requests and helping me improve what I was proposing so they can commit the changes. That's a really refreshing experience that encourages collaboration.
- It uses single-directory components. Once you get the hang of it, it's a great way to maintain a theme's code. There is a component directory for everything: headers, menus, nodes, pages, comments, and so on. The theme simply inherits the twig and CSS from the base theme unless you decide you want to override a specific component. It makes it easy to find any code you've changed; as long as you've used the component directory structure consistently, those changes will be exactly where you'd expect.
- There's a great CLI tool for creating components, called drupal-radix-cli. It can bring across a component from the base theme and create the directory in your subtheme for you, and it can also create a brand new component if you want it to.
- It uses Sass, and you can easily compile your CSS in either development or release mode. The former is ideal for seeing where particular lines of CSS come from so you can fix things; the latter is fully minimised and ready for production. I develop in development mode (
npm run watch
), then compile in release mode (npm run production
) before I commit a series of changes to git. That keeps the git commit noise down, and means staging and production environments only ever pull the production-ready styling. - It works with BrowserSync. Now, in fairness, Barrio Bootstrap can do something similar, but Radix does it out of the box. If you run
npm run watch
, a web server starts running on a port in the 3000s that will render a copy of your site showing the most current layouts. Any time you make a change to the source.scss
or template files, the CSS is automatically recompiled and a signal sent to your browser to reload. So you can tweak things like margins and colours and watch the effects in near real-time. I don't develop on my local machine, so I had to open the requisite ports through my development server firewall, but other than that this is a really easy way to work on a site's appearance. - It also uses Bootstrap; Barrio isn't the only way to get access to Bootstrap. Because this really is a base theme, you don't get a site that shouts visually "I was built with Bootstrap" unless you want that. But you get all the access to HTML classes to adjust things like margins, grid layouts and forms. You also get an easy way to make many adjustments using Bootstrap variables, as I'll discuss below. It means a really well-planned framework is behind the theme, so you get all those benefits, whilst giving you genuine freedom to control what your site looks like.
Tips for Working with Radix
As I've built a theme with Radix, I've learnt a few lessons along the way that are worth sharing.
- Keep track of changes.
- Your subtheme contains a copy of all the templates from the base theme, so the
subtheme/templates
folder contains a mixture of original and altered templates. - Your subtheme contains only those components that you've chosen to override (or create), so the
subtheme/components
folder contains only your alterations. - When you update the Radix base theme to a new version, you'll want to know what changes affect components or templates you've altered.
- Having created my subtheme, I create copies of the components and templates folders of the base theme at the time I created my subtheme.
cp -ar ../../config/radix/src/kits/radix_starterkit/templates ./.templates.orig
cp -ar ../../config/radix/components ./.components.orig
- Then you can use
diff -urq
to comparetemplates
/components
in the new Radix version with.templates.orig
/.components.orig
in your subtheme. - You can then carefully test bringing those changes across to the subtheme before updating your
.templates.orig
/.components.orig
folders so they're ready as reference points for the next base theme update.
- Your subtheme contains a copy of all the templates from the base theme, so the
- Link to components from templates.
- When you create a component (deriving from a base template one, or generating a new one), your webpage won't automatically pick it up. That's possible to forget if your template uses custom twig, but very easy to forget if your template just contains CSS.
- Your subtheme will use the templates in the
templates
folder to work out what HTML to render. The templates folder in the Radix theme is intentionally thin; most of the templates simply insert the HTML generated by a component, and let thecomponents
folder do the heavy-lifting. This helps keep your theme maintainable. Throughout thetemplates
folder, you'll see code like this:{% include "radix:page-title" %}
. That tells the theme engine to include the output from thepage-title
component within the radix theme. - The key thing is that all the templates embed the output of the radix components. Your custom component will not be included unless you change the template that calls it from
{% include "radix:page-title" %}
to{% include "your_subtheme:page-title" %}
. As I say, it's easy to forget.
- Whenever you change a template, you should clear the caches on your site.
- Drupal will often cache templates.
- If your working on theme development, you should always go to
Home > Administration > Configuration > Development
and check the box labelled "Do not cache markup". - However I've found that can still cache templates themselves, so running
drush cr
after a template change can help ensure those changes appear on the site.
- Whenever you introduce new components that mean you have new CSS files appearing, you need to restart your laravel mix process.
- When you first run
npm run watch
, the process seems to read all the files that need watching for changes. - If you change those files, the CSS will rebuild and the page will reload.
- If you add a custom component that means an extra CSS file should be included in the page, this won't be picked up. You need to
Ctrl+C
, and runnpm run watch
again.
- When you first run
- Use Bootstrap variables wherever possible.
- As you start tweaking your site, you'll want to adjust margins, colours, font sizes and so on.
- It's really tempting to write lines of scss in the components to do this for you, and that is often the right thing to do.
- But don't forget that Bootstrap is a really powerful framework. It has a lot of variables set to sensible defaults for these things.
- Sometimes, instead of writing custom CSS to adjust how things look, it's far better to set one Bootstrap variable to a new value, and the change is made for you in a way that is consistent.
- Within your subtheme folder is a folder named
node_modules
, within that is a folder namedbootstrap/scss
, within that is a file named_variables.scss
. At this pointgrep
is your friend. Find the variable you want to change, and go tosrc/scss/base/_variables.scss
within your subtheme. Set the variable you want. - For example, I wanted to stop
<a>
tags from underlining. Rather than writinga { text-decoration: none; }
in the scss of a component, all I needed to do was enter$link-decoration: none;
in my_variables.scss
file
Sidebars
One thing I noticed straight away was that Radix doesn't give you sidebar regions for placing blocks.
I was tempted to feel grumpy and move on to look for another base theme, but then I realised this is deliberate and a good thing. Not every site uses sidebars. So let those sites that want them add them, and let those that don't have leaner mark-up.
It turns out it's easy to add sidebars. Given this isn't a requirement for everyone, but because it will be quite a common wish, I'll write that up in a separate post. Watch this space!
Blog Category: Drupal Planet Add new commentColorfield: Drupal faceted search with Typesense and InstantSearch
Dries Buytaert: How AI could reshape CMS platforms
Imagine waking up to discover that overnight, AI agents rewrote 500 product descriptions, reorganized 300 pages for SEO, and updated 9,000 alt
-text descriptions on your website.
As you review the changes over coffee, you find three product descriptions featuring nonexistent features. If published, customers will order based on false expectations. Then you notice another problem: AI rewrote hundreds of alt
-text descriptions, erasing the ones your team crafted for accessibility.
AI-driven content management isn't a distant scenario. Soon, Content Management Systems (CMS) may deploy hundreds of AI agents making bulk edits across thousands of pages.
The challenge? Traditional CMS workflows weren't designed for AI-powered editing at scale. What features should an AI-first CMS include? What safeguards would prevent errors? What workflows would balance efficiency with quality control? I'm outlining some rough ideas to start a conversation and inspire Drupal contributors to help build this future.
1. Smart review queues: scaling human oversight
AI-generated content needs different quality checks than human work. Current editorial workflows aren't optimized to handle its output volume.
I envision "AI review queues" with specialized tools like:
- Spot-checking: Instead of manually reviewing everything, editors can sample AI content strategically. They focus on key areas, like top-selling products or pages flagged by anomaly detection. Reviewing just 5% of the changes could provide confidence; good samples suggest the broader set works well. If issues are found, it signals the need for deeper review.
- Rolled-up approvals: Instead of approving AI edits one by one, CMS platforms could summarize large-scale AI changes into a single reviewable batch.
2. Git-like content versioning: selective control over AI changes
Say an AI translated your site into Spanish with mixed results. Meanwhile, editors updated the English content. Without sophisticated versioning, you face a tough choice: keep poor translations or roll everything back, losing days of human work.
CMS platforms need Git-like branch-based versioning for content. AI contributions should exist in separate branches that teams can merge, modify, or reject independently.
3. Configuration versioning: keeping AI from breaking your CMS
AI isn't just generating content. It is also modifying site configurations, permissions, content models and more. Many CMS platforms don't handle "configuration versioning" well. Changes to settings and site structures are often harder to track and undo.
CMS platforms also need Git-like versioning for configuration changes, allowing humans to track, review, and roll back AI-driven modifications just as easily as content edits. This ensures AI can assist with complex site management tasks without introducing silent, irreversible changes.
4. Enhanced audit trails: understanding AI decisions
Standard CMS audit logs track who made changes and when, but AI operations demand deeper insights. When multiple AI agents modify your site, we need to know which agent made each change, why it acted, and what data influenced its decision. Without these explanations, tracking down and fixing AI errors becomes nearly impossible.
AI audit trails should record confidence scores showing how certain an agent was about its changes (60% vs 95% certainty makes a difference). They need to document reasoning paths explaining how each agent reached its conclusion, track which model versions and parameters were used, and preserve the prompt contexts that guided the AI's decisions. This comprehensive tracking creates accountability in multi-agent environments where dozens of specialized AIs might collaborate on content.
This transparency also supports compliance requirements, ensuring organizations can demonstrate responsible AI oversight.
5. AI guardrails: enforcing governance and quality control
AI needs a governance layer to ensure reliability and compliance. Imagine a healthcare system where AI-generated medical claims must reference approved clinical studies, or a financial institution where AI cannot make investment recommendations without regulatory review.
Without these guardrails, AI could generate misleading or non-compliant content, leading to legal risks, financial penalties, or loss of trust.
Instead of just blocking AI from certain tasks, AI-generated content should be checked for missing citations, regulatory violations, and factual inconsistencies before publication.
Implementing these safeguards likely requires a "rules engine" that intercepts and reviews AI outputs. This could involve pattern matching to detect incorrect content, as well as fact verification against approved databases and trusted sources. For example, a healthcare CMS could automatically verify AI-generated medical claims against clinical research databases. A financial platform might flag investment advice containing unapproved claims for compliance review.
Strategic priorities for modern CMS platforms
I can't predict exactly how these ideas will take shape, but I believe their core principles address real needs in AI-integrated content management. As AI takes on a bigger role in how we manage content, building the right foundation now will pay off regardless of specific implementations. Two key investment areas stand out:
- Improved version control – AI and human editors will increasingly work in parallel, requiring more sophisticated versioning for both content and configuration. Traditional CMS platforms must evolve to support Git-like branching, precise rollback controls, and configuration tracking, ensuring both content stability and site integrity.
- AI oversight infrastructure – As AI generates and modifies content at scale, CMS platforms will need structured oversight systems. This includes specialized review queues, audit logs, and governance frameworks.