Feed aggregator

DrupalEasy: Reclaim Docker disk space when using DDEV

Drupal Planet -

If you've been using DDEV for a while (like me!) then you've probably run into the issue of your Docker disk space allocation getting full. I use Rancher Desktop and more than a few times I've received warnings that more than 95% of the 100GB I have allocated is full. Being a bit naive, I normally react by backing up a few projects I'm not regularly using and then doing a ddev delete on them. The most recent time, however, I decided to take a different approach. At the time, I didn't think I had all that many active DDEV projects (relative to my normal situation) so I did a little digging and learned that Mutagen (included by default with DDEV) cache files can take up quite a bit of space. So, instead of using ddev delete on a bunch of projects, I used: ddev mutagen reset on four of my most recently used projects and the issue went away without me having to delete any of my DDEV projects. In a conversation with Randy Fay, one of the maintainers of the DDEV project, he mentioned that he

Liip: A scalable Event Management System for the Museum für Gestaltung

Drupal Planet -

At Liip, we often work with clients who have complex content management needs. One recent project was the new website for the Museum für Gestaltung in Zurich, the leading Swiss design museum with a diverse and active public program. A key requirement was a flexible event management system that could support a wide range of event types.

Understanding the requirements

In addition to its permanent and temporary exhibitions, the museum hosts a broad spectrum of events: from guided tours and school visits to multi-day workshops and the occasional concert or film screening.

These events take place at three different locations and cater to different audiences: individual visitors, families, friend groups, and school classes. Some events are free, while others require paid registration. Many are offered in multiple languages.

Managing this complexity required a system that could support:

  • Recurring events with complex schedules
  • Variable durations (from 2-hour visits to multi-day workshops)
  • Multiple locations
  • Audience segmentation and targeting
  • Participant limits (minimum and maximum)
  • Automated visitor communication (e.g., reminders)

In short, the museum required more than just a simple event list and a calendar.

Evaluating Drupal solutions

With Drupal, the motto is “there’s a module for that.” With over 53,000 contributed modules available, it was natural to begin our search there.
After evaluating several options, we identified the Recurring Events module as the most promising starting point.

Why Recurring Events?

Pros:

  • It is the most comprehensive module for managing events in Drupal.
  • It provides strong functionality out of the box, in some areas even exceeding our requirements.

Cons:

  • Not all the museum’s requirements were covered.
  • Some existing features didn’t align with the museum’s use cases and would need to be modified.
Identifying feature gaps

The Recurring Events module met many of our needs, but not all of them. This is a common challenge in software development: existing solutions often get you most of the way there, but rarely tick every box.

Here are some key features required by the Museum für Gestaltung that were not available at the time:

Multilingual support

In addition to the three national languages of Switzerland, the museum regularly offers events in English for international visitors. Full multilingual handling for event content and registration workflows is essential.

Group registrations

Most visits occur in groups, ranging from families and friend circles to school classes and tour groups. The system needed to support registering entire groups at once. If an event does not have sufficient remaining capacity to accommodate the whole group, the group should be put on a waitlist.

Default capacity per event type

Some event types (such as guided tours) recur frequently and always have the same fixed capacity. Setting a default value per event type would streamline content entry and reduce the risk of manual errors.

Locked event dates

In our use case, once an event is published and publicly visible, its dates must not be changed. However, at the time, the Recurring Events module allowed dates to be changed or deleted at any time. To avoid confusion and dissatisfaction with visitors, the dates should be locked once published online.

Tailored email communication by registrant type

Depending on whether the visitor is a private group or a school class, different teams are responsible for managing the event, and different email templates need to be used.

Deciding the right approach

The question now becomes whether to extend what’s available or build a custom solution from scratch. Let’s look at the options:

Option 1: Build a custom solution

This would give us complete control and flexibility.

Pros:

  • Tailored exactly to the museum’s requirements without any compromises.

Cons:

  • High upfront development cost.
  • Reinventing features already available in existing modules.
Option 2: Fork the Recurring Events module

This is a pragmatic approach, especially in the short term, but it is difficult to maintain in the long term.

Pros:

  • We adapt the module to meet all specific needs. Remove what we don’t need, change what is necessary.
  • The fastest to implement during initial development.

Cons:

  • Long-term maintenance burden: we’d need to track and integrate upstream changes continuously for the whole duration of the project.
  • High risk that future changes to the module will collide with our own.
  • Our improvements wouldn’t benefit the community, nor receive community improvements in return.
Option 3: Override the module with custom code

Use the module as is, and build the missing functionality alongside it using Drupal's APIs, which are designed to adapt existing features to a project’s specific needs.

Pros:

  • We can make use of the existing features of the module.
  • Clean separation between contributed code and project-specific logic.

Cons:

  • Still requires ongoing maintenance of our custom code.
  • A smaller risk of conflicts if the module’s feature set evolves over time.
  • Our planned additions might be useful for other users of the module, but they wouldn’t be contributed back.
Option 4: Contribute to the Recurring Events module

