Introducing Node Cleanup - Your solution to managing & deleting unpublished nodes in Drupal 10/11
Drupal CMS leadership changes
We're excited to announce updates to the Drupal CMS leadership team, with the addition of Bálint Kléri as our new Frontend Lead.
Bálint Kléri named Drupal CMS Frontend Lead
Bálint Kléri has been named Frontend Lead, a new leadership role created to oversee the frontend architecture for Drupal CMS, Mercury and Mercury-based themes. Bálint is a full-time contributor to Drupal Canvas, leading the development of Code Components for Acquia and a key contributor to Mercury, the Drupal CMS design system.
During development of Mercury, Bálint stepped in to guide the Tailwind CSS implementation and advocate for the use of best practices. We are grateful for his contributions already, and are excited to have him formally join the team. The addition of this frontend role is critical as we refine the Drupal CMS design system, providing users with a modern and adaptable foundation for Drupal sites and site templates.
Pamela Barone promoted to Product Lead
Pamela Barone is now Drupal CMS Product Lead, overseeing product direction, roadmap, prioritization, and delivery. Serving as Product Owner previously, this shift recognizes the product management responsibilities that Pamela has taken on during the evolution of Drupal CMS.
She will continue to work closely with me as I lead the Drupal CMS initiative. I’ll continue to set direction, align teams, and ensure we have the support and momentum to achieve our goals.
We appreciate the ongoing support from Technocrat support in giving Pamela the time to contribute to Drupal CMS.
Drupal CMS leadership changes
We're excited to announce updates to the Drupal CMS leadership team, with the addition of Bálint Kléri as our new Frontend Lead.
Bálint Kléri named Drupal CMS Frontend Lead
Bálint Kléri has been named Frontend Lead, a new leadership role created to oversee the frontend architecture for Drupal CMS, Mercury and Mercury-based themes. Bálint is a full-time contributor to Drupal Canvas, leading the development of Code Components for Acquia and a key contributor to Mercury, the Drupal CMS design system.
During development of Mercury, Bálint stepped in to guide the Tailwind CSS implementation and advocate for the use of best practices. We are grateful for his contributions already, and are excited to have him formally join the team. The addition of this frontend role is critical as we refine the Drupal CMS design system, providing users with a modern and adaptable foundation for Drupal sites and site templates.
Pamela Barone promoted to Product Lead
Pamela Barone is now Drupal CMS Product Lead, overseeing product direction, roadmap, prioritization, and delivery. Serving as Product Owner previously, this shift recognizes the product management responsibilities that Pamela has taken on during the evolution of Drupal CMS.
She will continue to work closely with me as I lead the Drupal CMS initiative. I’ll continue to set direction, align teams, and ensure we have the support and momentum to achieve our goals.
We appreciate the ongoing support from Technocrat support in giving Pamela the time to contribute to Drupal CMS.
April 2026 Drupal for Nonprofits Chat
Join us THURSDAY, April 16 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 document at 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.
Information on joining the meeting can be found in our collaborative Google document.
Talking Drupal #548 - How to build your own CRM
In episode 548 we welcome back JD Leonard to discuss what CRMs are, what problems they solve, and which organizations benefit from them. JD explains why Drupal CRM defines CRM as "Contact Relationship Management," outlines core expectations like contact and relationship tracking and integrations, and describes Drupal CRM's Drupal-native architecture using dedicated, fieldable entity types for contacts, relationships, and contact methods. The panel compares Drupal CRM to older Drupal CRM efforts and user-based approaches, covers security considerations for PII and plans for field encryption, and highlights ecosystem projects such as CRM Email, CRM Membership (including Drupal Commerce integration), and event registration needs.
For show notes visit: https://www.talkingDrupal.com/548
Edges of Judgment
The conversation around AI is drifting into a familiar trap. We’re treating it as a question of alignment when it’s really a question of judgment. A recent reflection by Matthew Tift, written after DrupalCon, captures this tension well. Debates harden into sides, positions get defended, and nuance disappears. But the more useful observation is this: most of the people doing meaningful work with AI aren’t anchored to a fixed stance. They’re working through it, using principles they already trust.
That’s the part many organisations are skipping. Instead of grounding decisions in existing values, they’re reacting to the pace of change. This creates a false urgency to define a position quickly, often at the expense of clarity. In practice, that leads to inconsistent decisions. One team leans into AI for speed, another resists it for control, and neither is wrong. What’s missing is a shared framework that makes those decisions coherent over time.
At TDT, we see this as less of a technology shift and more of a decision-making test. AI doesn’t require new values as much as it exposes whether existing ones are actually being used. If your principles only show up in documentation but not in how choices are made under pressure, they’re not doing much work. The organisations that navigate this well won’t be the ones that pick a side early, but the ones that stay consistent in how they decide as the landscape keeps changing.
Is your website optimised for AIO / GEO?
Is your website ready for AI search? Learn how AIO and GEO help your content get cited in AI-generated answers, not just ranked in search results. Discover the S1x SIGNALS framework and request a free assessment.
Drupal (AI) Playground: Adding more structures to my playground
Building new modules using AI
I am setting up a playground to experiment with AI. My last post discussed developing and contributing a new Entity/Field Labels module to Drupal using AI. I look forward to seeing what I can create next. Before moving forward, I want to pause and explore how AI can assist me in managing and maintaining my existing contributed modules.
Maintaining my contributed modules using AI
Over the past decade, I’ve created and managed numerous contributed modules. I'm not sure how many there are, and it's been challenging to keep them all up to date. In the long run, I believe an AI agent with the right skills could help me manage my overwhelming list of modules. First, I need to clone my modules into my local development environment.
Cloning my contributed modules via Composer
It's unrealistic for me to manually clone each module's repository. Fortunately, Composer supports Git repositories. However, setting up and testing each module's Git repository using Composer can still be very time-consuming. Since AI excels at repetitive, predictable tasks, this is a perfect opportunity for me to let my AI assistant step in and make my life easier.
Using Agent skills to make things easier
Since cloning a Drupal repository for local development is quite straightforward, this presents a great opportunity to develop a custom agent skill. As with many AI-related tasks, it's best to seek help from the AI. Therefore, I prompted Claude to assist me in planning my drupalorg-project-clone skill.
Here is the front matter description of my new drupalorg-project-clone skill, which was generated by Claude Code and Codex.
Drupal 11: Creating A Tabbed Interface With HTMX
This is part three of a series of articles looking at HTMX in Drupal. Last time I looked at using HTMX to run a "load more" feature on a Drupal page. Before moving onto looking at forms I thought a final example of using HTMX and controllers to achieve an action.
One of the key examples that helped me understand HTMX was when it was used to create a tabbed interface, without reloading the page. This was quite simple to recreate in Drupal and can be done in a single controller.
In this article we will be creating a tabbed interface in Drupal, where HTMX is used to power loading the data in a tab like interface without reloading the page.
All of the code contained in this article can be found in the Drupal HTMX examples project on GitHub, but here we will go through what the code does and what actions it performs to generate content.
The first task is to create the route for our controller.
The RouteThe route we create here just points to an action in a controller.
drupal_htmx_examples_tabbed:
path: '/drupal-htmx-examples/tabbed'
defaults:
_title: 'HTMX Tabbed'
_controller: '\Drupal\drupal_htmx_examples\Controller\TabbedController::action'
requirements:
_permission: 'access content'When the user (assuming they have the access content permission) visits the path /drupal-htmx-examples/tabbed then they will trigger the action() method in the controller.
Let's build the controller that this route points to.
Solving a small Drupal issue with plenty added tests: most basic Claude Code setup, without writing a single line of code, issue commentary or commit message myself
To say that there is not an agreement of using large language models (LLMs) for Drupal development would be an understatement. I've been using Claude Code for a while to assits with my Drupal development and I shared a month ago how I brought back the Drupal 7 module upgrader tool from the dead. That was a bit of an involved example, so I wanted to find a simpler one and this time rely even more on Claude.
Gábor Hojtsy Fri, 04/10/2026 - 12:20Introducing LocalGov Bus Data: Bringing Bus Information into Your Council Website
We’re excited to announce the release of LocalGov Bus Data — a new Drupal module built with and for councils, now available for the entire local government community to use.
markconroy 10th Apr 2026Editorial workflows in LocalGov Drupal: secure, scalable and council-ready
Managing a council website is a high-stakes balancing act where a single accidental “publish“ can impact public trust. Learn more about how LocalGov Drupal solves this problem for councils.
Building a Page Layout: Canvas vs Display Builder (Part 1)
Drupal site-builders rejoice! We currently have two major page building projects approaching production-maturity: Drupal Canvas and Display Builder. In this article series, I compare the two projects by implementing real world use cases from the perspective of a site-builder.
DrupalCamp Grenoble Begins Today with Expanded Bilingual Programme
Driving digital innovation with UICC
Discover how 1xINTERNET and UICC apply responsible AI to real-world digital experiences. Webinar and podcast recordings are ready to watch!
When AI meets humanity: a Driesnote that left a lasting mark
A personal, powerful Driesnote shows how Drupal’s community, AI innovation, and leadership shape the future of digital experiences.
UI Suite Monthly #34 — Pushing Toward Core: Design Tokens, AI Workflows, and Display Builder's Road to RC1
Why You Should Speak at DrupalCon Rotterdam 2026
Are you a Drupal enthusiast who’s ever thought, “I’m not expert enough to speak at DrupalCon”? You’re not alone. Imposter syndrome can affect even the most experienced developers, designers, and site builders. But here’s the truth: real-world experience matters far more than textbook expertise. Your lessons learned, project insights, and practical workflows are exactly what the community wants to hear.
Speaking at DrupalCon isn’t just about sharing knowledge. It’s a chance to grow personally and professionally. You’ll gain visibility in the Drupal community, advance your career through skill development and recognition, and connect with peers, mentors, and potential collaborators.
Don’t let self-doubt hold you back. If you’ve tackled real Drupal challenges, you already have a story worth sharing.
Photo by PdJohnson
What Makes a Great DrupalCon Talk ProposalWhen reviewers look at submissions, they’re seeking talks that are educational, clear, and actionable, not sales pitches. Here’s what makes a proposal stand out:
Dynamic type expressions in Drupal config schema
Drupal's config schema YAML supports dynamic expressions inside square brackets that resolve to values from the surrounding configuration data at runtime. Most developers have seen them — [%parent.type] in field formatter schema is a classic example — but few understand exactly how they work or when to use them.
I found a Todoist task from December 4th, 2024: \Drupal\Core\Config\TypedConfigManager::replaceVariable blog post. (Yeah, you do not want to see my "Overdue" list.) I have no memory of what I was working on that day or why I went deep on this. But past-me clearly thought it was worth documenting, so here we are. If you've ever stared at [%parent.type] in a schema file and just accepted it as magic — this one's for you.