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.