PreviousNext: Experience Builder has pushed the boundaries of what Drupal can do. Here's how we can push it further.

You've probably seen some excitement in the Drupal community around Experience Builder. The current version (0.5.0-alpha1) shows a giant leap forward in Drupal's page building and editing experience.

by lee.rowlands / 8 July 2025

Since late 2024, I've been engaged by Acquia to work on Experience Builder. This has been a particularly challenging project, combining many core Drupal concepts, such as the Form, Render, Entity, Plugin and Validation APIs, with newer front-end technologies like React, Redux, RTK-Query, Vite and Astro.

As we approach a beta release, I've been thinking about how we could push Experience Builder even further. Here are some of the things I'd love to work on next.

True multi-user editing

Currently, Experience Builder makes use of hashing to detect editing conflicts. If two users are editing the same page and one of them doesn't have the latest changes, the back end will prevent a user from overwriting another user's changes. This is similar to the 'The content has either been modified by another user, or you have already submitted modifications' error message we've had on content edit forms for a long time.

Unfortunately, this doesn't align with what users expect in 2025. Users are accustomed to multi-user editing experiences, such as Google Docs. Experience Builder has gone to great lengths to focus on building a modern front-end editing experience with React, so getting a 'reload to fetch latest changes' message detracts from that.

Luckily, we're well-positioned to support a multi-user workflow.

In Experience Builder's front-end, when you make a change to the page, you making use of Redux to keep track of the layout and model. Each change triggers a 'reducer' that takes the old state and returns a modified version of it.

Currently, we perform those changes on the front-end and then make either a PATCH or POST request to Drupal to update the preview and store the draft version. When you edit a single component, we make a PATCH request and update only that component.

When you perform any other operation, such as re-ordering a component, deleting a component, or adding a new component, we perform a POST request and update the entire model. Technically, in REST parlance, this is a PUT, but let's not split hairs.

True collaborative editing applications typically use a collaborative editing algorithm. There are two widely used algorithms and a third emerging one.

Google Docs uses the OT algorithm. It has low memory and storage requirements, but is slow to perform merges. CRDTs are more efficient when it comes to merging, but have higher data storage and memory requirements. EG Walker is an emerging algorithm that combines the best of OT and CRDT, aiming to reduce the data and memory overhead of CRDTs without losing the merge speed.

Because we use reducers to make changes to the front-end, we're already thinking of updates to the model as discrete operations. This should lend itself well to adopting a true collaborative editing algorithm that will allow us to achieve the multi-user editing experience users expect in 2025.

Real-time server-side events

Currently, the front-end polls the back-end every 10 seconds to update the list of pending changes. This is because we don't have a way of initiating updates from the server side.

