20 ans en arrière correspondent à la préhistoire d'internet, et pourtant Drupal voyait le jour en Belgique grâce à Dries BUYTAERT. Les besoins de l'époque étaient évidemment plus modestes qu'aujourd'hui, mais les outils à disposition également. Publier un simple article était presque une prouesse, tandis qu'aujourd'hui on désire interagir avec de multiples systèmes externes, synchroniser des données en temps réel ou encore publier un unique contenu sur différentes plate-forme.
Drupal a dû évoluer pour ne pas disparaitre dans un monde technologique chaque jour plus riche et varié. Des choix important ont été faits afin de coller aux attentes réelles des utilisateurs. On pourrait avancer que le point fort de ce CMS est sa flexibilité : tout est pensé pour que l'on puisse développer toutes sortes de sites et/ou applications web. On pourrait avancer que c'est aussi une faiblesse de Drupal ! En effet cet outil est complexe et rien ne se fait simplement. J'aime cette image de Drupal vu comme un meuble en kit dont on aurait pas le plan de montage. Alors quels sont les choix qui font que ce CMS est si particulier ?
Modèle de données
En premier lieu, Drupal est hyper flexible dans la structuration des données : on dispose de tous les outils nécessaires pour modéliser des données métiers. Citons les noeuds, évidemment, les comptes utilisateurs, la taxonomie, les types de blocs, les paragraphes, les médias, les groupes... Plus de détails sont disponibles dans l'article Drupal et les structures de données.
Ajoutons que le système de versionning (révisions) permet d'avoir de multiples versions d'un contenu, et donc de mettre en place des processus de publication complexes. C'est le module du coeur Workflow (non installé par défaut avec le profil d'installation Standard) qui permet de créer ces processus via l'UI.
Gestion des utilisateurs
D'autre part la gestion des utilisateurs est très robuste avec le système de rôles et droits, et sécurisée (en tout cas jusqu'à ce jour !). Notons qu'il est possible de déléguer l'authentification des utilisateurs à un système externe en utilisant le module External Authentification. Cette gestion des connexions/sessions utilisateurs est primordiale aujourd'hui et celle proposée par Drupal ne souffre d'aucun reproche.
Contribution
En terme d'édition, les besoins ont beaucoup évoluer : on souhaite désormais prendre le contrôle sur l'apparence d'une page complète, et pas uniquement sur le contenu. Un contributeur doit être en mesure de construire des pages riches, avec non seulement son contenu à proprement dit, mais également des composants qui "habillent" le contenu. Cela rejoint cette philosophie d'assemblage d'une page à partir d'éléments composites. C'est l'approche native de Drupal depuis des années, avec le système de régions et blocs. L'ajout du module Layout Builder dans le coeur est un pas en avant vers l'approche Web Components. L'utilisateur reprend le contrôle de l'apparence de ses pages en (ré)utilisant des composants à disposition. Notons que le module Paragraphs et ses nombreux modules complémentaires ajoutent encore davantage de souplesse au contributeur.
Performances
Non, Drupal n'est pas réputé pour être rapide ! Et pourtant, de nombreuses améliorations ont vu le jour afin de lui permettre d'être performant. La gestion du cache de rendu est vraiment bien faite et efficace, même si cela reste assez obscure parfois. Avec le temps, on se rend compte que, oui, on peut en tirer partie et obtenir de bonnes performances pour les utilisateurs connectés. Les anonymes posent, eux, moins de problèmes puisque le site est moins dynamique et que des systèmes extérieurs de cache peuvent être utilisés facilement.
Ici on ne parle de cache de rendu que si l'on utilise un thème Drupal. Pour les architectures découplées, Drupal ne peut pas faire grand chose, si ce n'est fournir des données. C'est côté front que le cache est géré, ou pas !
Gestion des environnements
Comme tout CMS, le paramètrage d'un site Drupal se fait principalement via le back-office et est enregistré en base de données. Ceci fonctionne très bien, mais pose un problème lorsque l'on souhaite transférer la configuration d'un environnement vers au autre (par exemple de la preprod vers la prod). On ne peut pas simplement exporter la base de données d'un environnement pour ensuite l'importer vers au autre environnement; en effet tout le contenu de l'environnement cible serait alors perdu.
Depuis la version 8 de Drupal, on dispose d'une "vraie" gestion de la configuration avec un système d'export/import des configurations sous forme de fichiers YAML. Ces derniers peuvent être versionnés et ensuite distribués sur n'importe quel environnement. Oui cela n'est pas si simple mais on dispose de tous les outils nécessaires (voir l'article Gestion de la configuration de Drupal 8). On est donc en mesure de mettre en place l'intégration continue.
Communauté
Bien sûr Drupal ne serait rien sans la communauté qui maintient le coeur et l'écosystème de modules et de thèmes à disposition sur drupal.org. On a à ce jour plus de 5 500 modules disponibles pour la version 9 de Drupal. C'est aussi l'offre fonctionnelle qui fait de ce CMS un outil aussi flexible et varié.
C'est également la communauté qui permet d'avoir un système particulièrement sécurisé, principalement grâce à la Security Team qui veille à ce que Drupal reste toujours pertinent face aux attaques, chaque jour plus nombreuses et sophistiquées.
On le voit bien, même si Drupal est un monolithe, il a aussi su évoluer en fonction des besoins toujours plus complexes (intranet, extranet, hub de contribution, micro services...) et propose pas mal de fonctionnalités très avancées. Certes, Drupal est un CMS complexe, mais il s'adresse davantage aux professionnels qu'au grand public. Il ne faut donc pas en attendre autre chose qu'un outil flexible et complexe capable de s'intégrer dans n'importe SI moderne.