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éflexion de migration vers la dernière version de Drupal.

Drupal 7 Drupal 8
Monde 276 793 102 112
Etats-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 bâtie 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 mais également vous accompagnent dans le portage de code personnalisé grâce à Drupal Module Upgrader ou encore vous secondera dans le transfert de contenu avec Core Migrate suite.

Etant donné qu’il existe des différences très importantes entre les architectures Drupal 7 et Drupal 9, il faut aborder la stratégie de migration différemment 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 d'une part pour les développeurs front-end avec une prise en charge du HTML5, des bibliothèques helpers supplémentaires, une meilleure accessibilité, des thèmes de base améliorés, une performance accrue et d'autre parts pour les développeurs backend avec 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 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 en fournissant une interface utilisateur ciblée sur les appareils mobiles (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 à toute entité. 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 : il s’agit de la solution la plus facile et de la plus rapide à mettre en œuvre dans le cas où le contenu et les configurations à migrer ne sont pas abondants puisqu’elle nécessite l’instauration d’un processus automatique coûteux en temps.
•    Automatique : il s’agit de la solution adaptée lorsque 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 designs patterns différents. Il peut ê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 certaines implémentations de code.

Partager cette page: