Distributions and Recipes initiative overview and roadmap

Created on 13 April 2022, about 2 years ago
Updated 11 June 2024, 13 days ago

This idea has graduated to a strategic initiative after Dries approved this as a strategic initiative during the Driesnote at DrupalCon Portland. This page is now archived in favor of the official initiative documentation β†’ .

Historical Information

Background

The Distribution Modernization Initiative is a community effort modernize how distributions in Drupal work, as well as update how they are discovered and delivered by Drupal.org.

Distributions have been proposed as key Drupal feature since Dries blogged in 2006 about better support arriving in Drupal 5. Drupal 8's configuration management system has underpinned some improvements for Distributions and there are a few successful distributions such as Open Social, Varbase β†’ , Contenta β†’ , Thunder β†’ , and LocalGov β†’ .

Problem

Distributions are difficult:

  • They are hard to discover before you install Drupal
  • Once you've chosen to start with a distribution, switching the profile is hard
  • Distributions are awkward on Drupal.org
  • Distributions are hard to maintain over several Drupal release cycles
  • Sites built on distributions can be hard to update - for example Panopoly β†’ (a very popular D7 distribution) still does not have a stable D8 or 9 release.

Proposed resolution

We intend to implement:

  • A new concept: Drupal Recipes. Drupal recipes allow the automation of Drupal module install and configuration via the user interface and via the Drupal recipe composer plugin.
  • An improved concept: Composer project templates. Add new abilities to composer create-project for Drupal distributions to leverage in order to completely replace some of the special functionality of install profiles / starter kits / distributions.

More documentation about the initiative can be found at: https://git.drupalcode.org/project/distributions_recipes

We aim to:

Improve discovery

When you install Drupal for the first time you are presented with Standard, Minimal or the Umami Demo to install. We want to explore using the Project Browser β†’ to allow a user to select a Drupal recipe whilst installing.

Allow multiple Drupal recipes to be used on the same project

If you choose a distribution, for example, OpenSocial, you cannot also install another distribution like Commerce Kickstart or Thunder to easily add e-commerce or professional publishing tools to your site. You're locked in. Multiple Drupal recipes can be installed on the same site.

Install a recipe at anytime in a project’s life-cycle

Similarly, if after a few years of running your site built on standard Drupal you cannot use OpenSocial to add community collaboration tools to your site. We want to remove the barriers to do this.

Make it easier to maintain 100s of sites that have a common starting point

One use-case that distributions satisfy is to provide a way to start and maintain 100s of micro-sites. This is particularly common within the education sector. We want to make this easier and also ensure that any of the other changes don't make this harder.

Easier updates

One of the pain points maintaining distributions is providing updates to sites that are already using your distribution. Working out how to add new functionality to existing sites is hard because every existing site is in a different state. A few distributions are working together on the Update Helper module β†’ and we're looking to bring this functionality to core.

Better support on drupal.org and via composer

Drupal.org support for distributions has been improved to identify distributions correctly and will support pushing distributions to packagist so they can be used as composer project templates.

Enable Drupal recipes to ship demo content

Many distributions provide example content as a way of introducing their functionality. At the moment distributions are doing this in many different ways, importing from CSV or using the Default content module. It's often complete something custom. We want to provide functionality in core and make it easy for a Drupal recipe to provide example content.

Process and where to find it

We meet fortnightly on Tuesday at 16:00 UTC in the #distributions-and-recipes channel in Drupal Slack.

  • 03:00 Tuesday - Australian Eastern Time (AET)
  • 21:30 Tuesday - India Standard Time (IST)
  • 17:00 Tuesday - Central European Time (CET)
  • 9:00 am Tuesday - Pacific Time (PT)
  • When in doubt, ask the oracle.

Proposal roadmap

Drupal recipes: https://git.drupalcode.org/project/distributions_recipes/-/blob/1.0.x/do...
Composer project templates: https://git.drupalcode.org/project/distributions_recipes/-/blob/1.0.x/do...

Not in scope

Related work

Existing core features

  • Installation system
  • Update system
  • Current distribution & install profile functionality

Open core issues

#3252534: [Plan] Distribution support on drupal.org and packages.drupal.org β†’
#3265281: Use composer templates for starter kits instead of install profiles β†’
#3264926: Split distribution functionality into a composer template and a module β†’
#1497268: Add revert functionality to Config entities β†’
#2114713: Enable installation of distribution (install profile) at install time and provide curated list of available distros β†’

Contributed projects

TBD - Not sure.

Team and resources

@todo: Does this need to be more specific than the following list?

  • Members of the Drupal Core committer team
  • People from the DA Engineering Team
  • Maintainers of Distributions
  • Other interested community members
  • ...

Signoffs

Dries signed off on the initiative as it was presented during the DriesNote at DrupalCon Portland.

🌱 Plan
Status

Fixed

Component

Active Initiative

Created by

πŸ‡¬πŸ‡§United Kingdom alexpott πŸ‡ͺπŸ‡ΊπŸŒ

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

Production build 0.69.0 2024