Why We’re Exploring the “Recipes” Feature in Drupal 10
Drupal 10 is a versatile content management system that offers an extensive range of open-source modules and settings for ambitious site builders. Its flexibility enables a lot of customizations to your Drupal website, making it an attractive option for many organizations. However, its flexibility is sometimes a double-edged sword, causing initial development to slow down, inconsistencies to arise between projects, and maintenance to become more challenging.
To address these issues, Drupal introduced the concept of Distributions — a method to package a complete configuration and provide a repeatable site deployment that contains all the necessary modules and features for a specific project. While Distributions can be beneficial, they can also be monolithic and quickly become unmanageable. Once installed, your website project cannot detach itself from the Distribution, and all necessary module and feature updates become directly tied to it. This lack of flexibility can limit your site's ability to evolve and adapt over time.
Drupal 10 introduces a feature called Recipes that offers site builders a more manageable, flexible, and extendable way to create pre-composed website installations. Recipes are a new way to package and distribute Drupal sites that enable you to create and share site configurations as a collection of individual components, rather than as a single monolithic distribution.
Site builders can install Recipes at any time during a website's lifecycle. This means that you can create a website by using the installation of several Recipes, each with its own purpose, modules, and feature set. For example, you might start with a base installation Recipe that includes the core Drupal modules and basic configuration, then add more Recipes that provide specific functionality, such as author experience features or content types.
Recipes are also modular, which means you can easily extend or customize them to fit specific needs. You can create your own Recipes by combining different modules and configurations or by modifying existing Recipes. This modular approach to site building can help you create more flexible and adaptable websites that evolve and grow over time.
Our Exploring the New "Recipes" Feature in Drupal 10 post provides excellent insight into how Recipes are constructed and applied.
Accelerating Your Site Build
One of the primary reasons why site builders turned to Distributions was to speed up the process of building a new Drupal website. The Drupal "core" provides the foundation, but you need to apply a combination of modules, features, and custom code to create the required functionality and authoring experience for your site. Installing and configuring these essential features can take hours, regardless of your project's specific requirements.
To address this issue, we’re developing Recipes, starting with a "base recipe" that includes everything we consider essential for any Drupal website we build. This Recipe includes modules such as Pathauto for generating friendly URLs, Field Groups for improving content entry UX, and Menu Block for adding and managing navigation menus.
By using our "base Recipe," you can now install, configure, and deploy essential modules and configurations in seconds, which previously took hours for each site build. This significant time savings allows you to focus on applying project-specific functionality, resulting in better budget allocation and faster time-to-market.
Creating Consistency and Leveraging
When starting a project with only Drupal core, it's easy to fall into the trap of experimenting with different combinations of modules and configurations in search of a "new way" to accomplish a task. With the multitude of community-contributed modules available, there are many ways to achieve the same result.
But, just because something can be done another way doesn't mean it's the best approach. Drupal Recipes provide allow you to establish best practices for building out features and functionality, ensuring consistency from project to project.
One example of a Recipe we’re developing is specifically for the installation and configuration of Layout Builder. While Layout Builder provides content authors with a flexible WYSIWYG page authoring experience, it requires proper configuration and companion modules to achieve the best authoring experience.
By establishing best practices and incorporating them into our Recipe, we ensure that any website we build that includes Layout Builder is created with the best possible authoring experience. This approach not only saves time but also results in more consistent, reliable, and higher-quality website builds.
Creating Sites That are Agile and Composable
Drupal Distributions suffer from being monolithic, making it difficult to separate them from individual projects. Also, modules and functionality are heavily dependent on the Distribution for updates, and any added functionality can result in conflicts whenever the Distribution is updated.
However, Recipes provide a different approach. Once a Recipe is applied, it no longer depends on it for future updates. This means that a Recipe can evolve over time as you move from site to site, without negatively impacting previous sites. This approach enables you to develop best practices and configure feature sets more efficiently.
The composable nature of Drupal is retained through the ability to install Recipes at any point in a project's lifecycle and have them install other Recipes. This flexibility allows solutions to pivot and adapt to your changing needs, without requiring a complete overhaul of your site's construction.
The separation of Recipes also means that unnecessary modules and features are not installed, resulting in a lightweight project. Recipes can be categorized based on their designated Recipe Type, which can help to keep projects and installations well-organized. Examples of Recipe Types could include Base, Layout Builder, Content Type, Workflow, Extended Security, and SEO.
For more on the Distributions and Recipes initiative, you can check out the following resources:
- Distributions and Recipes Initiative page on Drupal.org
- Recipe docs on GitLab
- Makers and Builders – Distributions and Recipes talk from Drupalcon Prague
Meet Me at Drupalcon 2023
If you’re attending Drupalcon 2023 in Pittsburgh, PA this June, come see me at the Velir booth. And if you have any questions about Recipes in the meantime, please feel free to contact us.