Se préparer à migrer vers Drupal 9

  • Date
  • Auteur
    Chengbo Zhou et Pascal Lecatelier

Aujourd'ui le nombre d'applications développé par Drupal 7 demeure trés importante, Drupal 7 ne sera plus supporté dans sa licence communautaire à partir de novembre 2021, et jusqu'en 2024 pour les entreprises contributrices depuis plus de 3 ans au Core et modules Drupal 7. Il est donc important pour les organisations utilisant cette version de mener une réfléxion de migration vers la dernière version de Drupal.

Drupal 7 Drupal 8
Monde 276 793 102 112
Etat-unis 109 978 42 106
Russie 18 254 40 040
Allemagne 14 822 6 357
Royaune-uni 12 622 4 478
France 12 129 3 989
Belgique 9 852 4 125
source trends.builtwith.com

La sortie de la prochaine version de Drupal 9 est annoncée pour mi-2020, cette nouvelle version offrira aux utilisateurs une expérience proche de Drupal 8 dont le support se terminera en novembre 2021 en raison de sa dépendance avec Symfony 3.

Par rapport à la version 7, la version 9 apporte une mise à jour importante de l'architecture applicative et intègre une mise à jour majeure du Core Drupal. Cette version est batîe autour Symfony 4 et Twig 2, et a limité l'utilisation des libraries JQuery et JQuery UI pour l’interface utilisateur.

La migration de Drupal 7 à Drupal 9 nécessitera une importante reconstruction, certains outils comme Upgrade Status vous permettront de déterminer si les modules contribués ont leur équivalent dans la version 9, de vous accompagner dans le portage de code personnalisé grâce à Drupal Module Upgrader, ou encore vous secondera dans le transfert de contenu avec Core Migrate suite

Cependant les différences étant trés importantes entre les architectures Drupal 7 et Drupal 9, il faut aborder la stratégie de migration différement selon la nature de vos applications :
•     orientées contenu avec une faible part de module custom,
•     orientées fonctionnalités avec une forte présence de code custom.

Cette migration, en particulier si elle se révèle longue et complexe, pourrait être l'occasion :
•    d'améliorer et d'enrichir les fonctionnalités de l'application grâce à une conception fonctionnelle rigoureuse et documentée,
•    de séparer le code custom du code de présentation grâce à l'utilisation d'une architecture technique évolutive basée sur les APIs,
•    de basculer sur un processus de delivery continue et d'hébergement cloud.

La plus grande importance à accorder à Drupal 9...
est qu’il ne faudrait pas lui en accorder.
Dries Buytaert

Drupal 9, les améliorations


Drupal 9 apporte de nombreuses améliorations pour les développeurs front-end, avec une prise en charge du HTML5, des bibliothèques helpers supplémentaires, d'une meilleure accessibilité, de thèmes de base améliorés, de performance accrue et pour les développeurs backend, d'une programmation orientée objet, une amélioration de la mise en cache, une facilité d'intégration avec des services tiers.
Gestion de médias plus riches

Ajout d'un champ de contenu médias générique supportant des fichiers locaux audios, vidéos, images et autres, intégration de contenus vidéos distant (Ex: YouTube et Vimeo).
Mise à disposition d’un module de gestion d'une bibliothèque multimédia permettant aux utilisateurs, d’ajouter du contenu média à un site.
Le workflow et modération de contenu

Une gestion de Workflows permet de définir des processus de validation de contenu entre différents contributeurs.
Une fonctionnalité permet de préparer de nombreuses modifications de contenu autour de plusieurs « scénarios », puis de publier la version appropriée le moment venu.
Un module de modération de contenu permet aux utilisateurs de créer des révisions sur des contenus d'utilisateur avant qu'il soit visible.
Mise en page de contenu

Le module « Layout Builder » fournit des fonctionnalités de mise en page visuelle de contenu :
•    Mises en page de contenu créé à partir de modèles,
•    Personnalisation pour les mises en pages crées à partir de modèles,
•    Pages personnalisées « BigPipe », qui augmente la performance d’affichage par un mécanisme de chargement de contenu en streaming.
Capacités multilingues

