Drupal CMS vs. The Cool Kids
1
About me
Drupal / PHP / Go developer @ SparkFabrik
Drupal contributor (WebProfiler, Monolog, Symfony
Messenger, Search API Typesense) and speaker
Drupal.org: https://www.drupal.org/u/lussoluca
LinkedIn: www.linkedin.com/in/lussoluca
Slack (drupal.slack.com): lussoluca
Mastodon: @lussoluca@phpc.social
@lussoluca
Requisiti
3
4
16. Permette il sync con repository git
17. Licenza Open-Source
18. Configurabile con CDN
19. Usabilità (per editor non tecnico)
20. Longevità (prospettive di continuità/sviluppi futuri
della soluzione)
21. Supporto tecnico
22. Ricchezza di documentazione e manuali
23. Estensibile con moduli/plugin
24. Supporto alla lingua italiana
1. UI di amministrazione è accessibile
2. API Driven (Headless)
3. Supporta contenuti multilingua
4. Permette un’elevata configurazione del flusso di
pubblicazione
5. Permette di definire e collegare diverse tipologie di
contenuti
6. Supporta storage esterno versionato per gli assets
7. Permette elevata flessibilità nella modalità di
creazione dei contenuti (editor WYSIWYG)
8. Versiona le modifiche e permette di ristabilire
versioni precedenti
9. Supporta SSO (SAML e/o OpenID Connect)
10. Permette la definizione di diverse tipologie utente
11. Permette di arricchire le informazioni dell’utente
12. Elevata flessibilità della gestione dei permessi
13. Permette di taggare i contenuti
14. Espone endpoint per la ricerca e il filtraggio dei
contenuti
15. Possibilità di eseguire azioni alla creazione e/o
modifica di contenuti
Concorrenti
5
6
Strapi: https://strapi.io/
Keystone: https://keystonejs.com/
Ghost: https://ghost.org/
Prismic: https://prismic.io/
Netlify: https://www.netlifycms.org/
Backstage: https://backstage.spotify.com/
GitBook: https://www.gitbook.com/
Payload: https://payloadcms.com/
Contentful: https://www.contentful.com/
Drupal: https://www.drupal.org/
7
8
Per i prodotti commerciali abbiamo considerato solo le features disponibili nel piano free
Perché Drupal non è cool?
9
➔ Composer
➔ PHP
➔ OOP
➔ Troppi moduli tra cui scegliere (e molti fanno cose
simili)
➔ Non c’è un solo modo di fare le cose (che detta così
non sembra neanche male…)
➔ Perché il front end non usa <ultimo framework js
cool>?
10
Dobbiamo risultare più cool per gli utenti beginner ed intermediate
Durante la DrupalCon NA di
Maggio 2024 a Portland, Dries
ha lanciato il progetto Drupal
Starshot CMS
11
Cos’è Drupal CMS?
12
➔ https://www.drupal.org/about/starshot
➔ The Drupal Drupal Starshot Initiative aims to build
the new default download of Drupal
➔ A package built on Drupal core, including refined
common features from the contributed project
ecosystem
➔ [Drupal CMS] enables site builders without Drupal
experience to easily create a new Drupal site and
extend it with pre-packaged recipes, all using their
browser
➔ Drupal CMS aims to enable marketers to build and
launch websites quickly. Marketers will choose which
features they want their site to have, and then start
adding content to their site
Installer di Drupal CMS
13
Installer di Drupal CMS
14
Installer di Drupal CMS
15
16
Home page di Drupal CMS
Recipes
17
➔ Applied to Drupal sites, they are not installed.
➔ Easy to share
➔ Do not lock sites in
➔ Composable from other Drupal recipes
➔ https://www.drupal.org/about/starshot/blog/drupal-
cms-base-recipe-update-for-initial-release
➔ https://www.drupal.org/docs/extending-drupal/con
tributed-modules/contributed-module-documenta
tion/distributions-and-recipes-initiative/recipes-c
ookbook
Recipes allow Drupal module installation and
configuration automation via the user interface and
the Drupal recipe runner
➔ drupal_cms_admin_theme
➔ drupal_cms_anti_spam
➔ drupal_cms_authentication
➔ drupal_cms_content_type_base
➔ drupal_cms_dashboard
➔ drupal_cms_image_media_type
➔ drupal_cms_media_tools
➔ drupal_cms_privacy_basic
➔ drupal_cms_seo_basic
➔ easy_email_express
18
➔ core/recipes/basic_block_type
➔ core/recipes/core_recommended_maintenance
➔ core/recipes/core_recommended_performance
➔ core/recipes/page_content_type
➔ core/recipes/content_editor_role
➔ core/recipes/user_picture
➔ core/recipes/audio_media_type
➔ core/recipes/document_media_type
➔ core/recipes/local_video_media_type
➔ core/recipes/remote_video_media_type
Ricette in Drupal CMS
➔ Configurazioni
➔ Contenuto
➔ Test
➔ Ma NON codice
Recipes
drupal_cms_seo_tools/
├─ config/
│ ├─ dashboard.dashboard.seo.yml
│ ├─ field.storage.node.field_seo_analysis.yml
│ ├─ field.storage.node.field_seo_description.yml
│ ├─ ...
│ ├─ tour.tour.seo_checklist.yml
├─ content/
│ ├─ menu_link_content/
│ │ ├─ 6ca73647-c2e0-45c6-95aa-c96ff3b17c44.yml
│ ├─ shortcut/
│ │ ├─ e81b234d-40cf-4807-979e-8fd33cdea35f.yml
├─ tests/
├─ composer.json
├─ recipe.yml
19
➔ Una ricetta può dipendere da
altre ricette
➔ Una ricetta indica i moduli da cui
dipende
Recipes
name: SEO tools
description: Configures Drupal CMS for Search Engine Optimization best practices.
type: Drupal CMS
recipes:
- core/recipes/full_html_format_editor
- core/recipes/image_media_type
install:
- dashboard
- field_group
- focal_point
- layout_builder
- menu_link_content
- ...
20
➔ Una ricetta definisce
configurazioni
➔ Una ricetta può importare le
configurazione di un modulo
(alcune o tutte)
Recipes
config:
strict:
- field.storage.node.field_seo_analysis
- field.storage.node.field_seo_description
- field.storage.node.field_seo_image
- field.storage.node.field_seo_title
import:
metatag:
- metatag.metatag_defaults.403.yml
- metatag.metatag_defaults.404.yml
- metatag.metatag_defaults.taxonomy_term.yml
- metatag.metatag_defaults.user.yml
shortcut:
- shortcut.set.default
simple_sitemap: '*'
21
➔ Una ricetta può definire azioni da
compiere sulle configurazioni del
sito
◆ addToAllBundles
◆ cloneAs
◆ entity_create
◆ permissions_per_bundle
◆ simpleConfigUpdate
◆ placeBlock
◆ add_moderation
◆ editor:addItemToToolbar
◆ …
Recipes
actions:
# Add SEO fields to all content types that are installed.
field.storage.node.field_seo_analysis:
addToAllBundles:
label: 'SEO analysis'
description: 'Pick the main keyword or phrase this page is about.'
...
system.performance:
simpleConfigUpdate:
# Ensure caching is on and set to 15 minutes for Lighthouse.
cache.page.max_age: 900
# Ensure CSS and JS are preprocessed.
css.preprocess: true
js.preprocess: true
22
Dopo aver installato la ricetta drupal_cms_seo_tools
23
24
Drupal CMS will come
pre-installed with a set of
modules and themes, using
recipes, effectively replacing
the "Standard" install profile
https://new.drupal.org
25
➔ Nuova veste grafica
➔ Metterà in risalto Drupal CMS
➔ Fatto con Drupal 10 (finalmente!)
Project Browser
26
➔ Cerca e installa moduli e temi direttamente dalla UI
di Drupal
➔ Installazione tramite Composer (in una cartella
temporanea)
➔ Installa anche Ricette
➔ https://github.com/php-tuf (The Update Framework)
Drupal is relatively hard to use, especially for newer
users. One of the very first things nearly all new
users attempt to do, is find and install contributed
modules
27
28
Automatic Updates
29
➔ Automatic updates for Drupal core patch and security
releases only
Experience builder
30
➔ Basato su SDC (ma di questo ve ne parlerà Enrico)
➔ Implementato in React
Lauri Timmanee on The Drop Times
31
ECA
32
➔ ECA is the no-code solution that empowers you to
orchestrate your Drupal site
33
Workflow di clonazione di un contenuto, descritto come modello ECA
Prova Drupal senza un server
34
➔ https://project.pages.drupalcode.org/drupal_cms/
➔ WebAssembly
➔ Visit the trial experience prototype here:
https://www.drupal.org/about/starshot/trial-experie
nce
AI
35
➔ Di questo ve ne parlerà Roberto
Allo stato attuale è ancora tutto
molto sperimentale, ma il 15
gennaio verrà rilasciata la
prima versione stabile
36
GRAZIE!

Talks on my machine: Drupal CMS versus The Cool Kids

  • 1.
    Drupal CMS vs.The Cool Kids 1
  • 2.
    About me Drupal /PHP / Go developer @ SparkFabrik Drupal contributor (WebProfiler, Monolog, Symfony Messenger, Search API Typesense) and speaker Drupal.org: https://www.drupal.org/u/lussoluca LinkedIn: www.linkedin.com/in/lussoluca Slack (drupal.slack.com): lussoluca Mastodon: @lussoluca@phpc.social @lussoluca
  • 3.
  • 4.
    4 16. Permette ilsync con repository git 17. Licenza Open-Source 18. Configurabile con CDN 19. Usabilità (per editor non tecnico) 20. Longevità (prospettive di continuità/sviluppi futuri della soluzione) 21. Supporto tecnico 22. Ricchezza di documentazione e manuali 23. Estensibile con moduli/plugin 24. Supporto alla lingua italiana 1. UI di amministrazione è accessibile 2. API Driven (Headless) 3. Supporta contenuti multilingua 4. Permette un’elevata configurazione del flusso di pubblicazione 5. Permette di definire e collegare diverse tipologie di contenuti 6. Supporta storage esterno versionato per gli assets 7. Permette elevata flessibilità nella modalità di creazione dei contenuti (editor WYSIWYG) 8. Versiona le modifiche e permette di ristabilire versioni precedenti 9. Supporta SSO (SAML e/o OpenID Connect) 10. Permette la definizione di diverse tipologie utente 11. Permette di arricchire le informazioni dell’utente 12. Elevata flessibilità della gestione dei permessi 13. Permette di taggare i contenuti 14. Espone endpoint per la ricerca e il filtraggio dei contenuti 15. Possibilità di eseguire azioni alla creazione e/o modifica di contenuti
  • 5.
  • 6.
    6 Strapi: https://strapi.io/ Keystone: https://keystonejs.com/ Ghost:https://ghost.org/ Prismic: https://prismic.io/ Netlify: https://www.netlifycms.org/ Backstage: https://backstage.spotify.com/ GitBook: https://www.gitbook.com/ Payload: https://payloadcms.com/ Contentful: https://www.contentful.com/ Drupal: https://www.drupal.org/
  • 7.
  • 8.
    8 Per i prodotticommerciali abbiamo considerato solo le features disponibili nel piano free
  • 9.
    Perché Drupal nonè cool? 9 ➔ Composer ➔ PHP ➔ OOP ➔ Troppi moduli tra cui scegliere (e molti fanno cose simili) ➔ Non c’è un solo modo di fare le cose (che detta così non sembra neanche male…) ➔ Perché il front end non usa <ultimo framework js cool>?
  • 10.
    10 Dobbiamo risultare piùcool per gli utenti beginner ed intermediate
  • 11.
    Durante la DrupalConNA di Maggio 2024 a Portland, Dries ha lanciato il progetto Drupal Starshot CMS 11
  • 12.
    Cos’è Drupal CMS? 12 ➔https://www.drupal.org/about/starshot ➔ The Drupal Drupal Starshot Initiative aims to build the new default download of Drupal ➔ A package built on Drupal core, including refined common features from the contributed project ecosystem ➔ [Drupal CMS] enables site builders without Drupal experience to easily create a new Drupal site and extend it with pre-packaged recipes, all using their browser ➔ Drupal CMS aims to enable marketers to build and launch websites quickly. Marketers will choose which features they want their site to have, and then start adding content to their site
  • 13.
  • 14.
  • 15.
  • 16.
    16 Home page diDrupal CMS
  • 17.
    Recipes 17 ➔ Applied toDrupal sites, they are not installed. ➔ Easy to share ➔ Do not lock sites in ➔ Composable from other Drupal recipes ➔ https://www.drupal.org/about/starshot/blog/drupal- cms-base-recipe-update-for-initial-release ➔ https://www.drupal.org/docs/extending-drupal/con tributed-modules/contributed-module-documenta tion/distributions-and-recipes-initiative/recipes-c ookbook Recipes allow Drupal module installation and configuration automation via the user interface and the Drupal recipe runner
  • 18.
    ➔ drupal_cms_admin_theme ➔ drupal_cms_anti_spam ➔drupal_cms_authentication ➔ drupal_cms_content_type_base ➔ drupal_cms_dashboard ➔ drupal_cms_image_media_type ➔ drupal_cms_media_tools ➔ drupal_cms_privacy_basic ➔ drupal_cms_seo_basic ➔ easy_email_express 18 ➔ core/recipes/basic_block_type ➔ core/recipes/core_recommended_maintenance ➔ core/recipes/core_recommended_performance ➔ core/recipes/page_content_type ➔ core/recipes/content_editor_role ➔ core/recipes/user_picture ➔ core/recipes/audio_media_type ➔ core/recipes/document_media_type ➔ core/recipes/local_video_media_type ➔ core/recipes/remote_video_media_type Ricette in Drupal CMS
  • 19.
    ➔ Configurazioni ➔ Contenuto ➔Test ➔ Ma NON codice Recipes drupal_cms_seo_tools/ ├─ config/ │ ├─ dashboard.dashboard.seo.yml │ ├─ field.storage.node.field_seo_analysis.yml │ ├─ field.storage.node.field_seo_description.yml │ ├─ ... │ ├─ tour.tour.seo_checklist.yml ├─ content/ │ ├─ menu_link_content/ │ │ ├─ 6ca73647-c2e0-45c6-95aa-c96ff3b17c44.yml │ ├─ shortcut/ │ │ ├─ e81b234d-40cf-4807-979e-8fd33cdea35f.yml ├─ tests/ ├─ composer.json ├─ recipe.yml 19
  • 20.
    ➔ Una ricettapuò dipendere da altre ricette ➔ Una ricetta indica i moduli da cui dipende Recipes name: SEO tools description: Configures Drupal CMS for Search Engine Optimization best practices. type: Drupal CMS recipes: - core/recipes/full_html_format_editor - core/recipes/image_media_type install: - dashboard - field_group - focal_point - layout_builder - menu_link_content - ... 20
  • 21.
    ➔ Una ricettadefinisce configurazioni ➔ Una ricetta può importare le configurazione di un modulo (alcune o tutte) Recipes config: strict: - field.storage.node.field_seo_analysis - field.storage.node.field_seo_description - field.storage.node.field_seo_image - field.storage.node.field_seo_title import: metatag: - metatag.metatag_defaults.403.yml - metatag.metatag_defaults.404.yml - metatag.metatag_defaults.taxonomy_term.yml - metatag.metatag_defaults.user.yml shortcut: - shortcut.set.default simple_sitemap: '*' 21
  • 22.
    ➔ Una ricettapuò definire azioni da compiere sulle configurazioni del sito ◆ addToAllBundles ◆ cloneAs ◆ entity_create ◆ permissions_per_bundle ◆ simpleConfigUpdate ◆ placeBlock ◆ add_moderation ◆ editor:addItemToToolbar ◆ … Recipes actions: # Add SEO fields to all content types that are installed. field.storage.node.field_seo_analysis: addToAllBundles: label: 'SEO analysis' description: 'Pick the main keyword or phrase this page is about.' ... system.performance: simpleConfigUpdate: # Ensure caching is on and set to 15 minutes for Lighthouse. cache.page.max_age: 900 # Ensure CSS and JS are preprocessed. css.preprocess: true js.preprocess: true 22
  • 23.
    Dopo aver installatola ricetta drupal_cms_seo_tools 23
  • 24.
    24 Drupal CMS willcome pre-installed with a set of modules and themes, using recipes, effectively replacing the "Standard" install profile
  • 25.
    https://new.drupal.org 25 ➔ Nuova vestegrafica ➔ Metterà in risalto Drupal CMS ➔ Fatto con Drupal 10 (finalmente!)
  • 26.
    Project Browser 26 ➔ Cercae installa moduli e temi direttamente dalla UI di Drupal ➔ Installazione tramite Composer (in una cartella temporanea) ➔ Installa anche Ricette ➔ https://github.com/php-tuf (The Update Framework) Drupal is relatively hard to use, especially for newer users. One of the very first things nearly all new users attempt to do, is find and install contributed modules
  • 27.
  • 28.
  • 29.
    Automatic Updates 29 ➔ Automaticupdates for Drupal core patch and security releases only
  • 30.
    Experience builder 30 ➔ Basatosu SDC (ma di questo ve ne parlerà Enrico) ➔ Implementato in React Lauri Timmanee on The Drop Times
  • 31.
  • 32.
    ECA 32 ➔ ECA isthe no-code solution that empowers you to orchestrate your Drupal site
  • 33.
    33 Workflow di clonazionedi un contenuto, descritto come modello ECA
  • 34.
    Prova Drupal senzaun server 34 ➔ https://project.pages.drupalcode.org/drupal_cms/ ➔ WebAssembly ➔ Visit the trial experience prototype here: https://www.drupal.org/about/starshot/trial-experie nce
  • 35.
    AI 35 ➔ Di questove ne parlerà Roberto
  • 36.
    Allo stato attualeè ancora tutto molto sperimentale, ma il 15 gennaio verrà rilasciata la prima versione stabile 36
  • 37.