Drupal Planet

Mario Hernandez: Understanding The Owl Selector

2 months 1 week ago

With all the advancements in CSS over the past few years, it's surprising to discover a technique that's been available all along. If you're well-versed in CSS, you might already know this little nugget: selector > * + * {...}. Let's dive into it.

Lobotomized Owls 🩉 🩉

The Lobotomized Owl (* + *), or Owl selector, is one of my favorite techniques for managing document flow and achieving consistent spacing in a highly manageable way. While the Owl selector can be used for various style settings, my preferred use is to add spacing between sibling elements.

How does the Owl selector work?

The Owl selector targets elements that are preceded by an immediate sibling. This means that if you apply the Owl selector to a group of HTML elements, the styles will apply to all elements except the first one, as the first one doesn't have a preceding sibling. We'll see some examples shortly.

The Lobotomized Owl isn't a new CSS concept; it's been around since the beginning of CSS and was first discussed back in 2014 when A List Apart wrote about it. Read that article for a more in-depth description of the Owl selector.

Understanding the Owl selectorConcept

The Owl selector allows you to manage the document flow by using the next sibling combinator (+), along with the universal selector (*).

Example

Consider the following HTML:

<div class="parent"> <div class="child"></div> <div class="child"></div> <div class="child"></div> <div class="child"></div> </div>Scoping the Owl selector

Using the Owl selector in its original form (* + *), could result in unexpected updates due to its broad scope. Narrowing the scope is prefered.

Chaining the Owl selector with .parent >:

.parent > * + * { margin-block-start: 2rem; }

Nesting it within .parent along with other rules that may exist:

.parent { /* other rules here. */ > * + * { margin-block-start: 2rem; } }

By narrow the scope as shown above, and using the child selector (>), a 2rem top margin is added to "direct" children of .parent, but only if they have a preceding sibling.

Visual example

A more visual representation of what the CSS is doing can be seen here:

FIG 1: Each white box represents a div while the purple boxes represent top margin.

Instead of writing styles, we’ve created a style axiom: an overarching principle for the layout of content flow. - Heydon Pickering.

Traditional approach for handling margin

In the past I would do something like this to handle margin on a group of elements.