Mercure is a lightweight real-time event server that uses Server Sent Events. Mercure was created by Kévin Dunglas from the Symfony Core team and easily integrates with PHP (there's even a module for it).

Adding real-time events to Experience Builder unlocks a huge number of usability improvements. Not only can we initiate updates from collaborative editing in real-time, we can also get really creative with the user experience and add features like:

  • Multi-user presence notifications - e.g. we could show the Avatar of users editing a page in the top bar, which is what Google Docs does
  • Highlight components another editor is editing - we could add a visual indicator to a component when another user is editing it

Obviously, we would need to take a progressive enhancement approach to this. We can't make Mercure a hard requirement for hosting a Drupal site. We could add these features when Mercure is available and configured, and silently ignore them when it isn’t.

Client-side preview updates

At present, Experience Builder does a round-trip back to Drupal to update the preview. This is because for SDC and block components, we need Twig to render the preview. Ideally, we could generate a preview from the user's browser and avoid this latency.

There are two ways we could tackle this.

The first approach is to ship a WASM running Twig. The Twig playground is an in-browser version of Twig that lets you write and execute Twig code. This utilises a WASM running PHP and Twig. If we took this approach, we could likely achieve a feature set very close to that of running Twig in Drupal. Obviously, there are some things we can't do. We would be limited to pure Twig templates that take input and produce output. Modules like Twig Tweak, which let your Twig templates interact with Drupal, couldn't be supported. Luckily, most of the things we're rendering in Experience Builder should largely be pure, such as SDCs and Blocks.

The second approach is a bit more experimental. In my spare time, I've been working on a library called twigCASTer. It takes the token stream parsed from Twig and turns it into a Component Abstract Syntax Tree. The Twig parser is only interested in tokens that it needs to render the output. It takes no position on the hierarchy of HTML. Markup in Twig files is seen as a string, with no context of the DOM tree it may represent. twigCASTer extends Twig tokens to build up a DOM tree whilst parsing the string content. From there, it can be cast into another component language. I've been experimenting with taking this AST and casting it into valid compiled JSX. 

It’s still very early days, but I do have a number of test-cases passing where Twig goes in and valid JSX, ready for consumption in the browser, comes out. This is a much more ambitious approach and will be tricky to get right. An obvious shortcoming of this approach would be many Drupal Twig extensions that have no JSX equivalent.

Summing up

Are you interested in working on any of these features? Do you have ideas or experience working with the technologies mentioned? Reach out in the Experience Builder channel. Or are you interested in sponsoring work on these features?  Get in touch with us to express your interest.

Talking Drupal: Talking Drupal #510 - Drupal Hooks: Drop 'em like they're hot

Today we are talking about Drupal Hooks, why they got changed in core, and what to do now with guest Karoly Négyesi better known as Chx. We’ll also cover Media Folders as our module of the week.

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

Topics
  • Deep Dive into Drupal Hooks
  • The Evolution of Drupal Hooks
  • Challenges and Solutions in Hook Conversion
  • Community Involvement and Contributions
  • The Future of Drupal Hook System
  • Introduction to Procedural Hooks
  • Understanding Theme Hooks
  • Complexities of Preprocess Hooks
  • Converting Hooks to Object-Oriented
  • Impact on Contributed Modules
  • Challenges in Core Conversion
  • Future of Drupal Hooks
  • Lightning Round and Conclusion
Resources Guests

Károly Negyesi - ghost-of-drupal-past

Hosts

Nic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi Martin Anderson-Clutz - mandclu.com mandclu

MOTW Correspondent

Martin Anderson-Clutz - mandclu.com mandclu

  • Brief description:
    • Have you ever wanted to have your Drupal site's media assets presented in a UI that evokes the hierarchy of a filesystem? There's a module for that.
  • Module name/project name:
  • Brief history
    • How old: created in Apr 2025 by João Mauricio (jmauricio)
    • Versions available: 1.0.3 which supports Drupal 10.3 and 11
  • Maintainership
    • Actively maintained
    • Security coverage
    • Test coverage
    • Number of open issues: 9 open issues, 2 of which are bugs, although one was just fixed
  • Usage stats:
    • 61 sites
  • Module features and usage
    • The module mimics a file structure by associating media entities with a taxonomy hierarchy
    • It then provides an intuitive, drag-and-drop UI to move items between locations, drag in new items, or even search within a particular “folder”, including a recursive search
    • When you drag in files, it uses “smart” logic to automatically assign files to Media bundles
    • It provides a form display widget, a view display widget, a CKEditor plugin, and it’s compatible with other filesystem modules, like S3 File System
    • This kind of interface is a requirement I’ve seen in RFPs by companies looking for a new CMS, so having this available as a drop-in solution

The Drop Times: People Behind the Projects

Every part of Drupal, from modules to core releases to translations, is built and maintained by people. Thousands of contributors shape this ecosystem: writing code, reviewing issues, reporting bugs, maintaining projects, improving accessibility, updating documentation, mentoring others, and supporting discussions. Much of this work happens quietly, without being seen beyond issue queues, commit logs, or Slack threads. Yet this invisible layer is what keeps Drupal alive and moving forward.

Drupal has always valued community, and it already has a strong culture of contribution. The credit system, contribution recognition on Drupal.org profiles, and core commit messages all reflect that. But there’s room to show more. Not just who contributed to the core, but who maintains projects that thousands of sites depend on. Who keeps the modules stable? Who takes the time to help others in forums? Who steps in when no one else does? These are not side efforts; they are part of what makes Drupal reliable.

Recognising this work more clearly, whether through module pages, community spotlights, contributor highlights in newsletters, or dashboards that show project health, can strengthen the whole ecosystem. It supports trust. It helps people build reputations. It encourages sustained involvement. It reminds everyone that Drupal is not just made of code—it’s made of people who care, and continue to show up. As the project evolves, creating more ways to acknowledge and celebrate that effort is a simple, powerful step forward.

DISCOVER DRUPAL

ORGANIZATION NEWS

EVENT

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.

ImageX: Always Evolving: Interview with First-Time DrupalCamp Speaker, Mariia

Drupal conferences are always rich with technical insights for building exceptional digital experiences. But there's another side — the non-technical topics that are just as essential. These themes resonate deeply with anyone working in tech (and beyond), because without them, even the best technical skills aren't enough to build truly great websites. Just as importantly, they help us navigate life’s complexities, stay resilient, and maintain a sense of balance.

DrupalCon News & Updates: DrupalCon North America 2026: Evolving for the Community

DrupalCon has always been a conference by the community, for the community—and as we look ahead to DrupalCon North America 2026 in Chicago, we’re making thoughtful changes to ensure it continues to reflect those values.

After a successful DrupalCon Atlanta, we’ve taken time to reflect, gather feedback, and make updates that prioritize access, sustainability, and community connection.  Each of the changes outlined below is rooted in one or more of these values—whether it's improving affordability, building lasting relationships, or creating a more efficient and inclusive event experience. With guidance from the DrupalCon North America Steering Committee, we’re excited to share a refreshed ticket structure, updated volunteer policies, a reimagined Expo Hall, and a renewed focus on summits, trainings, and collaboration.

What’s New for 2026

Ticket Pricing: More Affordable, More Accessible

We’ve simplified and lowered the cost of general admission tickets to make DrupalCon more accessible—without sacrificing the quality of experience our community expects. These changes were driven by feedback from past DrupalCon attendees, the North American Steering Committee, and the community at large, all of whom expressed a strong desire for more affordable access to the event.

Ticket Tier Atlanta 2025 Chicago 2026 Savings Early Bird $890 $575 $315 Regular $990 $700 $290 Late/Onsite $1,190 $850 $340

Early Bird registration opens September 15, 2025 and is open for 16 weeks!
Secure your ticket early to lock in the best rate.

Camp & Local Association Ticket Perks

For every 5 tickets purchased from a Drupal camp or local association, that community will receive 1 complimentary ticket to share with a deserving community member, with a max of 10 complimentary tickets per local camp or association. It's our way of reinvesting in local leadership and participation.

Updated Volunteer Ticket Policy

This change reflects our focus on access and sustainability. In our DrupalCon Atlanta recap blog, we highlighted how streamlined operations improved the event experience for attendees and volunteers alike. Building on that momentum, we recognized the need for clearer guidelines to ensure volunteer opportunities are distributed fairly and effectively.

We’ve updated the volunteer ticket structure to make it more equitable and scalable:

  • Volunteer under 20 hours → 25% discount
  • Volunteer 20+ hours → Complimentary ticket

These tickets are non-transferable and may not be combined with other discounts.

Previously, volunteer ticket codes were sometimes misused or distributed without proper oversight. These updated guidelines help preserve full complimentary tickets for those who contribute a significant amount of time and effort, while also creating new opportunities for others to attend at a reduced rate.

Additionally, we’ve streamlined the on-site registration process with self-check-in, reducing the need for a large number of on-site volunteers and allowing us to focus support where it’s most impactful.

Learn more and sign up to volunteer.

Summits & Trainings: Real Talk, Real Skills

Summits are one of DrupalCon’s most valuable opportunities for industry-specific collaboration and knowledge sharing. Designed to connect attendees working in the same verticals, these events offer focused access to speakers with real-world experience, engaging roundtable discussions with peers in similar roles, and meaningful conversations about shared challenges. Attendees walk away with practical takeaways and lasting connections, while participating sponsors have a chance to introduce themselves to leaders in the space in an organic, relevant way.

Taking place Monday, 23 March 2026.

Industry & Community Summits

Join peers in:

  • Healthcare
  • Higher Education
  • Government
  • Nonprofit
  • Community

Each summit features two half-day sessions that do not conflict with the main conference program, creating space for meaningful discussion and idea sharing.

Summit Type Atlanta 2025 Chicago 2026 Industry Summit $250 $300 Community Summit Free Free for RippleMaker members, $50 for non-member
(Click HERE to become a Ripple Maker)

Lunch is not included with the Community Summit, but a lunch ticket add-on will be available for purchase during registration.

Trainings

DrupalCon Trainings remain at $500 and offer deep-dive, expert-led learning opportunities on a wide range of Drupal skills.

More Community Updates

You’ll notice more networking spaces, and informal meeting zones—especially in the Expo Hall and hallways. We’re doubling down on meaningful, unstructured connections.

These changes are only possible through thoughtful cost management and the continued support of our sponsors. Their partnership helps us keep ticket prices accessible while delivering the high-quality experience the community expects. We’re grateful to those who invest in DrupalCon and help us create an event that welcomes and supports everyone.

Traveling from Outside the U.S.?

The Drupal Association is happy to issue official invitation letters for those requiring a visa.

Request your visa letter here.

Letters are generated automatically—just complete the form and check your email (including spam folders).

Key Dates

Milestone Date Program at a Glance Released 6 June 2025 Call for Speakers Opens 21 July 2025 Early Bird Registration Opens 15 September 2025 Call for Speakers Closes 26 September 2025 Grants & Scholarships Applications Open 1 October 2025 Grants & Scholarships Applications Close 31 October 2025 Session Notifications to Speakers 12 November 2025 Grant & Scholarship Recipients Announced 12 November 2025 Regular Registration Opens 5 January 2026 Conference Schedule Available 13 January 2026 Late Registration Opens 23 February 2026 DrupalCon Chicago 23-26 March 2026

Stay at the Heart of the Action

Hilton Chicago is DrupalCon’s official headquarters hotel—and it's where the magic happens.

From morning coffee chats to late-night strategy sessions in the lobby, this is where the community connects. Staying on-site helps you maximize your time, make spontaneous connections, and be part of the full experience.

Book your room at the Hilton Chicago.

Sponsorship Updates

We’re reimagining our sponsorship offerings to better connect you with the Drupal community—bringing fresh opportunities and updated packages designed for greater visibility, value, and impact.

Want to be the first to know when they go live? Email partnerships@association.drupal.org and we’ll make sure you're on the list.

Let’s Build What’s Next—Together

DrupalCon is more than just a conference—it’s the beating heart of our community. These changes help us keep that heart strong, inclusive, and accessible.

We can’t wait to see you in Chicago, 23-26 March 2026

DDEV Blog: DDEV July 2025 Newsletter

Image removed.

Welcome to the July 2025 DDEV Newsletter
This month: Downgrading Terminus for old PHP, FrankenPHP, Advisory Group meeting and Governance proposal, Shopware Storefront and Admin Watchers, Writing your first Drupal 10 Functional Test, and more.

What’s New

  • How to Downgrade Terminus in DDEV's Web Container and Customize Other Bundled Tools
    A guest blog by Bill Seremetis explaining the problem with an old PHP version and Pantheon's Terminus, and how to fix it. → Read more↗
  • Experimenting with FrankenPHP in DDEV
    Stas Zhuk explains two ways to use FrankenPHP in DDEV. → Read more↗
  • July 2025 DDEV Advisory Group Meeting meeting notes and recording! → Read more↗.

Community Tutorials

  • From DevOps Headaches to Seamless Onboarding: How Dropping Chocolatey Made DDEV the Perfect Fit for a Client's Drupal TeamRead more↗
  • Shopware Storefront and Admin Watchers with DDEVRead more↗
  • How to Write Your First Functional Test in Drupal 10Read more↗

Governance & Roadmap

  • Apache Foundation-inspired Project Management Committee Exploration
    See a proposed early update to the DDEV Foundation's Articles of Incorporation, aiming us at governance like the Backdrop CMS folks have → Details↗

Sponsorship Status

  • Monthly average income down slightly from $7,809 to $7,759 (65% of $12,000 goal). Every contribution helps sustain our work—thank you! → Become a sponsor↗

Stay in the loop—follow us and join the conversation

Drupal AI Initiative: AI Initiative marketing, June update

Our work began well before the formal announcement of the AI Initiative. Drupal Developer Days, in April, for example was a focused week of meetings, healthy debate, collaboration and consensus building which laid the foundations for the Initiative. 

Image removed.

Launching marketing efforts

Much has already been achieved in raising awareness of Drupal AI. Thanks to the efforts of James Abrahams, Marcus Johansson, Frederik Wouters and many others, there is already a strong body of material in place — including high-quality presentations, conference talks, and resources such as workflows-of-ai.com — all showcasing the capabilities of Drupal AI.

With the announcement of the Drupal AI Initiative, comes support from The Drupal Association, permission to create pages on Drupal.org in prominent locations, agency to scale marketing efforts. Part of the backing offered by the 6 founding companies of the AI initiative is resources to deliver marketing, both time and money. This is already starting to deliver tangible results.

A growing team

In the beginning the team consisted of Frederik Wouters (Drop Solid) and myself (1xINTERNET). Immediately following Drupal Dev Days we started creating content for the new landing pages, working with Dries on the announcement video, collaborating with designers at 1xINTERNET to produce supporting imagery. In parallel staff from all the initiative founding companies were preparing exhibition stands, printed materials and social media in preparation to exhibit at AI Summit London.

Image removed.

Webinar Series with The European Commission (EC)

In the meantime James Abrahams (Freely Give) and Dries were preparing for the launch of the Drupal AI webinar series in partnership with the EC. Following the resounding success of the Drupal@Europa Web Platform Hackathon, the European Commission agreed to host a webinar series which will be run by our team, the first recording of which is available to watch on YouTube. Be sure to register for the upcoming webinars in the series.

AI Summit London

Literally the day after the AI Initiative launch, we were heading for London to showcase Drupal AI at AI Summit, a leading business-focused conference on artificial intelligence, held annually as part of London Tech Week. Our exhibiting supports objectives of The Drupal Association to see Drupal's profile raised at major marketing and digital industry events globally.

Image removed.

Together with colleagues from Drop Solid, Freely Give, Amazee.io, 1xINTERNET, the Drupal Association and Acquia, we came together with a shared purpose to represent Drupal AI at this event. It brought together stakeholders from government, the public and cultural sectors, and enterprise, all exploring how AI can be meaningfully integrated into their organisations.

Image removed.

We took the opportunity to capture some interviews introducing the AI Initiative and to explain how the focus it brings will see momentum in Drupal taken to another level.

Image removed.

Drupal AI Ask Me Anything

Our aim is to run regular Webinars to help keep the community aware of our progress, educate and raise awareness amongst potential customers and end users of the potential of Drupal AI offers. This month we organised our first webinar, an AMA aimed towards Drupal community members. You can access a recording and read highlights here.

Image removed.

Join our weekly AI Marketing meetings

With the launch announcement completed, we have now established weekly meetings on Monday 17:00 BST to accommodate our growing and global team. We’d love to have you join us. If you would like an invite, please drop us a message on #ai-initiative-marketing Slack, which is our primary collaboration channel.

We are pleased to now have several active contributors to the marketing team including: 

You can get a sense of the work we have planned in the AI Initiative issue queue. These are particularly well suited to anyone seeking to make non code contributions including content creation, marketing strategy, media outreach, project management, community affairs. There is plenty to do, we are happy to mentor and onboard new contributors. Start your journey today!

Photos: Paul Johnson available on Flickr (AI Summit, Drupal Developer Days)

The Drop Times: The Letters That Changed Everything: How The DropTimes Discovered Its Voice Through Typography

We recently overhauled our typography at The DropTimes to better serve the Drupal community. By switching to IBM Plex for our content and Atkinson Hyperlegible for social media, we focused on readability, accessibility, and a stronger visual identity. This redesign reflects our mission to build a clearer, more inclusive experience—and to document that journey openly.

joshics.in: Upgrade from Drupal 10 to Drupal 11: A Step-by-Step Guide

Upgrade from Drupal 10 to Drupal 11: A Step-by-Step Guide bhavinhjoshi Mon, 07/07/2025 - 12:07

Upgrading your Drupal site from version 10 to 11 is a great way to keep your website secure, fast, and ready for the future. Drupal 11, released in August 2024, brings exciting features like improved performance, a modernized user interface, and updated APIs for seamless integration with modern technologies.

The transition from Drupal 10 to 11 is smoother than past major upgrades, thanks to Drupal’s semantic versioning. This guide walks you through the process with practical steps to ensure a seamless upgrade.


Follow our step-by-step guide to upgrade your Drupal site smoothly. Image removed.

Why Upgrade to Drupal 11?

Before diving into the steps, let’s explore why upgrading matters. Drupal 11 offers:

  • Enhanced Security: Stricter API access controls and automatic updates keep your site safer.
  • Better Performance: Optimized caching and faster database queries mean quicker page loads.
  • Modern Features: Updates like CKEditor 5’s autoformatting, Symfony 7, and single directory components (SDC) make content management and development easier.
  • Future-Proofing: Drupal 10 support ends in mid-2026, so upgrading now keeps you ahead.

Step 1: Prepare Your Site

Preparation is key to a smooth upgrade. Here’s what to do:

  • Back Up Everything: Save your codebase, database, and files using tools like Drush (drush sql-dump) or your hosting provider’s backup feature. Test the backup to ensure it’s restorable.
  • Update to Drupal 10.3+: Drupal 11 requires at least Drupal 10.3.0. Run composer update drupal/core-recommended --with-dependencies to update.
  • Check Hosting Requirements: Ensure PHP 8.3+, MySQL 8.0+, MariaDB 10.6+, or PostgreSQL 16+. Note that Microsoft IIS is not supported.
  • Audit Your Site: Remove unused modules, themes, or content to streamline the process.

Step 2: Check Module and Theme Compatibility

Drupal 11 removes deprecated modules and updates dependencies. Ensure compatibility with these steps:

  • Install Upgrade Status Module: Use composer require drupal/upgrade_status and run drush upgrade_status:analyze. Check the report at Admin > Reports > Upgrade Status.
  • Update Contributed Modules: Run composer update and verify module compatibility on Drupal.org.
  • Review Custom Code: Use Drupal Rector (composer require --dev palantirnet/drupal-rector) to fix deprecated code.
  • Handle Removed Modules: Install contributed versions of removed core modules (e.g., Statistics) to preserve functionality.

Step 3: Set Up a Staging Environment

Never upgrade on a live site. Create a staging environment:

  • Clone Your Site: Copy your codebase and database to a separate server or local environment.
  • Test Functionality: Ensure all features work as expected before proceeding.

Step 4: Perform the Upgrade

With your site prepped, follow these steps:

  1. Grant Write Permissions:
     

    chmod 777 web/sites/default chmod 666 web/sites/default/*settings.php chmod 666 web/sites/default/*services.yml
  2. Update Core with Composer:
     

    composer require 'drupal/core-recommended:^11' 'drupal/core-composer-scaffold:^11' 'drupal/core-project-message:^11' --no-update composer require 'drush/drush:^13' --no-update composer update
  3. Run Database Updates:
     

    drush updb -y drush cr -y
  4. Export Configuration:
     

    drush cex -y
  5. Revert File Permissions:
     

    chmod 755 web/sites/default chmod 644 web/sites/default/*settings.php chmod 644 web/sites/default/*services.yml

Step 5: Test Thoroughly

Test your site in the staging environment:

  • Check key functionalities (forms, views, content types).
  • Verify custom and contributed modules.
  • Test across browsers and devices.
  • Review the status report (Admin > Reports > Status) for errors.

Step 6: Deploy to Production

Once tested, deploy to production:

  • Back up your production site.
  • Deploy the updated codebase and database.
  • Run drush updb -y and drush cr -y.
  • Monitor for issues.

Troubleshooting Tips

  • Composer Errors: Use composer why-not drupal/core 11.0.0 to identify dependency issues.
  • Missing Modules: Install contributed versions of removed core modules.
  • Custom Code Issues: Check module issue queues or Drupal forums for manual fixes.
  • Performance Hiccups: Optimize caching settings post-upgrade.

Final Thoughts

Upgrading from Drupal 10 to 11 is manageable with careful planning. By updating to Drupal 10.3+, auditing modules, fixing code, and testing thoroughly, you’ll minimize risks. The result? A faster, more secure site ready for Drupal 11’s modern features.

Need more tips on securing your Drupal site? Explore our security guide to keep your site safe post-upgrade.

Have questions or tips about Drupal upgrades? Share them in the comments below!

Drupal 11 Drupal Planet Upgrade

Share this

Copied to clipboard

Add new comment