Drupal 9 est livré avec plusieurs modules de gestion des langues, permettant :
•    d’installer Drupal en 100 langues étrangères dès l’initialisation,
•    de traduire des éléments de contenu tels que les nœuds, les termes de taxonomie, les options de menu et les profils utilisateurs,
•    de traduire des éléments de configuration, grâce à une aide dédiée à la traduction de sites web dans de plusieurs langues.
L’expérience mobile

Drupal 9 a adapté l’ensemble de ses fonctionnalités afin de le rendre compatible avec les appareils mobiles, et en fournissant une interfaces utilisateur ciblées sur les appareils mobiles (Comme les champs tels que la date et l’heure, les numéros de téléphone et les adresses mail.)
Module présent dans Drupal Core

Le module Views est un constructeur de requêtes utilisé afin de faciliter la création de listes de contenu dynamique sous diverses formes, il permet la récupération de contenu depuis les bases de données de sites web, qu’il peut ensuite afficher dans n’importe quel format et dans n’importe quelle langue.
La plupart des éléments d’une page s’affichent par le biais de blocs (comme les « breadcrumbs » éléments de navigation), permettant d’ajuster facilement l’organisation de la page dans l’interface utilisateur.
Le module Settings Tray permet de modifier les configurations les plus courantes simplement afin d'éviter d'effectuer des allers-retours entre le rendu de la page et son administration.
Contenu structuré

La gestion de données structurée est une composante essentielle de Drupal. Il est possible d'ajouter des champs ou des entités à toutes entités. Les profils d’utilisateur et les commentaires sont des exemples d’entités de contenu.
Les « Form nodes » facilitent la création de formulaires de saisie des données et « View modes » permet de créer de multiples options d’affichage de contenu dans différents contextes

Vidéo de présentation

Drupal 7, la migration


La migration de Drupal 7 vers Drupal 9 nécessite une reconstruction des applications. Pour y parvenir, il existe de nombreux outils disponibles qui peuvent être utilisés pour accompagner la migration. Ces outils comprennent :
•    « Drupal Module Upgrader » pour générer des modifications du code personnalisé, permettant d'assurer la compatibilité avec Drupal 8/9,
•    « Core Migrate Suite » pour transférer du contenu, prenant même en charge les sources de données.
Migration du contenu

La plupart du contenu et configurations peuvent être migrés automatiquement grâce aux modules « Migrate/Migrate Drupal/Migrate UI du core » à l'aide de l’interface web ou via la ligne de commande avec des modules contribués afin de bénéficier de fonctionnalités plus avancées.

Préalablement, il est nécessaire de faire l’inventaire avant de déterminer la meilleure approche de migration :
•    Manuelle : c’est la solution la plus facile, et la plus rapide s’il n'y a que peu de contenu et configurations à migrer, car la mise en place d’un processus automatique est coûteux en temps.
•    Automatique : c’est la solution quand le volume de contenu est important. Il faut alors prévoir des configurations et des développements spécifiques en fonction du besoin et de la complexité des données à migrer.

A noter qu’il sera plus compliqué de migrer certains contenus de manière automatique, comme « les Views » qui nécessiteront une récréation manuelle.
Réécriture de code « Custom »

A partir du Drupal 8, le développement d’un module custom est en programmation orientée objet. Il est nécessaire de réécrire tous les codes custom lors de la migration depuis Drupal 7 vers Drupal 9 que ce soit :
•    Du côté frontend, Twig a été introduit depuis Drupal 8 avec l’intégration de symfony dans le core Drupal qui est un moteur de template fiable et rapide pour remplacer l’ancien moteur de template,
•    Du côté backend, le « hook » évolue, son mode d’implémentation suit plusieurs design patterns différents. Il peut-être être hérité d'une classe mère ou déclaré dans un fichier de configuration yaml (yaml est introduit depuis Drupal 8). Contrairement aux modules de Drupal 7, désormais le code php est orienté objet. Symfony introduit par Drupal 8/9 utilise une approche par les événements, et en toute logique tous les hooks seront remplacés par des événements dans les prochaines versions de Drupal.

A noter qu'il existe un écart important de version entre Drupal 7 (Php version 5.3+) et Drupal 9 (Php version 7.3+), rendant obsolète certaine implémentation de code.

Partager cette page: