Skip to content

DDEV Playlist Standard (Bluefly)

Intent

Playlists are curated, version-pinned compositions of DDEV add-ons. They are not feature packs and not runtimes.

Project types

Every Drupal DDEV project declares exactly one type:

Type Use
drupal-site Full application (e.g. ContextControl.ai)
drupal-distribution Product / CMS distribution
drupal-contrib Single contrib module repository
drupal-theme Theme repository
drupal-profile Install profile repository

Do not treat “Drupal” as one playlist. Wrong type + wrong add-on caused the ddev-drupal-contrib full-site failure mode.

Playlist Admission Rule

Every add-on in a Bluefly playlist must declare (in docs and, for Bluefly add-ons, in bluefly.addon.yaml):

supports:
  - drupal-site
  # ...
conflicts:
  - drupal-site   # example: ddev-drupal-contrib

Refuse install when:

  1. Project type ∉ supports, or
  2. Project type ∈ conflicts.

Operators and future playlist tooling enforce this before ddev add-on get.

Required playlists

Playlist Default project type Notes
core-drupal-site drupal-site ContextControl reference
core-drupal-contrib drupal-contrib Mutually exclusive with site core
drupal-ai any supported Composed onto a core playlist

Opt-in: testing, search, performance, enterprise, and future named lists (government, accessibility, bluefly) — same admission rule.

Activation

  • Reference full site installs only core-drupal-site + drupal-ai.
  • Installing all playlists at once violates the minimal standard.
  • Pin with ddev add-on get <repo> --version <tag>.

Capability

Capability Reference Provider Deployment Provider
Developer Distribution DDEV Bluefly DDEV Distribution (playlists + thin adapters)

Composition source of truth for operators: Applications/__DRUPAL/DDev-Addons/ (add-on repos) + BluCity-Docs architecture/Ddev/. A dedicated bluefly-ddev-distribution composition repo may be created later; it must contain no runtime, no containers, no Claude/OpenCode install — only playlists, templates, examples, docs, tests.