04 Feb 2026

feedDrupal.org aggregator

Très Bien Blog: The Algorithmic Bias Against Drupal Community Values

The Algorithmic Bias Against Drupal Community Values

I don't usually fail at making my life easier, but hey, it's a whole new world lately. To try my hand at LLM during my trial of AI-assisted coding, I wanted to see if I could customize an LLM for a specific task: assigning user credit on Drupal Core issues. Depending on the complexity, activity, and number of contributors involved it can take me anywhere between 30 seconds and 30 minutes to assign credit when I commit an issue to Drupal Core. Maybe I could automate some of it?

theodore

04 Feb 2026 10:29pm GMT

Centarro: Any Drupal Commerce Site Can Have a B2B Portal

Drupal Commerce lets you serve both retail customers and business buyers from a single installation. Same products. Shared checkout flow. Same user experience-just adapted to the relationship. Different users can see different prices, payment options, and catalogs.

You don't need a separate platform. You don't need a different domain. You don't need another way to manage content. Drupal Commerce already has the tools to support both B2C and B2B on the same website, using the same codebase, delivering a unified experience to all of your customers.

Even better, you can build a B2B portal in Drupal without any code. The capabilities are already there in existing features and modules.

On February 26th, I'll show you how to do it. We'll walk through building a B2B purchasing portal using Commerce Kickstart as a base. Sign up now.

Read more

04 Feb 2026 2:16pm GMT

Gbyte blog: Mail Composer: Sending multilingual HTML emails with Drupal

A new solution to Drupal's messy mailing approach

Drupal core's mail module has been a mess for a long time and has seemingly not kept up with the modernization of the rest of the stack. Using the hook system to send emails feels archaic; therefore, a while ago, we started developing a module that:

We have been using and improving Mail Composer and would love for that work to be reused and further built upon.

Let's talk code

Just sending an inline email

... is as simple as:

/** @var \Drupal\mail_composer\Manager $manager */
$manager = \Drupal::service('mail_composer.manager');

$manager
->compose()
->setFrom('foobar@foo.bar')
->setTo('foo@bar.bar')
->setSubject('Test subject')
->setBody(['This is the body of the email.'])
->send();

Neat, isn't it?

04 Feb 2026 2:09pm GMT

1xINTERNET blog: An international upbringing that quietly set the stage for the future

A close look at Charles Andrew Revkin: how an international upbringing quietly shaped a digital leader at UICC and his impact on global cancer initiatives.

04 Feb 2026 12:00pm GMT

mark.ie: Drupal CSS is broken when Aggregation is turned on

Drupal CSS is broken when Aggregation is turned on

Here's some tips for debugging broken CSS in Drupal.

markconroy

04 Feb 2026 9:51am GMT

03 Feb 2026

feedDrupal.org aggregator

Dripyard Premium Drupal Themes: Meridian, the Latest Dripyard Theme

Meet Meridian, the newest Dripyard theme. We're really excited about this release, as many hours went into Meridian along with updates to our other themes.

Flexibility

My favorite "feature" of Dripyard themes is flexibility. We market each theme toward a specific vertical, but in practice they are highly versatile. You can easily change the look and feel of an entire site by adjusting color schemes, border radiuses, and imagery.

Pictures are worth a thousand words, so we built our site to showcase multiple demos.

03 Feb 2026 11:18pm GMT

Drupal blog: Inside Drupal CMS 2.0: Q&A with Product Owner Pam Barone

 "A woman seated on a stage gestures passionately. Text reads 'Inside Drupal CMS 2.0 - Q&A with Product Owner Pam Barone' against a vibrant purple background."

Drupal CMS 2.0 launched January 28. We asked Pam Barone-CTO of Technocrat and Product Owner of Drupal CMS-to talk about what's new and what she's most excited for people to try.

What makes Drupal CMS 2.0 different from version 1.0?

Drupal CMS 1.0 was really a proof of concept, to show that we could create a version of Drupal that bundled all of the best practices that many sites were using, and that the community would come together to make it happen in a short amount of time. We did prove the concept, but the 1.0 release did not represent any major innovations, because we were mostly just packaging functionality and tools that we already had and were familiar with. That is not to downplay the accomplishment at all, because it was a huge leap forward for the project, and it provided the foundation for the next steps.

With 2.0, we are introducing two big new concepts: Drupal Canvas and site templates. These represent another huge leap for the project, each in different ways, as we continue with the strategy to empower marketers to create exceptional digital experiences without relying on developers.

What are you personally most excited about for people to try in 2.0?

Drupal Canvas! I am so excited about Canvas and can't wait to get it into the hands of our end users. There were times during the development of 2.0 when I was working in the Canvas editor and I thought, 'Wow, I'm actually having fun!' I can't say I remember thinking that with previous Drupal page building tools.

