Makina Blog
Drupal 9 : préparez-vous !
Dans quelques jours, le 3 juin 2020, aura lieu la sortie de Drupal 9 en version stable. À quels changements s’attendre ? Quel sera l’impact sur les sites développés actuellement en Drupal 8 et Drupal 7 ? Voici quelques informations qui vous permettront de mieux appréhender cet événement et d'en mesurer les impacts.
Comment se préparer à ce non-événement ?
De fait, le lancement de Drupal 9 semble assez éloigné de l’ambiance qui entourait la sortie de Drupal 8 qui concluait une lutte de plus de 4 ans de la communauté pour aboutir à cette version aux forceps.
« The big deal about Drupal 9 is
… that it should not be a big deal »
Concernant Drupal 9, c’est bien d’un « non-événement » dont il doit s’agir. Vous vous attendiez à de nombreuses nouveautés ? Et bien non, la version 9 devrait fonctionnellement être identique à la version 8.9. Il faudra donc attendre la version 9.1 pour voir de nouvelles fonctionnalités intégrer le core.
Hormis un petit rebranding, rien de très visible dans cette version dont les évolutions sont surtout techniques et consistent à :
- Faire évoluer le soubassement de Drupal en passant de la version 3 de Symfony utilisée dans Drupal 8 à version 4.4+
- Expurger tous les usages dépréciés qui étaient encore tolérés dans Drupal 8 conformément à la politique de dépréciation de Drupal
Le core Drupal, en préparation de ce passage à la version 9, avait lui-même connu une campagne de sanitisation lancée en Mai 2019 visant à expurger le core de quelques 4402 usages dépréciés et dont le succès avait été salué par Dries Buytaert lui-même.
Mais alors pourquoi cette version 9 et pourquoi maintenant ?
En fait, la principale contrainte est l’évolution nécessaire du socle Symfony 3 dont la fin de vie est programmée en novembre 2021 et sur lequel est basé Drupal 8. À partir de cette date, Symfony 3 ne sera plus maintenu. Par conséquent, Drupal 8 voit sa date de fin de support coïncider exactement avec celle de Symfony 3 : le 21 novembre 2021.
Ces 18 mois entre la sortie de Drupal 9 et la fin de vie de Drupal 8 est le temps jugé nécessaire pour permettre à tous les projets Drupal 8 d’opérer leur migration vers Drupal 9.
Migrer votre projet de Drupal 8 vers Drupal 9
Si votre projet Drupal 8 n’a pas suivi les dernières mises à jour de Drupal 8, il vous faudra dans un premier temps les effectuer jusqu’à la version 8.9. La migration de D8 à Drupal 9 devrait alors être relativement aisé et devrait se réaliser en quelques étapes simples, décrites ci-dessous.
Vérifiez vos environnements
Avant toute mise-à-jour vers Drupal 9, assurez-vous que les différents environnements - dev, staging et production - hébergeant votre site sont compatibles avec les pré-requis pour Drupal 9.
S’il est relativement facile de faire évoluer les environnements de développement sous Docker, cette opération est parfois plus délicate sur les environnements qui dépendent d’un hébergeur tiers.
Vérifiez la disponibilité des dépendances
Tout d’abord, si des modules contributeurs sont utilisés, il faudra vérifier que ces modules sont bien compatibles avec Drupal 9. À l’heure où cet article est rédigé, seuls 1798 modules sont officiellement disponibles pour Drupal 9 contre 8888 pour Drupal 8, soit à peine 20 %. Si les modules principaux sont tous disponibles, il n’en va pas de même dès lors que des modules un peu plus confidentiels sont utilisés.
Il convient également de vérifier si les modules non officiellement portés ne disposent pas d’une issue relative à leur portage Drupal 9 (Drupal 9 readiness issue). Quand c’est le cas, un patch est parfois disponible qui une fois appliqué rend le module compatible. Si un tel patch existe et que vous le testez avec succès, celui-ci peut alors être intégré à votre fichier composer.json (voir la partie relative).
Si malgré tout un ou plusieurs des modules contributeurs utilisés ne sont pas dans un des deux cas précédents, plusieurs choix s’offrent à vous :
- Le remplacer par un autre module ou un module custom,
- Demander à la communauté de faire évoluer le module en créant vous-même une Drupal 9 readiness issue pour demander le portage du module (avec toute l’incertitude que cette démarche implique en terme de délai et d’aboutissement),
- Puis, éventuellement effectuer cette migration vous-même et en faire bénéficier la communauté.
La migration d’un module ou d’un projet Drupal peut être facilitée grâce à des outils tels que drupal-check. Cet outil en ligne de commande basé sur PHPStan vous permet d'analyser le code d'un module ou d'un projet pour y détecter les utilisations de l'API Drupal dépréciées.
Voici comment l'utiliser :
$ composer global require mglaman/drupal-check $ cd path/to/module/to/test $ drupal-check *
Suivant le module, le portage pourrait se révéler être une formalité de quelques minutes ou être plus complexe.
Pour plus de détails sur la procédure exacte, vous pouvez consulter la procédure de migration vers Drupal 9 du module contributeur YAML Content.
Si vous faites le choix de porter ce module, vous aurez la possibilité de réaliser un patch de la migration effectuée puis de le soumettre à la communauté pour qu’enfin ce module soit disponible en version Drupal 9 pour tous.
Analysez et faites évoluer le code de votre site
Une fois ces 2 premières étapes passées, votre projet Drupal 8 dispose d’environnements et de dépendances qui supporteront le passage à Drupal 9. Il va maintenant falloir s’attaquer au code custom de votre projet.
Là encore des outils comme drupal-check seront utilisés, pour détecter les incompatibilités et les corriger.
À la fin de cette phase votre projet est prêt pour une migration en douceur.
Mettez à jour les versions de vos dépendances
Si votre projet Drupal 8 utilise Composer (ce qui est très vraisemblablement le cas), il est nécessaire de passer en revue vos dépendances et adapter les restrictions de versions de façon à ce que celles-ci acceptent le passage à la version 9. En général, ce passage n’est pas permis par les restrictions utilisées, pour éviter justement les mises à jour accidentelles et non maîtrisées vers une version majeure.
Il vous faudra peut-être aussi revoir certaines règles pour appliquer les patches de migration que vous aurez réalisés ou récupérés sur les modules contributeurs non officiellement portés. Ce patch peut être appliqué automatiquement grâce au module composer-patches.
Exécuter la procédure de migration habituelle
Lorsque toutes ces étapes sont achevées, la migration s’effectuera de la même manière qu’une migration classique entre 2 versions mineures de Drupal 8.
Qu’en est-il de Drupal 7 ?
A l’aube de la sortie de Drupal 9, quatre ans et demi après la sortie de Drupal 8, il faut bien se rendre à l’évidence : Drupal 8 n’a pas réussi à s’imposer face à l’un de ses plus gros concurrents : Drupal 7.
Drupal 7 reste la version de Drupal la plus utilisée actuellement, et de loin. Fort de son succès et du fait de la crise sanitaire, la date de fin de support de Drupal 7 a été prolongée à novembre 2023.
Drupal 7 a déjà vu sa fin de support repoussée à plusieurs reprises à tel point qu’on pourrait se demander s’il ne survivra pas également à Drupal 9.
Quoi qu’il en soit, c’est un socle qui vieillit et qui n’évolue quasiment plus. Même si le nombre de sites qui l’utilisent encore le protège de tomber trop rapidement dans l’obsolescence, il convient de penser à l’avenir et d’envisager dès aujourd’hui la migration de Drupal 7 vers Drupal 9.
Cependant, si la migration Drupal 8 vers Drupal 9 est assez aisée, il n’en est pas de même pour la migration Drupal 7 vers Drupal 9.
Celle-ci devrait en effet se révéler plus complexe car aucune procédure de migration réellement fiable n’existe. Une approche est cependant recommandée pour la migration vers Drupal 8 et reste valable pour Drupal 9. Mais cette approche reste une trame qui nécessite souvent de nombreux tâtonnements, ajustements et plusieurs développements spécifiques pour pouvoir fonctionner. En outre, beaucoup de modules Drupal 7 n’ont pas été portés en Drupal 8 et leur remplacement nécessite également du travail.
Conclusion
La version 9.0 de Drupal est donc principalement un toilettage technique de la version 8.9 qui permettra à Drupal de repartir sur une base plus saine et des dépendances plus récentes pour poursuivre son évolution et proposer de nouvelles fonctionnalités dans les prochaines versions de Drupal 9.
Si vous souhaitez des conseils ou avez des questions relatives à votre projet, n’hésitez pas à nous consulter.
Si vous souhaitez développer ou consolider vos compétences Drupal, nous vous invitons à consulter notre offre de formations autour de Drupal.
En savoir +
- Notre expertise : migration Drupal 7 vers Drupal 9
- Notre page Drupal
- Référence : Migration Drupal 7 à 9 et évolutions du site Tramil, Parc Naturel Régional de la Martinique
- Référence : Portail Bruxelles Mobilité : migration et refonte du site grand public, Service Public de la Région de Bruxelles
Formations associées
Actualités en lien
Migration d'un site Drupal 7 en Drupal 11
Trucs, astuces et "bouts" de code pour migrer votre site web de Drupal 7 à Drupal 11. Compte-rendu d'une conférence donnée au Drupalcamp Rennes 2024.
Migration de Drupal 8 à Drupal 9
Retour d'expérience sur la montée de version de plusieurs sites de Drupal 8 à Drupal 9.
Varnish et Drupal 9 : le vidage de cache ciblé
La mise en place d'un cache de pages anonymes Varnish devant un Drupal 9 permet une mise en place relativement aisée d'un vidage automatique des pages mises en cache en se basant sur la politique de tags de Drupal. Cet article devrait vous donner les bases pour commencer à comprendre et expérimenter le système.