DrupalCon 2025
Below are my notes from DrupalCon sessions. These notes are for my own consumption and review. I have no intention to fill in the gaps, clarify jargon, or to create a narrative from these sessions notes. If these notes are useful to you, “you’re welcome 😀”.

Drupal CMS
- CMS 2.0 anticipated in October 2025
- Anticipated release of Experience Builder (XB) 1.0
- Workspaces Module
- Workspaces is required to use Experience Builder because multiple entities can be edited at one time.
- Workspaces replaces Content Moderation, which allows update of only one entity at a time
- Mission statement for CMS: “gold standard for no-code website building”
- Focusing on mid-market segment $20-$100k, marketing professionals
- New design system
- Why CMS? Standardizing the way things are done, so they are repeatable
- Recipes
- Cookbook: https://www.drupal.org/recipes/cookbook
- API & Developer Documentation: https://www.drupal.org/project/distributions_recipes
- Applied to Drupal sites, not installed
- recipe.yml structure
name: 'Event' type: 'Content type' recipes: event_manager install: datetime_range node config: actions: user.role.event_manager: grantPermissions: 'delete any event content' 'edit any event content'
- Recipes
- CMS Documentation: https://new.drupal.org/docs/drupal-cms
- CMS Issue Tracker: https://www.drupal.org/project/cms
DriesNote
Keynote presentation from Dries Buytaert
Workspaces
The Workspaces module is required for Experience Builder. Workspaces in moving into drop-in replacement for Content Moderation.


