Le chemin vers Drupal 9 - Nouveautés, migration Drupal 7, Drupal 8 vers Drupal 9...

Friday 27 March 2020

Certes ce n'est pas la priorité du moment... Certes. Il n'empêche que nous pouvons disposer de ce temps plus lent, calme (et solidaire) pour réfléchir aux projets structurants. Jusqu'ici, l'annonce de la future libération de Drupal 9 a uniquement angoissé les administrateurs de sites Drupal 7. Qu'en est-il exactement ?

L'équipe bluedrop.fr se prépare à Drupal 9 - Image d'agrément

La version 9 de Drupal sera libérée en juin 2020. Elle sera diffusée parallèlement à une version mineure "Long term Services" (LTS) de Drupal 8. La version alpha 1 est déjà disponible depuis le 11/02/2020 (drupal 9.0.0-alpha1), la version alpha 2 est disponible depuis le 04/03/2020 (drupal 9.0.0-alpha2), la version 9.0.0 bêta 1 a été libérée le 20/03/2020 (drupal 9.0.0-beta1).

Pas une révolution, une mise à jour du socle technique

Il s'agit essentiellement d'une mise à jour, d'un rajeunissement technique du CMS, avec pour ambition de rester dans la course mouvante des outils de publication de contenus en ligne (avec ou sans tête, précisions-le). Nous faisons ici surtout référence à Symfony et Twig. L'objectif est ici d'assurer une meilleure performance, une standardisation du code tout en garantissant l'évolutivité du CMS. La communauté prépare depuis longtemps cette nouvelle version... Preuve en est la modification de la fréquence des mises à jour de Drupal 8, qui s'aligne au plus près des versions du framework Symfony.

Il n'y aura par conséquent que peu de changements au niveau fonctionnel et backend (bien que le changement de certaines habitudes peuvent fortement éprouver les équipes techniques, et leur productivité.) De nouvelles fonctionnalités devraient arriver avec la version 9.1, mais la feuille de route est encore très floue...

Pour notre quotidien - message interne - il est fort probable, par exemple, que Panalizer soit remplacé par le module Layout Builder. Nous avons commencé à nous y préparer... Il faut continuer et anticiper.

Pendant combien de temps Drupal 9 sera-t-il supporté ?

La date de fin de vie de Drupal 9 n’est pas encore communiquée, mais elle devrait correspondre aux dates de fin de support des dépendances de Drupal 9. Si le CMS intègre Symfony 4, sa durée de vie devrait être fixée à novembre 2023. Dans le cas d’un scénario optimiste où Drupal 9 intègre Symfony 5, la durée du support du CMS pourrait aller jusqu’en novembre 2025. Mais si d’autres dépendances, comme twig, ont une durée de vie inférieure à celle de Symfony 4 ou 5, la fin du support pourrait être plus proche que 2023 ou 2025. 

Vous avez choisi de migrer...

Nous ne traiterons pas des versions inférieures à Drupal 7 (il en existe encore...) Concentrons-nous sur la réalité de l'immense majorité de nos projets : Drupal 7 et Drupal 8. Pour Drupal 8, nous avons peu d'inquiétude, pour Drupal 7, il faut songer rapidement à intégrer que le projet va être conséquent.

Effort de migration - Drupal 8

La migration entre les deux versions ne nécessitera quasiment aucune retouche au niveau du code comparé aux versions antérieures. En effet, Drupal 9 est construit et testé à partir de Drupal 8. C’est un vrai avantage par rapport aux versions précédentes, ce qui rendra la migration plus simple.

La plupart des modules et thèmes seront préservés et compatibles dans la version Drupal 9. De plus, la modification des fréquences de libération de Drupal 8 a préparé le terrain.

La seule différence entre les versions Drupal 9 et Drupal 8 est caractérisée par la dépendance des mises à jour et l'obsolescence de certaines parties du code Drupal 8. Il va donc falloir mieux gérer le code obsolète de nos projets. Si votre site ne présente pas de code obsolète (ou si vous êtes organisés pour ne jamais produire de code obsolète), la migration vers Drupal 9 sera aussi simple et rapide qu'une montée en version mineure de Drupal 8 (de Drupal 8.7 à 8.8 par exemple). 