And it's not just about end users; one of the goals of 2.0 is to introduce Canvas within the community and showcase its potential. It's a paradigm shift, and this level of change is always challenging, but after trying it out and getting familiar with the concepts, I think it'll be clear that it's worth it.

 'Build professional sites in days, not weeks.' The image includes screenshots of a website design interface with tools for layout adjustment and previewing changes. The tone is modern and professional."

Site templates are a big part of this release. Can you explain what they are and why they matter?

Site templates are near-feature-complete starting points for Drupal sites based on specific use cases. They provide a content model, some example content, a polished look and feel, as well as the functionality you would expect based on the use case. The first site template - Byte, which is included in Drupal CMS 2.0 - is for a SaaS-based product marketing site. It includes all of the baseline functionality from 1.0, plus Canvas-powered landing pages, a blog, a newsletter signup and contact form, and a new theme with a dark style.

During the development of 1.0, we realized that we couldn't build something that was both generic and useful. Either we would have to build something simple that would be widely applicable, or we would be making a lot of assumptions about the site's content model and functionality, and providing things that many users wouldn't want.

We decided that in order to really make it easy to launch sites, we had to provide many different starting points, across many use cases. By identifying the use case and being opinionated about how to solve it, site templates can start you off with 95 percent of what you need to launch.

Of course, that assumes there is a site template for your use case - which means we're going to need a lot of them. We're currently working with a group of Drupal agencies who have signed up for a pilot to develop new site templates for the launch of the site template Marketplace.

Let's talk about Canvas-how will this change the way marketers can build with Drupal?

The most obvious thing is just that it provides marketers with a modern, intuitive visual page builder of the kind that any competitive platform needs to have. Up until now, adopting Drupal meant getting its many benefits but compromising on the user experience, because the page building tools were clunky. With Canvas, that compromise is gone. We can provide the experience that marketers have come to expect.

In some ways it feels like we are playing catch-up, especially since it's still early (the first release was in December) and there are some big gaps. But it also feels like a new era for Drupal, and the enthusiasm and pace of adoption so far is really encouraging. So I think we don't really even know yet what changes will come, because when the community is presented with a new way to build cool things, the possibilities are endless.

You've mentioned making integrations easier with recipes. What does that look like in practice?

One of the benefits of using Drupal is that it can be integrated with pretty much anything, and all of the common integrations have modules to make it easier. But they always require some configuration, and it can be tricky to figure out. With recipes, we can add default configuration, and we can prompt for the necessary details, so you don't have to go hunting around for where to add them.

Drupal CMS 1.0 included two integrations that use the recipe prompt already, for Google Analytics and the AI Assistant. They're pretty simple in that you are just adding an ID or an API key, but they still are a big improvement over the manual setup.

For 2.0, with site templates, we have the opportunity to include additional integrations that are relevant to the use case and wanted to tackle something a bit more complicated. Byte ships with a newsletter signup that uses a webform out of the box, and has an optional "Recommended add-on" to integrate with Mailchimp. The Mailchimp module already did most of the heavy lifting, but we worked with the maintainers to develop a recipe that configures the module (and its submodules), and once you authenticate your site with Mailchimp, will automatically create signup blocks for each of your audiences. From there, you can add them to any page via the Canvas editor.

We think that easy integrations are going to be really critical to making site templates attractive as an offering, so we are planning to continue working on that.

In your recent presentations, you've talked about "making easy things less hard" versus "making easy things easy." Where does 2.0 fall on that spectrum?

The initial site templates are very intentionally on the "making easy things less hard" side. Not only is it a totally new concept, but they are leveraging Canvas, which is also new. So we thought that the best chance for success would be to keep it simple and try to really nail the use cases. Once we've all built a few, and we've gotten feedback from real users, we can move into the more complex sites where Drupal thrives.


Drupal CMS 2.0 is available now.

Try it now: drupal.org/drupal-cms/trial

Download: drupal.org/download

Learn more: drupal.org/drupal-cms


Twenty-five years in. Still building.

03 Feb 2026 11:11pm GMT

UI Suite Initiative website: Announcement - Publication of Display Builder beta 2 and a new video

New: Video Tutorial & OverviewA new video has been released as part of the Display Builder series: Display Builder: Installation and OverviewWhat it covers:

03 Feb 2026 5:00pm GMT

Droptica: Automated Content Creation in Drupal: Field Widget Actions Tutorial with Real Results

-

Information gathering, content writing, proofreading, SEO optimization, tag preparation - all these tasks consume a significant portion of the editorial team's time. What if you could reduce this research time by up to 90% through automated content creation? In this article, I present a practical Drupal setup that uses AI-powered modules to generate editorial content with minimal manual input. This includes automatic information retrieval based on the title, tag generation, content creation, and detailed data fetching - all directly in your CMS, without switching between different tools. Read on or watch the episode from the Nowoczesny Drupal series.

03 Feb 2026 10:15am GMT

Specbee: Extending Drupal Canvas with Canvas Full HTML: A step-by-step Integration guide

Drupal Canvas (Experience Builder) limits WYSIWYG editing within its own text formats. Use the Canvas Full HTML module to remove these limitations, giving content editors full control over their rich text content.

03 Feb 2026 9:24am GMT

Morpht: Introducing the Drupal AI Views Agent

The Drupal Views AI agent allows site builders to create and update Views using natural language prompts, without ever opening the Views UI.

03 Feb 2026 12:09am GMT

DDEV Blog: Podman and Docker Rootless in DDEV

DDEV logo with Podman and Docker logos

TL;DR: DDEV supports Podman and Docker Rootless as of v1.25.0. Podman and Docker Rootless are a bit more trouble than the recommended normal traditional Docker providers and have some serious trade-offs. With Podman on macOS you can't use the normal default ports 80 and 443. On Linux Docker Rootless you can't bind-mount directories, so the entire project has to be mutagen-synced. But Podman Rootless on Linux is pretty solid.

Jump to setup instructions: Linux/WSL2 · macOS · Windows

Note: This support is experimental. Report issues on the DDEV issue tracker.

Table of Contents

Understanding Docker and Podman

Open Source Alternatives to Docker Desktop

A common misconception is that Podman is the only open-source alternative to Docker Desktop. This is not true. There are several fully open-source alternatives available on every platform:

All of these work with DDEV. The main reason to choose Podman specifically is if your organization forbids Docker entirely or if you want rootless operation by default.

Why Choose Podman?

Podman is rootless by default, making it the simplest option for secure container environments. Traditional Docker requires root daemons, which can be a security concern in corporate environments with strict policies. (Note that DDEV is targeted at local development, where there are few risks of specialized attacks using this vector anyway.)

Podman's rootless approach runs the daemon without elevated privileges:

While DDEV already runs containers as unprivileged users, Podman eliminates the need for a root daemon entirely.

Why Choose Docker Rootless?

Docker Rootless provides the same security benefits as Podman Rootless while maintaining full Docker compatibility. It runs the daemon without root privileges, offering:

Unlike Podman which is rootless by default, Docker Rootless requires special setup to enable. Choose this option if you want to stay with Docker but need rootless security.

Key aim: Linux and WSL2 users

The primary focus for this article is Linux and WSL2 (we have test coverage for Linux only for now). Most features and configurations are well-tested on these platforms.

Do You Need an Alternative to Docker?

Before diving into setup, consider whether you need an alternative to traditional Docker:

Runtime Why would you do this? Key trade-offs Performance Setup Recommendation
Traditional Docker Standard, widely-used option None Excellent Simple Recommended for most users
Docker Rootless Security requirement for rootless daemon Must use --no-bind-mounts (everything via Mutagen), can't use default workflow Moderate (Mutagen overhead) Moderate Only if rootless security is required
Podman Rootful Organization forbids Docker Slower than Docker, different behavior Slower than Docker Moderate Only if Docker not allowed
Podman Rootless Organization forbids Docker + want rootless security May need sysctl changes for ports <1024, slower than Docker Slower than Docker Moderate Only if Docker not allowed and rootless required

Bottom line: Stick with traditional Docker unless organizational policy or security requirements force you to use an alternative. The alternatives work, but have significant trade-offs.

Installing Podman

Install Podman using your distribution's package manager. See the official Podman installation guide for Linux.

# Ubuntu/Debian
sudo apt-get update && sudo apt-get install podman
# Fedora
sudo dnf install --refresh podman

Note: Some distributions may have outdated Podman versions. This is the case with Ubuntu 24.04, which has Podman 4.9.3. We require Podman 5.0 or newer for the best experience, because we didn't have success with Podman 4.x in our automated tests, but you can still use Podman 4.x ignoring the warning on ddev start.

You can also install Podman Desktop if you prefer a GUI.

For more information, see the Podman tutorials.

Installing Docker CLI

Podman provides a Docker-compatible API, which means you can use the Docker CLI as a frontend for Podman. This approach offers several benefits:

  1. Set up Docker's repository

  2. Install only the CLI:

    # Ubuntu/Debian
    sudo apt-get update && sudo apt-get install docker-ce-cli
    # Fedora
    sudo dnf install --refresh docker-ce-cli
    

    Note: You don't need to install docker-ce (the Docker engine).

Configuring Podman Rootless

This is the recommended configuration for most users.

  1. Prepare the system by configuring subuid and subgid ranges and enabling userns options, see the Arch Linux Wiki for details:

    # Add subuid and subgid ranges if they don't exist for the current user
    grep "^$(id -un):\|^$(id -u):" /etc/subuid >/dev/null 2>&1 || sudo usermod --add-subuids 100000-165535 $(whoami)
    grep "^$(id -un):\|^$(id -u):" /etc/subgid >/dev/null 2>&1 || sudo usermod --add-subgids 100000-165535 $(whoami)
    # Propagate changes to subuid and subgid
    podman system migrate
    # Debian requires setting unprivileged_userns_clone
    if [ -f /proc/sys/kernel/unprivileged_userns_clone ]; then
      if [ "1" != "$(cat /proc/sys/kernel/unprivileged_userns_clone)" ]; then
        echo 'kernel.unprivileged_userns_clone=1' | sudo tee -a /etc/sysctl.d/60-rootless.conf
        sudo sysctl --system
      fi
    fi
    # Fedora requires setting max_user_namespaces
    if [ -f /proc/sys/user/max_user_namespaces ]; then
      if [ "0" = "$(cat /proc/sys/user/max_user_namespaces)" ]; then
        echo 'user.max_user_namespaces=28633' | sudo tee -a /etc/sysctl.d/60-rootless.conf
        sudo sysctl --system
      fi
    fi
    # Allow privileged port access if needed
    if [ -f /proc/sys/net/ipv4/ip_unprivileged_port_start ]; then
      if [ "1024" = "$(cat /proc/sys/net/ipv4/ip_unprivileged_port_start)" ]; then
        echo 'net.ipv4.ip_unprivileged_port_start=0' | sudo tee -a /etc/sysctl.d/60-rootless.conf
        sudo sysctl --system
      fi
    fi
    
  2. Enable the Podman socket and verify it's running (Podman socket activation documentation):

    systemctl --user enable --now podman.socket
    
    # You should see `/run/user/1000/podman/podman.sock` (the number may vary):
    ls $XDG_RUNTIME_DIR/podman/podman.sock
    
    # You can also check the socket path with:
    podman info --format '{{.Host.RemoteSocket.Path}}'
    
  3. Configure Docker API to use Podman (Podman rootless tutorial):

    # View existing contexts
    docker context ls
    
    # Create Podman rootless context
    docker context create podman-rootless \
        --description "Podman (rootless)" \
        --docker host="unix://$XDG_RUNTIME_DIR/podman/podman.sock"
    
    # Switch to the new context
    docker context use podman-rootless
    
    # Verify it works
    docker ps
    
  4. Proceed with DDEV installation.

Podman Rootless Performance Optimization

Podman Rootless is significantly slower than Docker. See these resources:

To improve performance, install fuse-overlayfs and configure the overlay storage driver:

Install fuse-overlayfs:

# Ubuntu/Debian
sudo apt-get update && sudo apt-get install fuse-overlayfs
# Fedora
sudo dnf install --refresh fuse-overlayfs

Configure storage:

mkdir -p ~/.config/containers
cat << 'EOF' > ~/.config/containers/storage.conf
[storage]
driver = "overlay"
[storage.options.overlay]
mount_program = "/usr/bin/fuse-overlayfs"
EOF

Warning: If you already have Podman containers, images, or volumes, you'll need to reset Podman for this change to take effect:

podman system reset

This removes all existing containers, images, and volumes (similar to docker system prune -a).

Configuring Podman Rootful

Rootless Podman is recommended. Only use rootful Podman if your setup specifically requires it.

To configure rootful Podman:

  1. Create a podman group (sudo groupadd podman) and add your user to it (sudo usermod -aG podman $USER).
  2. Configure group permissions to allow non-root users to access the socket
  3. Activate the socket with sudo systemctl enable --now podman.socket
  4. Create a Docker context docker context create podman-rootful --description "Podman (root)" --docker host="unix:///var/run/podman/podman.sock"
  5. Switch to the new context with docker context use podman-rootful

Setting Up Docker Rootless

Docker Rootless on Linux offers rootless security with full Docker compatibility.

  1. Follow the official Docker Rootless installation guide.

  2. Configure system:

    # Allow privileged port access if needed
    if [ -f /proc/sys/net/ipv4/ip_unprivileged_port_start ]; then
      if [ "1024" = "$(cat /proc/sys/net/ipv4/ip_unprivileged_port_start)" ]; then
        echo 'net.ipv4.ip_unprivileged_port_start=0' | sudo tee -a /etc/sysctl.d/60-rootless.conf
        sudo sysctl --system
      fi
    fi
    # Allow loopback connections (needed for working Xdebug)
    # See https://github.com/moby/moby/issues/47684#issuecomment-2166149845
    mkdir -p ~/.config/systemd/user/docker.service.d
    cat << 'EOF' > ~/.config/systemd/user/docker.service.d/override.conf
    [Service]
    Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_DISABLE_HOST_LOOPBACK=false"
    EOF
    
  3. Enable the Docker socket, and verify it's running:

    systemctl --user enable --now docker.socket
    
    # You should see `/run/user/1000/docker.sock` (the number may vary):
    ls $XDG_RUNTIME_DIR/docker.sock
    
  4. Configure Docker API to use Docker rootless:

    # View existing contexts
    docker context ls
    
    # Create rootless context if it doesn't exist
    docker context inspect rootless >/dev/null 2>&1 || \
        docker context create rootless \
            --description "Rootless runtime socket" \
            --docker host="unix://$XDG_RUNTIME_DIR/docker.sock"
    
    # Switch to the context
    docker context use rootless
    
    # Verify it works
    docker ps
    
  5. Proceed with DDEV installation.

  6. Docker Rootless requires no-bind-mounts mode

    Docker Rootless has a limitation with bind mounts that affects DDEV. You must enable no-bind-mounts mode:

    ddev config global --no-bind-mounts=true
    

    Why this is needed:

    Docker Rootless sets ownership for bind mounts to root inside containers. This is a known issue:

    The root user inside the container maps to your host user, but many services will not run as root:

    • nginx runs as root without problems
    • MySQL/MariaDB need extra configuration
    • Apache and PostgreSQL will not run as root

    Podman Rootless fixes this with the --userns=keep-id option, which keeps user IDs the same. Docker Rootless does not have this option.

    The no-bind-mounts mode fixes this by using Mutagen for the web container.

