Skip to main content

Tales of… a test drive with obstacles

A Recipe for Slightly Raised Eyebrows

I finally tested Drupal’s new recipes. It did not go as smoothly as some sessions had suggested.

TLDR: As the goal of recipes is to make life with Drupal easier, the documentation could use a few additions to prevent some misunderstandings. Or to clarify stuff that works in sessions but not right out of the box.

 

So, I have seen a few sessions about Drupal CMS – and a few sessions about recipes. I wanted to check out the current state after the CMS Launch in January. And after I watched some new sessions at Drupal Dev Days 2025 in Leuven, I finally took the time to actually do it.

Especially after seeing this session about recipes and events: Recipes. It’s about time! by Martin Anderson-Clutz (mandclu). Cause we need a new website for the DrupalCamp Ruhr in September. And those event management features look very useful.

My plan was to install Drupal CMS, and add some recipes for events. This seems to be a matter of a few minutes. But since I wrote this blog post, you may anticipate that I encountered a few hiccups.

I went through my progress again on Saturday. The next paragraphs describe the current state in May 2025. Right now, Drupal CMS and recipes are moving pretty fast. So if you read this in a few weeks, I am pretty sure it will run much smoother.

Installing Drupal CMS

If you are not a developer, you can use the Drupal Launcher to test Drupal CMS very easily. I have a working DDEV environment, so I just installed Drupal CMS this way (here: version 1.1.1). If you have ever worked with DDEV, this is straightforward.

Screenshot: Install screen for Drupal CMS

Well, hello Drupal. Looks like someone got fancy new clothes.

The CMS install screen is a welcome improvement over the usual screen. Modern and nice. Anyway, I just clicked on Events and put in some basic information. This part feels very much like the old 5-minutes-installation of WordPress (don’t know how that works nowadays). And the fact that we got this in just eight months is beyond astonishing.

I arrive at my Dashboard, filled with some test content and my top tasks on the right. Events are preconfigured with reasonable fields. Really, I’ve got nothing to complain about here.

Screenshot: The Dashboard in Drupal CMS

After login users now land on a dashboard by default, instead of the boring old user page.

Screenshot: Editing an event in Drupal CMS

Events come with fields like date, location, and featured image.

It is really cool to get all this with minimal effort / out of the box. Now let’s follow the session and add some features.

Let’s start cooking

The talk started with Drupal CMS (starts at 4:48), but then switched to a fresh Drupal 11 installation (starts at 7:14). To demonstrate the event management, some recipes were added to Drupal 11 Core:

ddev drush recipe ../recipes/events
ddev drush recipe ../recipes/events_recurring
ddev drush recipe ../recipes/events_calendar
ddev drush recipe ../recipes/events_registration
ddev drush recipe ../recipes/events_locations

Recipes should work with Drupal CMS, so I thought I would just add the recipes I wanted to test. Since I installed Drupal CMS with Events, and did not want recurring events, I started with:

ddev drush recipe ../recipes/events_calendar

Big surprise. For me anyway. This did not work. Computer says:

[ERROR] The supplied path ../recipes/events_calendar is not a directory
Failed to run drush recipe ../recipes/events_calendar: exit status 1

This was slightly irritating. Because in the session this worked right out of the box. Or so it seemed. And when you look at Drupal’s documentation about Recipes you get similar commands:

php core/scripts/drupal recipe ../recipes/[recipe-name] -v
or
drush recipe ../recipes/[recipe-name] -v

Misunderstanding: I thought those recipes work like composer require. As in: Drush checks which recipe I want and loads this from some server. That’s how it works with modules. Translations are also fetched automatically. But for some reason it does not work this way with recipes.

Where’s my recipe tab?

Why would I think it might work this way? Well, look at this session for example:

This session features a recipe section within Drupal CMS (starts around 9:00).

This demo shows a recipes section within Drupal CMS. You can browse recipes, which are then downloaded and installed on your site. So I assumed Drush could do the same.

By the way, so far I do not know why my Drupal CMS does not show the tab. A mystery for another day.

Screenshot: My installation of Drupal CMS misses the recipes tab

My Drupal CMS Extends page misses the recipes tab.

Local recipes

But yes, I had wondered about the ../ part in the Drush command. And because of the error message I found out that the Drupal CMS comes with a /recipes folder that contains all the recipes Drupal CMS needs. So I looked for the recipe for Events Calendar online, downloaded it, and put it in the /recipes folder.

Now that I had the recipe I tried again:

ddev drush recipe ../recipes/events_calendar

And got:

Validation errors were found in ../recipes/events_calendar/recipe.yml:  
 - [recipes][0]: The events recipe does not exist.
 - [install][0]: "fullcalendar" is not a known module or theme.

Misunderstanding: Well, this is similar to the first one. I thought a recipe would know about its dependencies and just download other recipes it needed. Ok, that’s not how it works. Got it.

So, I added the Events recipe as well. And tried again.

ddev drush recipe ../recipes/events

This part works. So let’s add:

ddev drush recipe ../recipes/events_calendar

I am pretty sure this worked two weeks ago. Now I get:

Validation errors were found in ../recipes/events_calendar/recipe.yml:  
 - [install][0]: "fullcalendar" is not a known module or theme.

Fine. Let’s add the module as well:

composer require drupal/fullcalendar

And try again:

ddev drush recipe ../recipes/events_calendar

Now the events_calendar recipe was finally applied. This adds a calendar under /events/calendar. What it does not add is the existing example event to the calendar page.

This is because the example event has filled in the field field_event__date, while the calendar view uses the new field field_when, which is hidden in the form display. It seems some recipes are not coordinated at the moment as we do not need two date fields. As soon as you make field_when visible in the edit form, and provide a date, you can see the event in the calendar.

Screenshot: A calendar showing an event in Drupal CMS

It took surprisingly long to get to this point.

Conclusion & suggestions

Well, compared to other errors and bugs I get in a month, my problems with these recipes are just minor hiccups. I could easily solve all my problems. But for people who are new to Drupal or even less comfortable in the command line, this won’t be a smooth experience.

As I said before, Drupal CMS and Drupal Recipes are developing really fast. So I am not worried. In a few weeks, this will be a better experience. For the moment, I have a few suggestions:

  • This is the first page I find when I google Drupal Recipes: Drupal Recipes
    This page could use some further information, like Recipes need to be downloaded to the local recipes folder. Recipes might require other recipes to be downloaded. Is there a difference between Drupal Core and Drupal CMS when running recipes? What is the plan for the missing recipe tab in Drupal CMS?
    Of course, depending on how fast things are changing, this might be be difficult to keep up-to-date.
  • Maybe add another hint in the Drush error message, telling users to download the recipe?
  • By the way, why is everything bundled under drupal.org/project? Wouldn’t it be better to differentiate things with /module, /theme and /recipe?

In my case, I just ended up with a fresh installation of Drupal 11 and the whole Event Platform. This is a much better starting point for the new DrupalCamp Ruhr website.

On another note: I am not a fan of using AI for everything. But here I asked ChatGPT for alternate titles for »A Recipe for mild irritations«. And ChatGPT delivered a better title. I could have also gone with: »A Recipe for Microscopic Mayhem«.

Cover image: Young man put out fire in kitchen by welovegraphicss / Freepik

Write a comment

House rules: Comments are moderated. The E-Mail will not be shown publicly, but in rare cases I might respond to a comment via mail. If your website points to a shop or shady website, I will not show the link.

The content of this field is kept private and will not be shown publicly.

Curiosity Clicker:
The message in the bottle
was clicked 0 times.