Install Drupal CMS with SQLlite
composer create-project drupal/cms
Here’s what comes with CMS 1.1 out-of-the-box
Package operations: 231 installs, 0 updates, 0 removals
asm89/stack-cors (v2.2.0)
carbonphp/carbon-doctrine-types (3.2.0)
chi-teck/drupal-code-generator (4.1.0)
clue/stream-filter (v1.7.0)
commerceguys/addressing (v2.2.4)
composer/installers (v2.3.0)
composer/semver (3.4.3)
consolidation/annotated-command (4.10.1)
consolidation/config (3.1.0)
consolidation/filter-via-dot-access-data (2.0.2)
consolidation/log (3.1.0)
consolidation/output-formatters (4.6.0)
consolidation/robo (5.1.0)
consolidation/site-alias (4.1.1)
consolidation/site-process (5.4.2)
davedevelopment/stiphle (0.9.4)
dflydev/dot-access-data (v3.0.3)
doctrine/annotations (2.0.2)
doctrine/collections (2.3.0)
doctrine/deprecations (1.1.4)
doctrine/inflector (2.0.10)
doctrine/lexer (2.1.1)
dragonmantank/cron-expression (v3.4.0)
drupal/add_content_by_bundle (1.2.2)
drupal/address (2.0.3)
drupal/addtocal_augment (1.2.4)
drupal/ai (1.0.5)
drupal/ai_agents (1.0.2)
drupal/ai_image_alt_text (1.0.1)
drupal/ai_provider_anthropic (1.0.0)
drupal/ai_provider_openai (1.0.2)
drupal/automatic_updates (3.1.7)
drupal/autosave_form (1.10.0)
drupal/better_exposed_filters (7.0.5)
drupal/bpmn_io (2.0.7)
drupal/captcha (2.0.7)
drupal/checklistapi (2.1.6)
drupal/coffee (2.0.1)
drupal/core (11.1.5)
drupal/core-composer-scaffold (11.1.5)
drupal/core-project-message (11.1.5)
drupal/crop (2.4.0)
drupal/ctools (4.1.0)
drupal/dashboard (2.0.0)
drupal/date_augmenter (1.1.1)
drupal/drupal_cms_accessibility_tools (1.1.0)
drupal/drupal_cms_admin_ui (1.1.0)
drupal/drupal_cms_ai (1.1.0)
drupal/drupal_cms_anti_spam (1.1.0)
drupal/drupal_cms_authentication (1.1.0)
drupal/drupal_cms_blog (1.1.0)
drupal/drupal_cms_case_study (1.1.0)
drupal/drupal_cms_content_type_base (1.1.0)
drupal/drupal_cms_events (1.1.0)
drupal/drupal_cms_forms (1.1.0)
drupal/drupal_cms_google_analytics (1.1.0)
drupal/drupal_cms_image (1.1.0)
drupal/drupal_cms_news (1.1.0)
drupal/drupal_cms_olivero (1.1.0)
drupal/drupal_cms_page (1.1.0)
drupal/drupal_cms_person (1.1.0)
drupal/drupal_cms_privacy_basic (1.1.0)
drupal/drupal_cms_project (1.1.0)
drupal/drupal_cms_remote_video (1.1.0)
drupal/drupal_cms_search (1.1.0)
drupal/drupal_cms_seo_basic (1.1.0)
drupal/drupal_cms_seo_tools (1.1.0)
drupal/drupal_cms_starter (1.1.0)
drupal/easy_breadcrumb (2.0.9)
drupal/easy_email (3.0.4)
drupal/easy_email_express (1.0.3)
drupal/easy_email_standard (1.0.2)
drupal/easy_email_text_format (1.0.2)
drupal/easy_email_theme (1.0.0)
drupal/easy_email_types_core (1.0.3)
drupal/easy_email_types_default (1.0.1)
drupal/eca (2.1.6)
drupal/editoria11y (2.2.4)
drupal/field_group (3.6.0)
drupal/focal_point (2.1.2)
drupal/friendly_captcha_challenge (0.9.18)
drupal/friendlycaptcha (1.1.3)
drupal/geocoder (4.28.0)
drupal/geofield (1.64.0)
drupal/gin (4.0.6)
drupal/gin_toolbar (2.0.0)
drupal/google_tag (2.0.8)
drupal/honeypot (2.2.2)
drupal/jquery_ui (1.7.0)
drupal/jquery_ui_resizable (2.1.0)
drupal/key (1.19.0)
drupal/klaro (3.0.3)
drupal/klaro_js (3.0.1)
drupal/leaflet (10.2.43)
drupal/linkit (7.0.3)
drupal/login_emailusername (3.0.1)
drupal/mailsystem (4.5.0)
drupal/menu_link_attributes (1.5.0)
drupal/metatag (2.1.0)
drupal/nouislider_js (15.8.1)
drupal/pathauto (1.13.0)
drupal/project_browser (2.0.0-beta1)
drupal/recipe_installer_kit (1.0.0-alpha3)
drupal/redirect (1.11.0)
drupal/robotstxt (1.6.0)
drupal/sam (1.3.2)
drupal/scheduler (2.2.1)
drupal/scheduler_content_moderation_integration (3.0.4)
drupal/search_api (1.38.0)
drupal/search_api_autocomplete (1.10.0)
drupal/search_api_exclude (2.0.3)
drupal/selective_better_exposed_filters (3.0.3)
drupal/seo_checklist (5.2.4)
drupal/simple_search_form (1.6.0)
drupal/simple_sitemap (4.2.2)
drupal/sitemap (2.0.0)
drupal/smart_date (4.2.3)
drupal/svg_image (3.2.1)
drupal/symfony_mailer_lite (2.0.2)
drupal/tagify (1.2.37)
drupal/token (1.15.0)
drupal/token_or (2.3.0)
drupal/trash (3.0.15)
drupal/webform (6.3.0-beta2)
drupal/yoast_seo (2.1.0)
drush/drush (13.4.0)
egulias/email-validator (4.0.4)
enshrined/svg-sanitize (0.21.0)
geocoder-php/common-http (4.6.0)
geocoder-php/nominatim-provider (5.7.0)
goalgorilla/rtseo.js (2.1.0)
grasmash/expander (3.0.1)
grasmash/yaml-cli (3.2.1)
guzzlehttp/guzzle (7.9.2)
guzzlehttp/promises (2.0.4)
guzzlehttp/psr7 (2.7.0)
html2text/html2text (4.3.2)
illuminate/collections (v11.44.2)
illuminate/conditionable (v11.44.2)
illuminate/contracts (v11.44.2)
illuminate/macroable (v11.44.2)
illuminate/support (v11.44.2)
itamair/geophp (1.6)
laravel/prompts (v0.1.25)
league/commonmark (2.6.1)
league/config (v1.2.0)
league/container (4.2.4)
league/html-to-markdown (5.1.1)
masterminds/html5 (2.9.0)
mck89/peast (v1.16.3)
mtownsend/xml-to-array (2.0.0)
nesbot/carbon (3.8.6)
nette/schema (v1.3.2)
nette/utils (v4.0.5)
nikic/php-parser (v5.4.0)
openai-php/client (v0.10.3)
pear/archive_tar (1.5.0)
pear/console_getopt (v1.4.3)
pear/pear_exception (v1.0.2)
pear/pear-core-minimal (v1.10.16)
phootwork/collection (v3.2.3)
phootwork/lang (v3.2.3)
php-http/discovery (1.20.0)
php-http/guzzle7-adapter (1.1.0)
php-http/httplug (2.4.1)
php-http/message (1.16.2)
php-http/multipart-stream-builder (1.4.2)
php-http/promise (1.3.1)
php-tuf/composer-stager (v2.0.0)
phpowermove/docblock (v4.0)
psr/cache (3.0.0)
psr/clock (1.0.0)
psr/container (2.0.2)
psr/event-dispatcher (1.0.0)
psr/http-client (1.0.3)
psr/http-factory (1.1.0)
psr/http-message (2.0)
psr/log (3.0.2)
psr/simple-cache (3.0.0)
psy/psysh (v0.12.8)
ralouphie/getallheaders (3.0.3)
revolt/event-loop (v1.0.7)
sebastian/diff (5.1.1)
simshaun/recurr (v5.0.3)
symfony/clock (v7.2.0)
symfony/console (v7.2.1)
symfony/css-selector (v7.2.0)
symfony/dependency-injection (v7.2.4)
symfony/deprecation-contracts (v3.5.1)
symfony/error-handler (v7.2.4)
symfony/event-dispatcher (v7.2.0)
symfony/event-dispatcher-contracts (v3.5.1)
symfony/filesystem (v7.2.0)
symfony/finder (v7.2.2)
symfony/http-foundation (v7.2.3)
symfony/http-kernel (v7.2.4)
symfony/mailer (v7.2.3)
symfony/mime (v7.2.4)
symfony/polyfill-ctype (v1.31.0)
symfony/polyfill-iconv (v1.31.0)
symfony/polyfill-intl-grapheme (v1.31.0)
symfony/polyfill-intl-idn (v1.31.0)
symfony/polyfill-intl-normalizer (v1.31.0)
symfony/polyfill-mbstring (v1.31.0)
symfony/polyfill-php80 (v1.31.0)
symfony/polyfill-php81 (v1.31.0)
symfony/polyfill-php83 (v1.31.0)
symfony/polyfill-php84 (v1.31.0)
symfony/process (v7.2.4)
symfony/psr-http-message-bridge (v7.2.0)
symfony/routing (v7.2.3)
symfony/serializer (v7.2.4)
symfony/service-contracts (v3.5.1)
symfony/string (v7.2.0)
symfony/translation (v7.2.4)
symfony/translation-contracts (v3.5.1)
symfony/validator (v7.2.4)
symfony/var-dumper (v7.2.3)
symfony/var-exporter (v7.2.4)
symfony/yaml (v7.2.3)
tijsverkoyen/css-to-inline-styles (v2.3.0)
twig/twig (v3.19.0)
voku/portable-ascii (2.0.3)
webmozart/assert (1.11.0)
willdurand/geocoder (4.6.0)
wpai-inc/anthropic-sdk-php (0.2.1)
yethee/tiktoken (0.5.1)
Drupal Entropy
- Movement towards Single Directory Components
- SDC implements a complete UI component in a single directory
- Twig, PHP, JS, and CSS files needed to render the component in the UI
- https://www.drupal.org/project/sdc
- UI Patterns Module: https://www.drupal.org/project/ui_patterns
- SDC implements a complete UI component in a single directory
- Movement towards “Modern CSS”, away from SCSS
- Uses CSS variable, container queries, layers, logical properties
- Removed need for a compiler
- Drupal moving towards Tailwind CSS? https://tailwindcss.com/
Product Roadmaps (Kerry Greer, Forum One)
- Product Roadmap
- A strategic visual document outlining product evolution
- Defines milestones and dependencies
- Product vs project roadmaps
- Why?
- Aligns expectations of all stakeholders in the product
- Human buy-in;
- Prioritization
- Models/Tools/Techniques
- Impact/Effort Matrix (Value=Y, Effort=X; plot on grid)
- MosCoW Framework (Must, Should, Could, Won’t)
- Kano Model
- Rice Scoring Model
- Estimation
- Everyone wants one; they’re always wrong
- Take time estimate; + add 30%
- Models/Tools/Techniques
- Setting Realistic Timelines (Considerations)
- Development Complexity Factors
- Content migration
- Refinement cycles
- “A things we don’t know yet category”
- Resource Management and Allocation
- Team Allocation (developer skills matrix for Drupal)
- External Resources (3rd party integrations)
- Workload Balancing (critical path management)
- Time Budgeting (buffer time for unknowns 20% rule)
Paragraphs and Single Directory Components
- Paragraphs - https://www.drupal.org/project/paragraphs
- Paragraphs provide an intuitive way to enter and manage content using structured data.
- Single Directory Components - https://www.drupal.org/project/sdc
- Single Directory Components (SDC) bring modular design, encapsulating styles, functionality, and structure within a single directory. Everything you need for your component is held together in a single, known location on the file system.
- Why?
- Reducing maintenance costs (Drupal itself, along with site customizations)
- Simplified documentation (standard application of styles across sites)
- Multisite organizations; some paragraphs had styles, others did not.
- Technical Details
- SDC (props and slots)
- Required files (.twig and .yml)
- Props
- Props are openings within a component.
- Filled with structured data
- Data from another (parent) component or from the view within which it is imported
- Slots
- Slots are openings within a component.
- Can take other markup or even other components.
- Props
- Required files (.twig and .yml)
- SDC (props and slots)
- Presentation Slides
Key Takeaways for Drupal 11 Release
- Drupal 11
- Added to Core
- Workspaces
- Recipes
- Single Directory Components
- New Navigation
- Removed from Core
- Actions UI
- Book
- Tracker
- Forum
- Statistics
- Tour
- Expectations, with minor release updates
- Improved Recipes
- Project Browser
- Automatic Updates
- Experience Builder v1.0
- Added to Core
- 2025 Goals
- Migrate to Gin admin theme
- Soft step towards “New Navigation” and “Experience Builder”

- October 2025
- Target release date for Experience Builder
- Influenced by Radix UI primitives: https://www.radix-ui.com/primitives
- Tailwind CSS: https://tailwindcss.com/
- Target release date for Experience Builder
- December 2025
- Drupal 11.3.0 and 10.6.0 released. End of security support for 10.4.
- Books module becomes a contrib module with Drupal 11.
TRL Pile
- Open Web Manifesto
- Open Web Alliance, Charter
- Klaro! consent management
- Editorially
- Webflow
- Framer
- Drupal’s Automatic Updates Initiative
- packages.drupal.org
- Update Framework (TUF) Specification
- Open Source Technology Improvement Fund
- Digital Public Good
- TAF https://github.com/openlawlibrary/taf