macOS

macOS users can use Podman and Podman Desktop, but setup has its own challenges. Docker Rootless is not available on macOS.

Do You Need an Alternative to Docker?

Runtime Why would you do this? Key trade-offs Performance Setup Recommendation
Traditional Docker Standard, widely-used option None Excellent Simple Recommended for most users
Podman Avoid Docker entirely (organizational policy) Cannot use ports 80/443 (must use 8080/8443 instead), different behavior Slower than Docker Moderate Only if Docker not allowed

Bottom line: Use traditional Docker (OrbStack, Docker Desktop, Lima, Colima, or Rancher Desktop) unless your organization forbids it. The inability to use standard ports 80/443 with Podman creates a significantly different development experience.

Installing Podman

Install Podman using Homebrew:

brew install podman

Or install Podman Desktop if you prefer a GUI.

For more information, see the official Podman installation guide for macOS and Podman tutorials.

Installing Docker CLI

Podman provides a Docker-compatible API, which means you can use the Docker CLI as a frontend for Podman. This approach offers several benefits:

brew install docker

Configuring Podman

  1. Handle privileged ports (<1024):

    Important: Podman on macOS cannot bind to privileged ports (80/443). You must configure DDEV to use unprivileged ports:

    ddev config global --router-http-port=8080 \
        --router-https-port=8443
    

    This means your DDEV projects will be accessible at https://yourproject.ddev.site:8443 instead of the standard https://yourproject.ddev.site.

    Note: switching to rootful mode with podman machine set --rootful --user-mode-networking=false doesn't help with privileged ports because the --user-mode-networking=false flag is not supported on macOS (it's only available for WSL).

  2. Initialize and start the Podman machine:

    # check `podman machine init -h` for more options
    podman machine init --memory 8192
    podman machine start
    

    Check for the Podman socket path using podman machine inspect:

    ~ % podman machine inspect
    ...
       "ConnectionInfo": {
          "PodmanSocket": {
               "Path": "/var/folders/z5/lhpyjf2n7xj2djl0bw_7kb3m0000gn/T/podman/podman-machine-default-api.sock"
          },
          "PodmanPipe": null
       },
    ...
    
  3. Configure Docker CLI to use Podman. Choose one of two approaches:

    Option 1: Create a Docker context (recommended, more flexible):

    # Create Podman context (path to socket may vary)
    # Use the socket path from `podman machine inspect` output
    docker context create podman-rootless \
        --description "Podman (rootless)" \
        --docker host="unix:///var/folders/z5/lhpyjf2n7xj2djl0bw_7kb3m0000gn/T/podman/podman-machine-default-api.sock"
    
    # Switch to the new context
    docker context use podman-rootless
    
    # Verify it works
    docker ps
    

    This approach uses Docker contexts to switch between different container runtimes without modifying system sockets. This is more flexible if you want to use multiple Docker providers.

    Option 2: Use the default Docker socket (simpler, but less flexible):

    # Install podman-mac-helper
    # Use the command from `podman machine start` output
    sudo /opt/homebrew/Cellar/podman/5.7.1/bin/podman-mac-helper install
    podman machine stop
    podman machine start
    
    # Verify it works
    docker ps
    
  4. Proceed with DDEV installation.

Windows

Windows users can use Podman Desktop, but setup has its own challenges. Docker Rootless is not available on traditional Windows (it works in WSL2, see the Linux and WSL2 section).

Do You Need an Alternative to Docker?

Runtime Why would you do this? Key trade-offs Performance Setup Recommendation
Traditional Docker Standard, widely-used option None Excellent Simple Recommended for most users
Podman Avoid Docker entirely (organizational policy) Different behavior, less mature on Windows Slower than Docker Moderate Only if Docker not allowed

Bottom line: Use traditional Docker (Docker Desktop or alternatives) unless your organization forbids it. Podman on Windows works but is less mature than on Linux.

Installing Podman

Install Podman Desktop, which includes Podman.

Alternatively, install Podman directly following the official Podman installation guide for Windows.

For more information, see the Podman tutorials.

The setup and configuration follow similar patterns to the Linux/WSL2 setup, but with Podman Desktop managing the VM for you. Follow the Linux and WSL2 instructions.

Running Multiple Container Runtimes

You can run Docker and Podman sockets simultaneously and switch between them using Docker contexts.

For example, here's a system with four active Docker contexts:

$ docker context ls
NAME                DESCRIPTION                               DOCKER ENDPOINT
default             Current DOCKER_HOST based configuration   unix:///var/run/docker.sock
podman              Podman (rootful)                          unix:///var/run/podman/podman.sock
podman-rootless *   Podman (rootless)                         unix:///run/user/1000/podman/podman.sock
rootless            Rootless runtime socket                   unix:///run/user/1000/docker.sock

Switch between them with:

docker context use "<context-name>"

Note: Running both Docker and Podman in rootful mode at the same time may cause network conflicts. See Podman and Docker network problem on Fedora 41.

Switching Runtimes with DDEV

DDEV automatically detects your active container runtime. To switch:

  1. Stop DDEV projects:

    ddev poweroff
    
  2. Switch Docker context or change the DOCKER_HOST environment variable

  3. Start your project:

    ddev start
    

Which Runtime Should You Choose?

Runtime Comparison

Feature Standard Docker Docker Rootless Podman Rootful Podman Rootless
Platform Support All Linux, WSL2 All All
Rootless Daemon
Has automated testing in DDEV
Mutagen
Bind Mounts ❌, requires no-bind-mounts ✅ (with --userns=keep-id)
Performance Excellent Moderate (because of no-bind-mounts) Slow compared to Docker Slow compared to Docker
Privileged Ports (<1024) Works by default Requires sysctl config Works by default Requires sysctl config or may not work
Setup Complexity Simple Moderate Moderate Moderate
Maturity Most mature Experimental Experimental Experimental
Recommended For Most users Docker users needing rootless Organizations that forbid Docker Organizations that forbid Docker

Recommendations

Use of the many standard Docker providers if:

This is the recommended option for the vast majority of users.

Use Podman Rootless if:

Use Podman Rootful if:

Use Docker Rootless if:

The Journey to Podman Support

Supporting Podman and Docker Rootless required major changes to DDEV's Docker integration:

These changes enabled Podman and Docker Rootless support. These features were developed together because Podman's primary use case is rootless operation. Once DDEV could handle rootless runtimes, supporting both became natural. They share the same security model and similar technical constraints.

Supporting DDEV Development

This Podman and Docker Rootless support was made possible by community financial support. The changes required hundreds of hours of development, code reviews, and testing.

DDEV relies on support from individuals and organizations who use it. With Podman rootless support, DDEV now works in corporate environments where Docker Desktop is not allowed. If you or your organization uses DDEV, please consider sponsoring the project to help keep DDEV free and open source.

Conclusion

DDEV now supports Podman and Docker Rootless as experimental features. This opens DDEV to corporate environments where traditional Docker is not allowed.

DDEV automatically detects your runtime and handles the complexity. Whether you choose Podman for rootless security, Docker Rootless for compatibility, or standard Docker, setup is straightforward.


This article was edited and refined with assistance from Claude Code.

03 Feb 2026 12:00am GMT

DDEV Blog: DDEV v1.25.0: Improved Windows Support, Faster Debugging, and Modern Defaults

DDEV v1.25.0 Release Banner

We're excited to announce DDEV v1.25.0, featuring a completely revised Windows installer, XHGui as the default profiler, and updated system defaults including a move to Debian Trixie.

This release represents contributions from the entire DDEV community, with your suggestions, bug reports, code contributions, and financial support making it possible.

What's New and Updated

Default versions updated:

These updates mostly affect new projects. Existing projects typically continue to work without changes.

Major new features:

What You Need to Do After Upgrading

After upgrading to v1.25.0, follow these steps:

  1. Run ddev poweroff (DDEV will prompt you for this)
  2. Update your projects: Run ddev config --auto on each project to update to current configuration
  3. Update installed add-ons: Run ddev add-on list --installed to see your add-ons, then update them as needed
  4. Free up disk space: Run ddev delete images to remove old Docker image versions
  5. Check compatibility notes below

Compatibility Notes and Things to Check

1. Debian Trixie base image

If your project has custom Dockerfiles or uses webimage_extra_packages and ddev start shows any problems, you may have a little work to do, but most projects are unaffected.

What to do: Test your project after upgrading. See Debian Trixie release notes for known issues.