Pour résumer, à condition de "chasser" le code obsolète (cf plus bas) : 

  • La migration sera aussi simple et rapide qu'une montée en version mineure de Drupal 8 ;
  • Les modules contribués de Drupal 8 seront compatibles à 95% avec Drupal 9 ;
  • Les modules sur-mesure, suivront la même courbe de compatibilité que les modules contribués.

Efforts de migration - Drupal 7

Ici c'est pas la même salade... Nous sommes déjà, avec certains de nos clients qui se reconnaitront :), en discussion pour préparer la migration des sites Drupal 7 vers Drupal 9. Nous alertons, avec mesure, car il n'est pas de notre habitude d'imposer, de forcer une décision, surtout quand elle implique un travail considérable. Nous énumérons donc les risques à ne pas migrer, les contraintes à l'évolution future des sites. Chaque projet est unique. Ceci étant, l'idéal est bien d'envisager une migration. Elle va garantir la pérennité du site, sa sécurité, la maintenabilité des configurations de l'infrastructure d'hébergement, des librairies utilisées.

Pour rassurer un peu les administrateurs de sites Drupal 7, et ils sont nombreux (près de 750.000 sites estimés il y a 6 mois), la communauté a décidé d'étendre le support jusqu'en novembre 2021 (date de fin de vie de Drupal 8). Il reste donc 18 mois pour se préparer à migrer à compter de la date de libération de Drupal 9. A la fin du support communautaire, vous ne disposerez plus que de la possibilité de contracter un support payant, par des sociétés tierces, dans les limites des configurations de chaque projet (on n'a jamais testé ce type de solution, mais pourquoi pas...)

Alors que faire ? Les administrateurs de sites Drupal 7 pourront migrer directement vers Drupal 9 après sa sortie, dans les mêmes conditions et investissements qu'une migration vers Drupal 8. Mais avant sa sortie, l'avis répandu semble conseiller de passer à Drupal 8 à court terme. 

Préparez-vous à la migration vers Drupal 9

Nous considérons ici les sites Drupal 8. Si vous voulez anticiper le passage à Drupal 9 comme une montée en version mineure, il convient de s'y préparer.

Le module Upgrade Status vous permet analyser votre base de code pour rechercher les dépréciations grâce à un puissant outil de ligne de commande appelé Drupal-check. Ce module analyse le code des projets contribués et personnalisés que vous avez installés et établit un rapport de code "obsolète" qui doit être remplacé avant la prochaine version majeure. Des mises à jour de projets disponibles sont également suggérées pour maintenir votre site à jour, et éviter les erreurs de dépréciation au fil du temps.

Le module dispose d'une interface graphique. Il indique le statut de chaque projet, à savoir «Aucune erreur connue» ou «Erreur trouvée». Lorsque vous cliquez sur «Afficher les erreurs», vous accédez à la page contenant les informations relatives à la fonction ou à l'API déconseillée.

Il vous montre également les mises à jour disponibles pour les projets contribués. Ces mises à jour sont vivement recommandées, car les responsables de projets Drupal résolvent les problèmes de dépréciation avec le temps.

Tout module Drupal n'utilisant pas de code obsolète continuera à fonctionner sur Drupal 9. Cependant, les fonctions et les API marquées comme obsolètes continuent d'exister parallèlement à ces alternatives, jusqu'à leur suppression. La sortie de Drupal 9 verra un nettoyage en profondeur des dépréciations. Pour plus de renseignements et mieux cerner ce qu'est un code obsolète, voici la politique de dépréciation de Drupal.

Les développeurs de modules contribués sont encouragés à supprimer l'utilisation du code obsolète d'ici à juin 2020 pour faciliter la migration collective vers Drupal 9 (nous sommes aussi concernés :)

Discutons-en !

Pour vos projets Drupal 8, nous avons commencé une campagne globale de vérification du code obsolète, pour les clients qui le souhaitent. Pour vos projets Drupal 7, nous devons transiger avec nos clients, pour chaque projet, de la stratégie à adopter. La seule mauvaise solution : l'inertie. 

Quelques ressources :