Work collaboratively with the module maintainers to integrate new features directly into the module.

Pros:

  • Aligns with Drupal’s open-source philosophy.
  • Ensures long-term compatibility and community support.
  • Features are reviewed and improved by other experienced developers.
  • Reduces maintenance effort for our team in the long run.

Cons:

  • Contributions must meet high standards for code quality and documentation.
  • Contributions need to be reviewed and tested by the community. It is possible that contributions are rejected or take a long time to be reviewed.
  • Requires additional communication and coordination during development.
A collaborative success

We chose Option 4: to work closely with the maintainers of the Recurring Events module and contribute the features that were missing for our use case. Over the course of several months, we actively collaborated through the issue queue, contributed code, and reviewed patches. This effort led to one of our developers being onboarded as a co-maintainer of the module.

The result was a success. We were able to deliver a powerful, flexible event management system that met the museum’s needs. It is built entirely on open source principles. Several of our contributions are included in the latest releases of the module, and additional improvements are still in progress.

At Liip, we strongly believe in strengthening the tools we use, not just for us and our clients, but for the entire Drupal open source community. If you're interested in improving event management in Drupal, we invite you to join the conversation and collaborate with us in the Recurring Events issue queue.

Talking Drupal: Talking Drupal #518 - Drupal Canvas

Drupal Planet -

Today we are talking about Drupal Canvas, What it is, and when we can use it with guest Lauri Timmanee. We’ll also cover Starshot Demo Design System as our module of the week.

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

Topics
  • What is Drupal Canvas
  • The Evolution and Future of Drupal Canvas
  • Building with Drupal Canvas: Components and Templates
  • User Experience and Flexibility in Drupal Canvas
  • Collaboration and Extensibility in Drupal Canvas
  • Default Components in Drupal Canvas
  • Introduction to Modular Components
  • Drupal CMS and Site Templates
  • Acquia Source and Drupal Canvas Integration
  • Pricing and Use Cases for Acquia Source
  • Canvas Beta and Stability
  • Migration and Upgrade Paths
  • AI Integration in Drupal Canvas
  • Future of Drupal Canvas
Resources Guests

Lauri Timmanee - lauriii

Hosts

Nic Laflin - nLighteneddevelopment.com nicxvan John Picozzi - epam.com johnpicozzi

MOTW Correspondent

Martin Anderson-Clutz - mandclu.com mandclu

  • Brief description:
    • Have you ever wanted to try out Canvas (previously known as Experience Builder) with a fully built-out design system? There’s a Drupal theme for that.
  • Module name/project name:
  • Brief history
    • How old: created in July 2024 by longtime Drupalist Kristen Pol of Salsa Digital
    • Versions available: 1.0.6, which supports Drupal 10 and 11
  • Maintainership
    • Actively maintained
    • Security coverage
    • Test coverage
    • Documentation - Multipage writeup of SDDS, including contribution and development guides
  • Number of open issues: 34 open issues, 3 of which are active bugs
  • Usage stats:
    • 79 sites
  • Module features and usage
    • Some of our users may have already tried out the pre-release demo of Canvas that phenaproxima posted on Github. That actually has the Starshot Demo Design System, or SDDS, baked in. So, even if you watched a demo video of Canvas, you’ve probably seen SDDS in action
    • SDDS is itself built on CivicTheme, a Drupal theme built to act as a component-based atomic design system. As such, CivicTheme includes a rich component library, built from published Figma and Storybook UI Kits. And because some of the early builds for SDDS were for GovCMS, the Australian whole-of-government CMS project, it is accessible, with WCAG 2.2 compliance out-of-the-box
    • While the official purpose of SDDS is providing a platform to use for demos in Driesnotes and other presentations to illustrate the progress being made on Canvas, I think it’s also safe to say that testing the latest features of Canvas with a fully-realized design system has also helped to identify issues in Canvas itself. That means the products of all the work that has gone into SDDS will include a more production-ready stable release when that gets tagged (hopefully in time for Vienna)

The Drop Times: Forked in Plain Sight

Drupal Planet -

Social media plays a crucial role in disseminating information, although it is also accompanied by noise. Platforms like LinkedIn, Mastodon, and Bluesky influence how projects, such as Drupal, are initially discovered, discussed, and evaluated. The Drupal Association’s decision to scale back on Twitter/X while investing in decentralised and professional networks is not a side strategy; it signals that visibility is as critical to sustainability as code. Perception sets the pace for participation.

This alignment, however, exposes a larger challenge: being visible is not the same as being understood. Drupal’s strength has always been its flexibility, but that complexity is difficult to translate into shareable stories. Without clear demonstrations of use cases, governance processes, and long-term sustainability, transparency risks becoming noise. An open project must do more than publish updates; it must demonstrate how those updates have a practical impact. For Drupal, the question is whether its social presence can reflect not only technical progress but also the health and inclusiveness of its community.