.my-list { li:not(:first-child) { border-block-start: 1px solid #000; } }

That's not terribly bad, but the problem with this approach is that it increases the specificity of the rule, which could complicate overrides.

Before :not was a thing, I would also do something like this (please forgive me):

.my-list { li { border-block-start: 1px solid #000; } } .my-list { li:first-child { border: 0; } }

There's nothing wrong with this example except that it's more code and you're overriding rules. Ultimately, it works, so don't feel too bad if you've done this. Just don't do it again 😉. Instead, do this:

.my-list { > * + * { border-block-start: 1px solid #000; } }A more complex example

The examples above are pretty simple, but in many cases, our HTML may not be as clean or uniform as the examples we've seen. Here's a more realistic example where our markup is a combination of different HTML tags.

<article class="blog-post"> <div class="blog-post__tag"> <a href="#" class="eyebrow">Drupal</a> </div> <header class="blog-post__header"> <h1 class="blog-post__title"> Using modern image formats to improve performance </h1> <p class="blog-post__subtitle"> Small wins, when added up can make a big difference. This is one of those small wins which can result in performance gains for your website.</p> <div class="blog-post__date"> <time datetime="2025-xxx-xx">April 12, 2025</time> </div> </header> <div class="blog-post__share"> <ul class="social-share" role="list"> <li class="social-share__item">...</li> <li class="social-share__item">...</li> <li class="social-share__item">...</li> </ul> </div> <div class="blog-post__content"> ... </div> </article>

The HTML above is actually the code used on each of the blog posts on this site. Let's break it down in an illustration form for a better visual representation.

FIG 2. Illustration of the markup structure of a Blog post.

From the code and FIG 2 above, we notice the following:

  1. The <article> tag is the top parent element with four direct child elements (Tag, Header, Share, and Article content).
  2. The <header> tag is also a parent element itself with three direct child elements (Title, Subtitle, and Date).
  3. There is a mix of HTML tags.

Let's start with the <article> parent selector:

.blog-post { > * + * { margin-block-start: 2rem; } }

The result of this CSS rule is a 2rem top margin on direct sibling children of the .blog-post selector, except the first/top one. I have highlighted in purple how this looks in FIG 3. below:

FIG 3. The purple boxes represent the space added by the CSS above.

Now let's apply the same treatment to the <header>:

.blog-post__header { > * + * { margin-block-start: 2rem; } }

To make it easier to diferentiate, this time I highlighted the margin in direct sibling children of the <header> tag, in blue. See FIG 4. below:

FIG 4. The blue boxes represent the space added by the CSS above.

With very little CSS code we have been able to achieve consistent spacing in direct sibling children of the <article> as well as nested ones inside the <header>. In the spirit of staying DRY, we could even combine both rules to reduce code repitition.

.blog-post, .blog-post__header { > * + * { margin-block-start: 2rem; } }What if the HTML structure changes?

It's not uncommon for the HTML of a document to change. Some of my blog posts, for example, have subtitle text while others don't. The beauty of the Owl selector is that it doesn't depend on specific HTML tags or structure in your document. If new sibling elements are added or some are removed, the spacing previously defined with the Owl selector will continue to work as intended without breaking the document flow.

What about Gap?

Oh yes, enough about Owls 🩉, Gap is a beautiful thing and can even be used similarly to the Owl selector for adding space in between sibling child elements.

.parent { display: flex; flex-direction: column; gap: 2rem; }Pros of gap
  • The CSS block above will behave exactly as the Owl technique, as in it will only add space between sibling child elements.
  • Another advantage of using Gap for spacing, is that when it comes to responsive design, the gap rules you apply to elements for mobile, will remain in place as you transition to tablet or desktop. No need to change the gap settings if the direction of your layout has changed. See FIG 5. below.
  • Gap is great for menu lists where you may want to add spacing in between each menu item except the ones at the end.

FIG 5. Visual of Gap on column and row mode.

Cons of gap

If you opt to use Gap for spacing, this means you either need to use display: flex or display: grid on the parent element. This is not a bad thing if you are already using flex or grid on that parent element, but if your only reason for using gap is for spacing purposes, then I would recommend using the Owl technique instead as it requires not additional properties on your parent selector.

In closing

I don't think there has ever been a more exciting time to work with CSS than now. The capabilities of CSS and browser support have never been better. Sometimes however, using some of the most basic techniques can make a great impact in our projects.

If you found this post useful, stay tuned for more like it.

Resources

DDEV Blog: DDEV Add-on Maintenance Guide

2 months 1 week ago
Introduction

Maintaining a DDEV add-on is more than a one-time task. As DDEV evolves, so should your add-ons. This guide will help you stay in sync with recent changes and keep your add-ons up-to-date, reliable, and aligned with current standards.

As part of preparing this guide, I also updated all official DDEV add-ons to reflect the latest recommendations and improvements.

Recommendations for Add-on Maintainers

Here are some high-level practices to follow:

  • Take inspiration from the official add-ons, see how they're structured and follow similar practices
  • Keep an eye on updates in ddev-addon-template
  • Track changes in DDEV releases
  • Configure your add-on repository settings
  • Add the ddev-get topic to your GitHub repository if it should be discoverable by the wider community. (If your add-on is currently just an experiment or a fork, wait until it matures to add the topic.)
  • Write a clear description and include relevant keywords to improve discoverability
  • Use #!/usr/bin/env bash instead of #!/bin/bash at the top of your command scripts, it's more portable and works better across different environments.
  • Ensure your add-on cleans up after itself: both ddev add-on get and ddev add-on remove should be idempotent. All files added via project_files and global_files must include a #ddev-generated stanza to support proper removal
  • Remember to publish a new release after any update (unless it's just a README.md change)

I'm currently working on a script to streamline the update process. It's a work in progress and available here. I'd appreciate any feedback!

What's New in the DDEV Ecosystem

DDEV development is moving fast, and new features are introduced regularly. Here are some recent updates you should be aware of:

ddev get Deprecation

The classic ddev get command is deprecated in DDEV v1.23.5 and replaced by ddev add-on get.

Huge thanks to @GuySartorelli for implementing this feature, and also for proactively updating many add-on README.md files. You've likely already seen a pull request for your add-on!

Better Testing with Bats Libraries

While all add-ons use the Bats framework for testing, many are still missing Bats libraries that simplify assertions and test writing.

Consider adopting these libraries to enhance test clarity and maintainability.

Example:

Issue and PR Templates

Make sure your add-on includes:

These improve the quality of contributions and bug reports.

Recommending DDEV Version Constraints

Your add-on should encourage users to keep DDEV updated. The current recommendation is to add this stanza to install.yaml:

ddev_version_constraint: ">= v1.24.3"

This ensures compatibility and resolves known issues, such as those related to the Mutagen Problem Report.

Add-on Badges

The old maintained badge required yearly updates, which became a maintenance burden, especially for contributors with many add-ons. It's now replaced by a last commit badge.

To improve visibility and engagement on the DDEV Add-on Registry, add the registry badge to your README.md.

Example:

Advanced Customization with Flags

Starting with DDEV v1.23.5, you can now use ddev dotenv set to manage environment variables more cleanly. This allows your add-on to read custom environment variables defined in .ddev/.env.* files, and use them inside your docker-compose.*.yaml configuration.

This feature is especially useful for advanced setups where flexibility and dynamic configuration are needed.

Example:

Making Small Changes to Docker Images

If your add-on needs a customized Docker image, the typical approach is to create a separate Dockerfile and configure your add-on to use it. However, for minor tweaks, you can take advantage of the dockerfile_inline option in your docker-compose.*.yaml file.

This approach lets you define a small Dockerfile directly in the YAML, avoiding the overhead of maintaining a separate file.

Examples:

MutagenSync Annotation for Commands

With DDEV v1.24.4, custom commands can now use the MutagenSync annotation.

You should use this annotation if your host or web commands modify, add, or remove files in the project directory. It ensures that file sync is handled correctly when Mutagen is enabled, preventing unexpected behavior or sync delays. (It does no harm and causes no performance issues if Mutagen is not in use.)

Example:

Support for Optional Compose Profiles

The same DDEV v1.24.4 release introduced support for optional docker-compose profiles, which can be used by add-ons to offer more flexible configuration.

Example:

Repository Configuration Best Practices

To keep your add-on repository tidy, safe, and aligned with community standards, consider adjusting the following GitHub settings:

General Settings

Go to Settings → General in your repository:

  • Uncheck features you don’t use, such as Wikis, Discussions, and Projects
  • Enable Allow squash merging with Pull request title
  • Disable Allow merge commits and Allow rebase merging
  • Enable Always suggest updating pull request branches
  • Enable Automatically delete head branches
Branch Protection Rules

Go to Settings → Rules → Rulesets:

  1. Click New ruleset → New branch ruleset
  2. Set Ruleset name to main
  3. Under Enforcement status, select Active
  4. Under Targets, click Add target → choose Include default branch
  5. Under Rules, enable:
    • Restrict deletions
    • Require a pull request before merging (set Allowed merge methods to only Squash)
    • Block force pushes
  6. Click Create to apply the ruleset
Conclusion

Keeping your add-on current means less work for users and fewer issues for you to manage. Use this guide as your checklist and stay in sync with the DDEV ecosystem.

Have questions, suggestions, or something cool to share? Join the conversation in our Discord, open an issue, or reach out via email. Your feedback helps improve the tools we all rely on.

If DDEV is helping you or your organization, please consider supporting its ongoing financial sustainability. Every bit helps keep the ecosystem growing and maintained.

Happy maintaining!

PreviousNext: My journey to becoming a Core maintainer

2 months 1 week ago

How do you find your niche and become a Drupal Core maintainer?

by daniel.veza / 1 May 2025

There are still roughly 23 subsystems of Drupal Core without maintainers. These gaps need to be filled. 

While some people may be daunted by this task, rather than trying to learn everything in Core, Daniel explains why it is more valuable to become an expert in one area. This was how he became a Drupal Core maintainer for Layout Builder.

In this video, you will learn about:

  • The steps Daniel took to reach Core maintainership.
  • Why he chose Layout Builder as his niche.
  • How to identify areas in Drupal Core that need maintainers.
Watch the video

Centarro: Revisiting semantic versioning in Drupal Commerce

2 months 1 week ago

Drupal modules are primarily maintained in Git repositories controlled by the Drupal Association on Drupal.org. Before the DA added support for semantic versioning in March 2020, our modules had version numbers like 7.x-1.0 or 8.x-2.1, with the first portion identifying Drupal API compatibility and the second identifying the major and minor version of the module.

However, with modern Drupal (Drupal 8+), a module can support multiple major versions so long as it does not depend on any deprecated APIs in Drupal, its dependencies, or PHP itself. Using the Drupal version number in module version numbers means many of our releases that support Drupal 9, 10, or 11 still start with 8.x-, never mind the fact that we don't support Drupal 8 at all any more.

Semantic versioning allows us to use branch names and tag releases for our various modules based on their own lifecycles. We don't need a new branch for each new major version of Drupal, and we can distribute more predictable updates to end users through Composer with major, minor, and patch versions of our modules.

When we first switched to semantic versioning, we created new branches based on the minor version. Thus, we went from an 8.x-2.x branch off of which we tagged releases to a 3.0.x branch. We never quite knew when to tag a patch versus a minor release in this scenario (i.e., 3.0.1 vs. 3.1.0) and created a situation where we'd have more branches to maintain than we really cared to (3.0.x, 3.1.x, 3.2.x, etc.).

We determined instead to start creating branches named only for the major version (3.x, 4.x, etc.) with release tags that still primarily use minor versions (3.0.0, 3.1.0, 3.2.0, etc.). This will permit us to focus on maintaining a single branch for each module until we need to introduce breaking changes while accommodating the occasional need to backport bug fixes to previous minor versions.

Read more

The Drop Times: What Happens When a Podcast Outlives a Decade? Talking Drupal Knows

2 months 1 week ago
Talking Drupal isn’t just a podcast; it’s a pillar of the Drupal community. As it celebrates its 500th episode on May 2, 2025, the show marks over 12 years of weekly conversations, learning, and connection in a space where most podcasts don’t make it past episode seven. What began as casual chats among a few friends has evolved into a trusted platform that brings together developers, project managers, trainers, and open-source advocates from around the globe. In this special feature, we trace the podcast’s history through the voices of its founders, contributors, and fans, including Stephen Cross, John Picozzi, Nic Laflin, Martin Anderson-Clutz, James Shields, Chad Hester, Rajab Natshah and Josh Mitchell, who have helped shape its format, tone, and community-first spirit. From its humble book club origins to the upcoming “Community Edition” episode, this story is about more than just a tech show; it’s about how consistency, collaboration, and a bit of Drupal magic created something that’s become a cornerstone of the open-source world.

Jacob Rockowitz: Back to the basics: Learning how to build a Drupal module using AI

2 months 1 week ago

Preamble

I began my last blog post, "My Drupal, AI, and Schema.org Manifesto," with an introduction that helped me to start discussing the use of AI in my daily Drupal work. This introduction reveals that I feel overwhelmed about where to begin exploring integrating AI with Drupal.

A Drupal AI module and ecosystem exist that have accomplished remarkable feats. I am eager to delve into the implementation and extensibility of the Drupal AI module; however, diving immediately into the code is daunting and could hinder my need to familiarize myself with using AI and comprehending how it works. Therefore, I am returning to the basics and revisiting one of my first Drupal achievements: building a module
 using AI.

Hypothesis

AI will soon replace basic Drupal tasks, including creating simple modules. When this happens, the definition of entry-level development skills will evolve. AI will not eliminate jobs; instead, it will enhance workers' productivity and efficiency. Therefore, I want to explore how capable AIs are at building a Drupal module. I also want to explore if AI can help a new Drupal developer create their first module.

Theories

Below are some theories I want to explore and keep in mind.

  • Keep it simple and small.
    AIs can comprehend vast amounts of data and relationships - we cannot.
  • Provide a lot of context.
    AI performs significantly better when given as much context as possible. This ensures that both people and machines understand each other.
  • Failure is part of the process. 
    Assume there will be mistakes and dead ends. An iterative approach leads to a better solution and understanding.

Goals

I've already used the word 'overwhelmed' a few times, and to keep my exploration and experimentation from...Read More

Drupal Association blog: Extended Support on Drupal 7 vs. Drupal 10 Migration: Which Path Should You Take?

2 months 1 week ago

As the digital landscape evolves, organizations relying on Drupal 7 (D7) face a pivotal decision: opt for Extended Support or embark on a migration to Drupal 10 (D10)?

Both options have their pros and cons, depending on your timeline, budget, and long-term digital strategy. Let’s break it down so you can make the best decision for your organization.

Option 1: Extended Support – A Temporary Safety Net

Extended Support ensures your D7 site remains secure and functional beyond the official end-of-life deadline, giving you extra time to plan a migration.

Benefits of Extended Support:
  • No rush – Your site remains secure, with critical security updates and patches, without having to migrate immediately
  • Budget flexibility – Spread out costs instead of making a big investment all at once
  • Strategic breathing room – More time to evaluate your business goals and plan a migrations in the future
Drawbacks of Extended Support:
  • Not a permanent fix – In the long run you’ll need to migrate
  • Potential rising costs – Maintaining older technology can become more expensive over time
  • Limited innovation – You won’t benefit from the latest features and improvements in D10
Option 2: Migrating to Drupal 10 – The Future-Proof Solution

Migrating to D10 is a long-term investment in security, performance, and innovation. While it requires upfront effort, it ensures that your digital platform is modern, scalable, and ready for future growth.

Benefits of Migration to D10:
  • Future-proof technology – Stay ahead with the latest security updates and performance enhancements
  • Better User Experience (UX) – New features, improved accessibility, and a more flexible design
  • Long-term cost efficiency – Reduce maintenance costs for outdated technology
Drawbacks of Migration to D10:
  • Upfront investment – Migration requires planning, resources, and budget allocation
  • Complexity – The process can be challenging, especially for highly customized sites
  • Learning curve – Teams may need time to adjust to the new system
Dropsolid: Your Partner in Both Extended Support & Migration

At Dropsolid, we understand that not every organization is ready to migrate immediately. That’s why are part of the Drupal 7 EOL program.

What sets us apart?
Only 3 companies globally qualify for the EOL program and offer Extend Support for D7. We are the only partner in Europe, with offices in Europe and the US. This makes us the go-to-expert in the region for maintaining your D7 site securely while you work on a seamless transition to D10.

At the same time, we know that migration is inevitable—and when you’re ready, we can evolve your D7 and can help you migrate to D10 too.

What we offer:

  • We keep your D7 site secure with ongoing updates and maintenance
  • Migration to D10: customized migration roadmap, tailored to your business needs, covering everything from technical setup to team training
  • Future-proof growth: our roadmap ensures that your site isn’t just D10-ready, but also DXP-ready, seamlessly integrating with your existing tools

Find all info about our related services here.

Key considerations: How to Decide?

When choosing between Extended Support and Migration to Drupal 10, ask yourself:

  • What’s your timeline? Do you need more time, or are you prepared for transition?
  • What’s your budget? Can you invest in migration now, or do you need to spread costs over time?
  • What are your long-term goals? Do you want to future-proof your site, or is short-term maintenance enough for now?
  • How complex is your current setup? A highly customized site may require extra planning before migrating.
Final Verdict: Should You Extend or Migrate?
  • If you need more time to plan and budget, Extended Support can provide a temporary solution.
  • If you’re ready to future-proof your digital platform, migrating to D10 is the smart choice.

Either way, Dropsolid has your back—whether it’s keeping your current site secure or guiding you through a seamless migration. Let’s make the right move together.

Ready to explore your options? Get in touch with us today!

Drupal Starshot blog: Marketplace Share Out #2: Surfacing Critical Assumptions

2 months 1 week ago

Over the past few weeks, the Marketplace Working Group and volunteers have been busy laying the foundations for the months ahead. As a reminder, our goal is to determine whether a Drupal Site Template Marketplace can be designed in a way that is trusted, inclusive, sustainable, and viable—and to reach a go/no-go recommendation before DrupalCon Vienna.

From Idea to Critical Assumptions

Over the past few weeks, the Marketplace Working Group has been focused on a key early step: identifying the assumptions that must be true for a Drupal Site Template Marketplace to succeed.

Rather than moving directly into planning and building, we are working transparently with the community to surface and stress-test our most critical assumptions before making any final decisions.

In this update, we’ll share where we are now—and where we still need your help to validate what matters most.

Why Focus on Critical Assumptions?

The Marketplace is an exciting idea, but it brings with it real risks. Some assumptions, if wrong, could seriously harm Drupal’s ecosystem, community trust, or financial health. We’ve identified the early critical assumptions—those with:

  • High impact if we’re wrong, and
  • High uncertainty based on what we know today.

Rather than ignoring or minimizing these risks, we are bringing them forward, openly and early, so the community can engage with them directly.

Critical Assumptions Emerging So Far

From the emerging community feedback (Survey #1: Shaping the Drupal Marketplace: Contributor Perspectives, slack prompts, and deep discussion in this thread), several high-risk assumptions have emerged:

1. There will be enough demand for site templates to sustain a marketplace.

If we build it, will they come? And will they pay?”
Without real demand, the Marketplace won’t achieve its goals—and may strain community resources without impact.

How we’ll validate: Ongoing surveys to Drupal users and agencies; testing via Drupal CMS starter templates; scenario-based surveys during Real-Time Collaboration (RTC) sessions.

2. High-quality templates will be created and maintained.

We need to avoid a freemium wasteland of abandoned templates.”
Success depends on attracting contributors with design and UX skills—and ensuring long-term maintenance.

How we’ll validate: Contributor surveys about incentives, motivations, and barriers; prototype pilot tests; deeper exploration in RTC sessions.

3. The operational complexity of running a marketplace is manageable.

The DA can’t afford to build and maintain a marketplace that requires millions to operate."
The Marketplace must be financially and operationally sustainable from day one.

How we’ll validate: Modeling operational costs; evaluating automation options; benchmarking against other marketplaces.

4. A commercial element can be introduced without undermining open source values.

Commercialization must not erode what makes Drupal different.”
If done poorly, a commercial marketplace could fragment the ecosystem, damage trust, and alienate contributors.

How we’ll validate: Community consultation on licensing models; exploring models for attribution, revenue sharing, and code stewardship.

5. Governance structures can maintain trust and quality at scale.

If trust fails, the marketplace fails.”
The Marketplace must earn and maintain user and contributor trust through clear standards, quality controls, and transparent processes.

How we’ll validate: Testing community expectations through surveys; prototyping governance models; pilot feedback loops.

Important Tensions Emerging

Through open discussion, several important tensions have also surfaced:

  • Open Source vs. Monetization:
    Balancing the spirit of FOSS with the need for financial sustainability.
  • Support Expectations:
    Clarifying who provides support for templates—and setting fair boundaries.
  • Future Risks:
    Avoiding the slippery slope toward undermining Drupal collaborative ecosystem model or a poor signal-to-noise ratio from low quality or unsupported templates.

We recognize that these are not easily solved with a single conversation. They will require ongoing community engagement, transparency, and iteration.

Where We Are Now

Here’s what’s been accomplished so far:

  • Roadmap finalized for how we'll reach a go/no-go decision.
  • Volunteer team onboarded, and we're beginning weekly coordination around community engagement.
  • Community framing completed, based on early signals from surveys, Slack prompts, and discussions.
  • Critical assumptions identified through our Week 2 Assumption Slam.
What’s Next

Over the coming weeks, we’re moving systematically through key questions:

  • Contribution Value: What would make it worthwhile for someone to contribute a template?
  • Governance & Trust: What signals would make users feel confident using a marketplace template?
  • Ecosystem Fit: How can the marketplace align with, not compete against, existing agency and contributor models?
  • Contributor Experience: What support is needed to help contributors succeed?

Each week, we’ll continue to validate assumptions, evolve our thinking, and ensure that what we’re building—if we build it—is something the community truly wants and can stand behind.

Thank you to everyone who has already shared feedback, challenged assumptions, and raised important questions. Your voices are helping shape this work.

Stay tuned—and stay involved.

How You Can Get Involved
  1. Respond to weekly Slack prompts.
    This week: What would make it worthwhile for you to contribute a template?
  2. Join our upcoming Real-Time Collaboration (RTC) session
    First session: 1 May 2025 at 15:30  UTC about Co-creating Value and Incentives
  3. Share your perspective on the surveys when they open.
    How could a Drupal Site Template Marketplace Help You? for Agencies and potential End Users of templates.
  4. Bring forward your own assumptions and risks we may have missed.

Nextide Blog: Maestro and ECA Integration

2 months 1 week ago
Maestro and ECA Integration

When Maestro first hit the Drupal scene, it was 2011, Drupal 7 was the main release and the Rules module was the primary mechanism you'd use to react to events happening in your Drupal system. Maestro integrated easily with Rules to allow site builders to fire off Maestro workflows when events happened in Drupal.  Fast forward to 2025, and the ECA module is rapidly gaining traction.  Just like with Rules, Maestro can integrate with ECA.

 

Talking Drupal: Talking Drupal #499 - Contact Form Initiative

2 months 1 week ago

Today we are talking about The Contact Form Initiative, What it is, and how it helped Drupal with guest J. Hogue. We’ll also cover Local Tasks More as our module of the week.

For show notes visit: https://www.talkingDrupal.com/499

Topics
  • What is the Contact Form initiative
  • What makes up the contact form recipe
  • Why did you want to run this initiative
  • What are the responsibilities of an initiative lead
  • Were there any unexpected speed bumps
  • Who was involved
  • As a non-backend developer, any hesitation to lead this effort
  • What was onboarding like
  • What was the timeline
  • Any tips for others thinking of leading an initiative
Guests

J. Hogue - oomphinc.com artinruins

Hosts

Nic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi Kathy Beck - kbeck303

MOTW Correspondent

Jacob Rockowitz - jrockowitz.com jrockowitz

  • Brief description:
    • Nodes can have too many local tasks. Only the first few, like View, Edit, Layout, Revisions, and Translate, are used daily. Would you like to hide or reorder less commonly used local tasks, which include Usage, Clone, Devel, and Convert. There is a module for that
  • Local Tasks More (local_tasks_more)
  • Brief history
    • How old: created on November 6th, 2024
    • Versions available: 1.0.0-beta2 r
  • Maintainership
    • Actively maintained
    • No security coverage
    • Has test coverage
    • Does not require much documentation
    • No issues
  • Usage stats:
    • 22 sites
  • Maintainer(s):
    • jrockowitz (me)
    • Module features and usage
    • Enter the base routes that support the show more/less task link and alterations.
    • Enter the local task id and the altered title and weight. Set the local tasks to FALSE to remove it.
    • Enter the number of links to trigger show more/less tasks link/icon from primary and secondary tasks (aka tabs).

The Drop Times: Strengthening Drupal, One New Developer at a Time

2 months 1 week ago

If you’ve been keeping an eye on Drupal community updates, you’ve probably seen the IXP Fellowship making some waves — and for good reason. It's the kind of program that feels long overdue: giving new Drupal developers, the ones who know their way around but haven't had their first real break yet, a way into the industry. Michael Anello, in his blog post, highlighted how the IXP is about recognising that real-world experience needs a starting point — and it’s refreshing to see that truth backed by genuine incentives. With early adopters like Seed EM and Digital Polygon already on board, the IXP Fellowship isn’t just an idea anymore; it’s producing real graduates and real results.

The real story here isn’t just that there’s a new pipeline — it’s that the Drupal community is finally getting serious about building for the future. On LinkedIn, Carlos Ospina praised the program's impact on both developers and companies, noting its potential to reshape the way new talent enters the field. Too often, companies talk about wanting fresh talent without providing meaningful opportunities to beginners. IXP changes that put mentorship at the centre and reward companies for stepping up. In his blog, 'A Drupal Couple,' he emphasised the value of bringing in new faces who now have a clear way to gain professional experience without hitting the usual barriers. That's not just good news for the Fellows; it's a necessary move for Drupal’s long-term growth.

If the community embraces this the way it should, the IXP Fellowship could quietly shift how Drupal brings in and develops new talent. It's not about overnight transformation; it’s about making sure newcomers aren’t left out simply because they’re new. Giving people a real start, with mentorship built in from the beginning, could mean stronger teams and a more sustainable community over time. It’s a small step that, if done right, could make a real difference where it matters.

Now, let's dive into the most important stories from last week.

DISCOVER DRUPALDRUPAL COMMUNITY EVENTSORGANISATION NEWS

We acknowledge that there are more stories to share. However, due to selection constraints, we must pause further exploration for now.

To get timely updates, follow us on LinkedIn, Twitter and Facebook. You can also join us on Drupal Slack at #thedroptimes.

Thank you, 
Sincerely 
Kazima Abbas 
Sub-editor, The DropTimes.

PreviousNext: Building the experience builder experience

2 months 1 week ago

With Experience Builder in development and set to change how editors work in Drupal, Lee provides an overview of this ambitious initiative.

by lee.rowlands / 28 April 2025

“I believe we're on the cusp of Drupal's Inverse Mullet* phase

 

*Inverse mullet - business out back, party up top”

In this video, Lee explains that Drupal 8+ is now a decade old, with a rock-solid backend and plenty of decoupled experience to draw on for building editing experiences. This allows us to enter a new period of front end innovation.

The presentation goes on to fully explore the Experience Builder goals and discuss how the work is going, as well as explaining the technology and ways to get involved.

Links:Watch the video

Nuvole: More peace of mind when applying recipes or letting AI configure your site

2 months 2 weeks ago
Ideally you would export the config and commit it in git before and during experimenting with recipes or changing configuration with AI. But core already has an API to create config checkpoints, we can expose it to the UI and let you the site builder use it: Introducing Config Checkpoint UI

Last week I attended the Drupal Dev Days in Leuven and many of the sessions and also conversations in the hallway and the contribution room were about Drupal CMS and AI.

The foundational engine behind Drupal CMS is the recipe system, which allows a bunch of configuration changes to be bundled and applied to your site. This is really cool, but it may do things you are not completely aware of. Unfortunately there is no way to “undo” a recipe. The same problem occurs if one is letting AI change configuration.

DDEV snapshots and git commits

The proper solution of course is to export the configuration and version it in git before starting to play with recipes, as well as periodically in between applying recipes to have more save points to go back to. Since recipes can also add default content and some configuration can not be deleted when there is content for it, it means that sometimes a previous git checkout of the configuration can not be imported. Therefore, the best solution is to create database backups and roll them back when needed. DDEV makes this very easy to do, and so that would be the first recommendation to address the problem and it will always work.

However, the ddev snapshots do not really give one a lot of information of what changed. The configuration in git is a lot better, but it requires an extra manual step to create the export and commit it to git. That may not be instinctive to most drupal users, especially not the target audience of Drupal CMS.

What if Drupal could help us with that?

It turns out that Drupal core introduced the concept of configuration checkpoints when recipes were added. The idea is that before a recipe is applied a checkpoint is set, then when the recipe application fails the configuration is rolled back to the checkpoint.

There is an issue for adding a command to revert to checkpoints but no work has even started.

I had the idea already at Drupalcon Barcelona 2024, but after discussions in Leuven I decided to implement a UI for the configuration checkpoints.

How does Config Checkpoint UI work?

So far the first version is very simple: It exposed some of the basic API to the UI. One can create new checkpoints, delete checkpoints and revert the site configuration to an older checkpoint. The reverting is done essentially the same way as the core command does: importing from the checkpoint storage. This is very similar to what Config Split does and the reason for which I thought it was a good idea to try.

Future and Limitations

There are a few bugs in other projects to watch out for: Project browser does not set a checkpoint, and core has a bug when deleting checkpoints. Of course there may be lots of bugs in the new module itself. In particular one of the things I have ran into is that the uninstall validation is a bit broken, so some of the recipes can not be rolled back when they add fields that depend on a module added at the same time. I will have to check where exactly this bug is hiding. More advanced things could also be explored, for example merging checkpoints or deleting checkpoints without deleting everything that came before.

Tags: Drupal Planet

MidCamp - Midwest Drupal Camp: MidCamp Needs You!

2 months 2 weeks ago
MidCamp Needs You! We need you!

If you've been looking for non-code opportunities to give back to the Drupal community, we have the perfect solution! Volunteer to help out at MidCamp 2025.  

We’re looking for amazing people to help with all kinds of tasks throughout the event including: 

Setup/Teardown
  • For setup, we need help making sure registration is ready to roll, getting hats ready to move, and getting the rooms and walkways prepped for our amazing sessions.

  • For teardown, we need to undo all the setup including packing up all the rooms, the registration desk, cleaning signage, and making it look like we were never there.

Registration and Ticketing
  • We need ticket scanners, program dispersers, and people to answer questions.

Session Monitors
  • Help us to count heads, introduce the speakers and make sure they have what they need to thrive, and help with the in-room A/V (by calling our Fearless Leader / A/V Genius)

Choose Your Own Adventure
  • We won't turn away any help, so if there's something you'd like to do to help, just let us know!

Every volunteer will receive credit on Drupal.org, so be sure to include your profile name when you sign up to volunteer.

If you’re interested in volunteering or would like to find out more, please reach out to the #volunteers channel on the MidCamp Slack.

There will be a brief, online orientation leading up to the event to go over the volunteer opportunities in more detail. 

Sign up to Volunteer!

Questions?

Don’t miss a beat!

Keep an eye on our news page and subscribe to our newsletter for updates on the venue, travel options, social events, and speaker announcements.

MidCamp 2025 is your chance to learn, grow, and connect—don’t miss out!

Do volunteers still need a ticket?

Yes. While we appreciate your help, we still ask volunteers to purchase a ticket. We have flexible ticket options for you to choose from. As a volunteer you'll also get dibs on the MidCamp Archives... our seemingly endless box of vintage swag.

View and Download

DrupalEasy: The new IXP program: Ushering in needed fresh Drupal talent with bona fide incentives for employers

2 months 2 weeks ago

Organizations can now be rewarded with Drupal contribution credits (among other enticements) for hiring new, inexperienced (IXP) Drupal developers.

After many months (years?) of planning, the Drupal IXP program is open and accepting applications for hiring organizations. From now forward, any participating organization that hires a new Drupal developer (with less than 3 months of paid experience) can earn 250 contribution credits upon successful program completion.

I'm super proud to have been working with Carlos and Anilu (A Drupal couple) and a number of other volunteers on this effort and am really happy to see it launched.

Why?

The Drupal developer community is getting older. With modern Drupal being more challenging to learn for new developers (especially compared with Drupal 7), fewer and fewer new Drupal developers have been joining our ranks. In order to survive, we need to build up the pipeline of new, fresh-minded, Drupal talent.

How does the program work?

Interested organizations can apply to participate at Drupal-IXP.site. After a quick manual review, accepted organizations will be provided with a coupon code to post an IXP position on jobs.drupal.org for free.

We have worked with the Drupal Association on creating a dedicated area for IXP positions on jobs.drupal.org.

Interested IXP developers apply for positions, and upon an offer from one of the participating organizations, both parties notify the Drupal-IXP site that the engagement has begun.

Both the IXP developer and hiring organization are required to submit periodic reports to Drupal-IXP to ensure all program requirements are being met (including a minimum number of mentoring hours.)

Once the minimum program length has been met (160 hours of paid work,) the hiring organization is eligible to receive 250 contribution credits upon a final review by IXP program volunteers. 

What types of tasks are IXP developers suited for?

Keeping in mind that individual IXP’s will have diverse backgrounds, and, based on research we've done, IXP developers may be well-suited for tasks like:

  • Drupal core and module updates
  • Drupal site-building
  • Quality assurance

Depending on the non-Drupal background, IXPs might also be well-positioned to take on more complex or specific tasks.

We realize that the more guidance we can provide hiring organizations, the more successful this program will be; so we’ve started a Best practices for hiring organizations document and plan on collecting data from more organizations to help provide additional information (and case studies) to help with the IXP hiring process.

What are the program requirements?

The complete Drupal IXP requirements for interested parties are available at https://www.drupal.org/ixp

The IXP for new developers page details the minimum recommended skills level (although hiring organizations are welcome to hire at any skill level) as long as the IXP developers being hired have less than 3 months of paid experience.

The IXP for organizations page details mandatory program requirements including, but not limited to, at least 160 hours of paid work and a minimum of 1 hour of mentoring for every 10 hours of work.

Moving forward

This is only the beginning of the Drupal IXP program. We are looking forward to learning valuable lessons along the way, and fully expect the program to evolve as more and more organizations get involved.

Have questions? Fee free to use our Contact page or ping us in #ixp-fellowship channel of the Drupal Slack workspace.   


 

Checked
34 minutes 9 seconds ago
Drupal.org - aggregated feeds in category Planet Drupal
Drupal Planet feed