Note: DDEV already includes the tzdata-legacy package to handle removed timezones in Debian Trixie, so no action is needed for timezone-related changes.

2. Profiler changed to XHGui

If you use XHProf profiling, it now defaults to XHGui mode instead of prepend mode.

What to do: If you prefer the previous prepend mode, run:

ddev config global --xhprof-mode=prepend

3. Nginx modules now come from Debian repository

If you use custom nginx modules, the package names and module loading have changed. DDEV now uses nginx bundled with Debian Trixie instead of maintaining an extra dependency on the nginx.org repository.

What to do: Update your nginx module configuration.

Example: Adding NJS (JavaScript) support to nginx in DDEV v1.25.0+:

ddev config --webimage-extra-packages="libnginx-mod-http-js,libnginx-mod-stream,libnginx-mod-stream-js" --ddev-version-constraint='>=v1.25.0'

cat <<'EOF' > .ddev/web-build/Dockerfile.nginx
RUN sed -i '1i load_module modules/ngx_stream_module.so;\nload_module modules/ngx_http_js_module.so;\nload_module modules/ngx_stream_js_module.so;\n' /etc/nginx/nginx.conf
EOF

4. Removed commands and features

If you use these commands, you'll need to switch:

5. Updated ddev config flags

If you use these flags in scripts, update them:

6. Traefik configuration

If you have custom Traefik configuration, note that:

What to do if you have extra Traefik files:

  1. Merge all your custom configuration into .ddev/traefik/config/<projectname>.yaml and remove the #ddev-generated comment from it
  2. Track issue #8047 for potential future improvements to this workflow

Note: ddev-router no longer stops automatically when the last project stops. Use ddev poweroff to stop it manually.

7. Windows installation

If you're on traditional Windows (not WSL2): The installer may prompt you to uninstall the previous system-wide installation before installing the new per-user version.

Other Improvements

This release includes many other improvements:

See the full release notes for complete details.

From the entire team, thanks for using, promoting, contributing, and supporting DDEV!

If you have questions, reach out in any of the support channels.

Follow our blog, Bluesky, LinkedIn, Mastodon, and join us on Discord. Sign up for the monthly newsletter.


This article was edited and refined with assistance from Claude Code.

03 Feb 2026 12:00am GMT

02 Feb 2026

feedDrupal.org aggregator

Drupal blog: Drupal Powers Global Action for World Cancer Day

Every year on 4th February, the world unites to mark World Cancer Day (WCD), a campaign that raises awareness, amplifies voices, and inspires collective action against cancer. Behind the scenes, the World Cancer Day website, built with Drupal, powers millions of people, providing a central platform for global engagement.

Project overview

Campaign and its impact

The World Cancer Day 2025-2027 campaign embraces the theme "United by Unique", emphasizing people-centered care. This approach prioritizes the needs, values, and active participation of individuals, families, and communities in cancer care. By putting people at the heart of the conversation, the campaign promotes a shift toward more inclusive, responsive, and compassionate health systems.

The 2025 campaign achieved remarkable global engagement:

  • +900 activities in 120 countries
  • +600 stories shared in text, video, and art
  • +1,000 participants in the Upside Down Challenge
  • +30,000 press mentions in 162 countries
  • 6 billion digital impressions and 9 million social media engagements
  • 530,000 website visitors and +300,000 campaign video views

These numbers highlight both the scale of the campaign and the critical need for a platform that can reliably support millions of users simultaneously.

Explore more about the campaign and join the global action at World Cancer Day.

Supporting global action with Drupal

Supporting a high-profile global campaign requires flexibility, scalability, and robustness, capabilities that are fundamental to Drupal's architecture.

Key features

  • Multilingual CMS: Centralized content management across multiple languages ensures the website can reach a large global audience.
  • Scalable hosting: Drupal handles traffic surges exceeding 194 GB per hour, delivering consistent performance during peak activity.
  • Complex interactive tools: Custom features such as poster creation, event planning tools, and a global activities map make it easy for users to participate and share initiatives.
  • Dynamic content delivery: Scrollytelling, multimedia content, and personal stories from those affected by cancer create an engaging, meaningful experience.
  • Accessibility: Drupal's accessibility capabilities reinforce inclusivity by supporting diverse audiences at scale.

"I've been pleased with my experience with Drupal. While the earlier versions were sometimes technically complex, it always felt like a solid, robust platform to build upon. I have been genuinely pleased that we chose to stick with it over the long term and to witness its evolution into a more mature and flexible platform."

Charles Andrew Revkin Senior Digital Strategy Manager Union for International Cancer Control ( UICC)

Scaling impact with Drupal AI

To manage the vast volume of user-submitted stories while maintaining quality, relevance and inclusivity, WCD integrated Drupal AI. This automation helps with content moderation and reduces manual workload, allowing more people to share their experiences and supporting the campaign's people-centered mission as it scales.