Meanwhile, the structural hurdles are significant. The end of life for Drupal 7 has left many nonprofits and smaller organisations facing urgent migration decisions. The platform’s steep learning curve continues to limit entry for new developers and site builders. And upgrade complexity remains a friction point that undermines confidence even among seasoned teams. These are not legacy problems; they are active barriers to adoption. Social platforms cannot solve them, but they can amplify them, surfacing real experiences, connecting peers, and applying pressure for solutions.

INTERVIEWDISCOVER DRUPALEVENTSORGANIZATION NEWSTutorial

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, Bluesky, and Facebook. You can also join us on Drupal Slack at #thedroptimes.

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

Drupal AI Initiative: Drupal AI development progress week 35

Drupal Planet -

We will try to give back information about what is happening on the technical side, so people can stay up to date with improvements happening in the Drupal AI space from a developers perspective.

I was recently myself away on vacation for some weeks, and realized just how quickly everything is moving, both in the AI space and the Drupal AI space when you are not actively following it. The Drupal AI Initiative and its people contributing to it, outside of FreelyGive, have started its own momentum.

So this is a way to get a bi-weekly update on what is happening outside of releases, to be able to test things happening on the dev branches of different projects.

Tool API is released

The first alpha release of Tool API happened in the past week. The idea behind the Tool API is to create one uniformed API for any type of tool with clear input and output schemas. These will be able to be used both as function calling tools for AI, for tools for MCP, but also in the future derive actions for powerful automation tools like ECA. 

In practice it means that you can define a tool once and use it in multiple systems, including as a function call for AI. The idea with this is that you should be able to create reusable tools for manipulating entities, using views as context, getting information about the Drupal system etc. simply in the GUI and be shipped as configuration. 

This together with the functionality to create completely custom function calls in the UI using ECA, opens up for shipping a lot of agents as configuration without other module dependencies.

Tool API is being released as its own module, since the possibilities of how to use this is something that is outside of the scope of just the AI module.

Going forward with the MCP Client, we will most likely use Tool API as well as the foundation to make sure that any tool from a MCP server you want to create a version of inside Drupal.

A huge thanks to Michael Lander who has been working tirelessly on this project and for all the expertise he has been giving back to the AI project in general.

A video of the tool api in action creating Drupal content that with Claude Desktop and MCP using natural language can be found here.

Image-To-Image operation type is merged

One year ago when the initial Image to image operation type was thought of, it was a fairly “useless” AI inference type. The problem was that the AI models could not keep consistency, meaning that at best you could use it for some nice demoing purposes, most of which made little sense to use in a Drupal context.

This has somewhat since changed, with Dreamstudio offering things like removing backgrounds, outpainting of images to fit specific ratios etc. and OpenAI GPT-1-Image making it possible to generate images in a style of another image. This was what it was initially meant for.

However, since the issue was put “in review” and it has now been merged, Nano Banana was released and is a complete game changer in this field. It lets you edit images in natural language with very good consistency and gives a future image of what is to come.

We just need to add that to a provider now and we will have a way for a chatbot or another prompting interface to change images directly inside Drupal using natural language.

Use Tavily in your agents to do web searches and research

The Tavily module got another release - 2.0.0-rc3. Tavily is a service specifically designed for connecting your agent to the web.

The main feature of this release is a function call that you can use in your agent to do web searches to get either full html scraped webpages or markdown versions of the websites it finds.

This means that you can have an agent summarizing some topic for you or fact checking something for you.

See more here: https://www.drupal.org/project/tavily

Support for Fibers

Currently the AI module is treating any provider synchronously. This means that if you ask for instance OpenAI four different things that are not dependent on each other, we at the moment run the first one, start the second one when the first one is done and so on.

This change makes sure that we can utilize Fibers in PHP and run this asynchronously, so the process only becomes as slow as the slowest of the four calls in this case.

Currently we have no real case usage of this, but future jobs like for instance AI Translate, where each field translation is independent of the other, could work in parallel to translate a lot faster.

See: https://www.drupal.org/project/ai/issues/3538027

Removing code reiteration and reusing provider standards

A lot of providers today are using a standard that OpenAI created for its messaging API platforms. This means that a lot of providers can actually reuse a lot of code that we initially set up for the OpenAI provider.

The problem is that you do not want to make a provider dependent on the OpenAI provider, just because you want to inherit functionality from it.

Because of this we have opted to create a base class for OpenAI based providers, outside of the normal base class.

You can see the base class here.

We have already started removing huge chunks of code that was just duplication of code found in other providers.

Other smaller but noticeable fixes:

Stay tuned for further bi-weekly Drupal AI development progress. Visit the Drupal AI Initiative home for ways to connect and get involved.

Bounteous.com: The Evolution of Drupal: Discover the Features D7 Users Are Missing Out On

Drupal Planet -

Organizations still using Drupal 7 are missing out on the flexibility, customization options, scalability, and marketing capabilities available in the newer versions. Drupal 10 allows for the management of consistent and engaging digital experiences across various channels, enhances search engine optimization, and enables web teams to deliver content more efficiently.

Pages

Subscribe to www.hazelbecker.com aggregator