Drupal, un écosystème complet
Découvrez l'écosystème fécond de Drupal : depuis ces fondations technologiques jusqu'à l'ajout de fonctionnalités et sa communauté qui fait sa célébrité.
Un socle Symfony
Depuis la sortie de Drupal 8 à la fin de l’année 2015, le CMS s'appuie sur des composants Symfony afin d'assurer le socle technique de son fonctionnement. Mais pourquoi incorporer des éléments Symfony dans Drupal ?
Ce n'est pas par flemme ou pour suivre une mode, mais pour assurer une base solide à l'ensemble. En effet, les composants Symfony utilisés serviront de fondation à la construction du CMS. Peu importe le type de projet que l'on souhaite construire avec Drupal, cette fondation restera identique. Le principe consiste à réutiliser ce qui a déjà été réalisé, testé et maintenu afin de ne pas réinventer la roue et d'utiliser des éléments dûment éprouvés.
En effet, ces deux outils, conçus autour de la technologie PHP, sont assez complémentaires : le framework Symfony sert de socle technique, alors que l'objectif de Drupal est d'offrir une expérience de création et de gestion de contenu.
A noter que ce changement de paradigme a également eu un impact sur la fréquence des versions majeures à venir. Pour prendre un exemple récent, début novembre 2021 avait lieu la fin du support de Drupal 8 pour la simple raison que les composants embarqués, issus de Symfony 3, arrivaient eux aussi à leur date de fin de support. Il en ira de même pour Drupal 9 et Symfony 4 et ainsi de suite. Les changements de versions entre Drupal et Symfony seront désormais liées.
Cette évolution du CMS Drupal a également pour effet d'ouvrir la porte à tous les développeurs Symfony et d'ainsi augmenter le nombre de développeurs potentiels pour un projet Drupal. Bien que tous les composants Symfony ne soient pas embarqués dans Drupal, l'approche du CMS ne désorientera pas trop ceux qui sont familiers du framework Symfony.
10.000 thèmes et modules
A l'installation, Drupal est assez avare en fonctionnalités. Ce qui à première vue s’apparente à une limite est en réalité une volonté : Drupal repose sur une logique modulaire où vous n'activez que les fonctionnalités requises par votre projet. Cette logique évite la surcharge de vos interfaces d'administration de pages ou boutons inutiles, et permet évidemment d'optimiser les performances de votre projet en n'utilisant que les éléments nécessaires.
Ces briques fonctionnelles portent le nom de « modules » dans l'écosystème Drupal. Les modules de base (disponibles dès l'installation) vont, par exemple, ajouter les commentaires en bas des articles ou un formulaire de contact basique, mais ils offrent également des paramètres plus avancés comme le rendu des pages avec la technologie BigPipe ou les modules de gestion des webservices.
Le champ des possibles s’ouvre grâce aux modules issus de la communauté Drupal. Le facteur clef de succès de Drupal a été d'offrir aux développeurs une gestion centralisée de ces modules sur le site Drupal.org. En ne considérant que la dernière version majeure du moment, Drupal 9, nous ne dénombrons pas moins de 7200 modules disponibles pour étendre les fonctionnalités de l’outil.
A la lecture d'un cahier des charges, un chef de projet de ma connaissance avait pour habitude de dire « il existe un module pour ça », en reprenant le fameux slogan d'Apple concernant son store d'applications. Et impossible de lui donner tort : cette gigantesque base de code mise en commun nous permet, bien souvent, de couvrir 80% des besoins d'un projet !
C'est bien là le grand point fort des projets OpenSource et de leurs communautés. Sans l'apport de ces modules, Drupal n'aurait pas l'envergure qu'il connaît aujourd'hui, tandis que je n'écrirais pas ces lignes...
Les distributions pour des outils clé en main
Si nous partons du principe que les modules ajoutent des fonctionnalités, nous pouvons voir les distributions comme un bundle prêt à installer pour servir une thématique bien précise. Parmi les distributions les plus en vue de la communauté Drupal, citons Commerce Kickstart qui offre toutes les fonctionnalités d'un site e-commerce dès l'installation, Opigno pour mettre en place une plateforme d’e-learning, ou encore Open Social qui propose une vision orientée réseau social.
Leur logique s’apparente à celle des thèmes de Wordpress, mais il faut voir ces distributions comme un cadre fonctionnel plutôt que comme un habillage graphique.
Ces distributions sont de bons moyens pour mettre rapidement une plateforme en place. Il faut cependant se pencher sur le sujet au tout début de la vie du projet, je dirais même que cette piste devrait être explorée dès l'avant-vente. Utiliser ces distributions a l'énorme avantage de fournir un socle de fonctionnalités très rapidement. En contrepartie, le cadre technique et fonctionnel qu'offre ces distributions viendra s'ajouter au cadre Drupal traditionnel et les développements devront donc se faire dans ce cadre. S’il est aisé d’ajouter des fonctionnalités à votre projet, modifier celles fournies par la distribution peut se montrer assez compliqué. Ce choix doit donc être soupesé, voire travaillé avec le client en amont pour partir sur de bonnes bases. Proposer un POC ou une démo est une bonne idée pour que chacun ait une vision claire de ce qu'apporte une certaine distribution selon le besoin de départ.
La communauté qui enrichit le projet
Je parlais précédemment de la communauté Drupal et de son impact dans l'évolution du projet Drupal dans son ensemble. Contrairement à Ibexa ou d’autres CMS ou DXP, Drupal n'est adossé à aucune société. Que ce soit la DrupalAssociation qui vise à augmenter l'adoption de Drupal, les développeurs du noyau Drupal, les équipes de traduction partout dans le monde, ainsi que les associations locales qui organisent les DrupalCamp ou encore les développeurs de modules, toutes ces personnes, impliquées et volontaires, ne travaillent pas pour une seule et même société. Elles partagent leur travail pour améliorer, d'année en année, le projet et c'est à elles que nous devons la pérennité de Drupal.
Si nous prenons l'exemple des modules issus de la communauté, c'est cette mise en commun qui permettra à un module d'être testé dans des contextes différents, de remonter les éventuels problèmes détectés, de suggérer ou d'ajouter des améliorations et au final d'obtenir des modules plus robustes, plus sécurisé et avec une meilleure prise en main.
Pensez-y la prochaine fois que votre projet nécessite de développer une nouvelle fonctionnalité qui pourrait servir sur d'autre projet : rajoutez votre module sur Drupal.org !