Why Open Source matters for global health initiatives

For non-profit organizations in the healthcare sector, efficiency, transparency, and long-term sustainability are essential, especially when every investment must directly support the mission. As an open-source platform, Drupal eliminates licensing costs and avoids vendor lock-in, allowing resources to be focused on participation and impact rather than software fees. Supported by a global contributor community, Drupal benefits from continuous improvements in security, accessibility, and performance, making it a trusted foundation for sensitive, high-impact initiatives like World Cancer Day.

Technology that serves people at scale

The global fight against cancer requires collective action, and Drupal plays an important role in enabling that engagement. By managing large-scale data, complex interactive features, and high-traffic performance, the platform ensures that the campaign can reach millions of people, foster participation, and support socially impactful initiatives year after year.

Read the full case study on 1xINTERNET website

File attachments:

02 Feb 2026 11:53pm GMT

Drupal Association blog: Drupal Powers Global Action for World Cancer Day

Every year on 4th February, the world unites to mark World Cancer Day (WCD), a campaign that raises awareness, amplifies voices, and inspires collective action against cancer. Behind the scenes, the World Cancer Day website, built with Drupal, powers millions of people, providing a central platform for global engagement.

Project overview

Campaign and its impact

The World Cancer Day 2025-2027 campaign embraces the theme "United by Unique", emphasizing people-centered care. This approach prioritizes the needs, values, and active participation of individuals, families, and communities in cancer care. By putting people at the heart of the conversation, the campaign promotes a shift toward more inclusive, responsive, and compassionate health systems.

The 2025 campaign achieved remarkable global engagement:

  • +900 activities in 120 countries
  • +600 stories shared in text, video, and art
  • +1,000 participants in the Upside Down Challenge
  • +30,000 press mentions in 162 countries
  • 6 billion digital impressions and 9 million social media engagements
  • 530,000 website visitors and +300,000 campaign video views

These numbers highlight both the scale of the campaign and the critical need for a platform that can reliably support millions of users simultaneously.

Explore more about the campaign and join the global action at World Cancer Day.

Supporting global action with Drupal

Supporting a high-profile global campaign requires flexibility, scalability, and robustness, capabilities that are fundamental to Drupal's architecture.

Key features

  • Multilingual CMS: Centralized content management across multiple languages ensures the website can reach a large global audience.
  • Scalable hosting: Drupal handles traffic surges exceeding 194 GB per hour, delivering consistent performance during peak activity.
  • Complex interactive tools: Custom features such as poster creation, event planning tools, and a global activities map make it easy for users to participate and share initiatives.
  • Dynamic content delivery: Scrollytelling, multimedia content, and personal stories from those affected by cancer create an engaging, meaningful experience.
  • Accessibility: Drupal's accessibility capabilities reinforce inclusivity by supporting diverse audiences at scale.

"I've been pleased with my experience with Drupal. While the earlier versions were sometimes technically complex, it always felt like a solid, robust platform to build upon. I have been genuinely pleased that we chose to stick with it over the long term and to witness its evolution into a more mature and flexible platform."

Charles Andrew Revkin Senior Digital Strategy Manager Union for International Cancer Control ( UICC)

Scaling impact with Drupal AI

To manage the vast volume of user-submitted stories while maintaining quality, relevance and inclusivity, WCD integrated Drupal AI. This automation helps with content moderation and reduces manual workload, allowing more people to share their experiences and supporting the campaign's people-centered mission as it scales.

Why Open Source matters for global health initiatives

For non-profit organizations in the healthcare sector, efficiency, transparency, and long-term sustainability are essential, especially when every investment must directly support the mission. As an open-source platform, Drupal eliminates licensing costs and avoids vendor lock-in, allowing resources to be focused on participation and impact rather than software fees. Supported by a global contributor community, Drupal benefits from continuous improvements in security, accessibility, and performance, making it a trusted foundation for sensitive, high-impact initiatives like World Cancer Day.

Technology that serves people at scale

The global fight against cancer requires collective action, and Drupal plays an important role in enabling that engagement. By managing large-scale data, complex interactive features, and high-traffic performance, the platform ensures that the campaign can reach millions of people, foster participation, and support socially impactful initiatives year after year.

Read the full case study on 1xINTERNET website

File attachments:

02 Feb 2026 11:53pm GMT

Talking Drupal: Talking Drupal #538 - Agentic Development Workflows

Today we are talking about Development Workflows, Agentic Agents, and how they work together with guests Andy Giles & Matt Glaman. We'll also cover Drupal Canvas CLI as our module of the week.

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

Topics

Resources

Guests

Matt Glaman - mglaman.dev mglaman

Hosts

Nic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi Andy Giles - dripyard.com andyg5000

MOTW Correspondent

Martin Anderson-Clutz - mandclu.com mandclu

02 Feb 2026 7:00pm GMT