Résumé de Drupal Europe 2018

Créé le 26/09/2018

Dernière mise à jour le 22/09/2020

Étiquettes

Du 10 au 14 septembre 2018 a eu lieu Drupal Europe. L'événement Drupal européen organisé par la communauté, remplaçant la DrupalCon cette année.

Nous étions autour de 1000 participants sur 5 jours.

Sprints

Entity share

J'ai pu consacré du temps pour mettre à jour les issues du module Entity share :

  • réponse aux questions,

  • mise à jour des issues en attentes et résolues avec la version 8.6.x du noyau Drupal,

  • création d'un patch à l'état de POC pour la branche 2.x pour être compatible avec la branche 2.x de la JSON API.

Commerce licence

Avec Joachim, mainteneur du module Commerce License, nous avons avancé sur une fonctionnalité permettant de renouveler une licence avant date d'expiration.

Il reste des tests à écrire pour que le patch soit ok.

Jour 1

Jour consacré aux sprints.

Jour 2

CMI 2.0 updates and the best of config management today

État des lieux de l'initiative CMI 2.0.

Maintenant que plusieurs années se sont écoulées depuis la sortie de Drupal 8.0, nous pouvons prendre du recul sur les besoins des utilisateurs de Drupal concernant la gestion de la configuration. Cette initiative a pour but de combler les manques présents dans le noyau Drupal. Certains manquent sont compensés par des modules communautaires, mais pas tous les besoins ne trouvent actuellement de solution.

CMI 2.0 a pour objectifs principalement les points suivants :

  • Documenter :

    • le fonctionnement pour les utilisateurs

    • les outils pour les développeurs

  • Permettre des surcharges de configuration par environnement

  • Faciliter la création et la gestion des distributions

La surcharge de configuration par environnement peut être gérée avec les modules Config Split et Config Filter, mais le but est d'intégrer ce fonctionnement dans le noyau.

Pour les distributions, il y a le module Config Distro actuellement en cours de développement, la question est, est-ce que le fonctionnement de config distro permettra de résoudre tous ou la plupart des problèmes de gestion de configuration avec les distributions ?

Code with style! Prettier + ESLint

La présentation portait sur l'importance d'avoir des conventions de formatage de code, comment l'appliquer au JS, ainsi qu'au code PHP.

Pour le JS, les outils qui se sont succédés sont :

  • JS Lint : impossible à paramétrer,

  • JS Hint : configurable,

  • ESLint : plus configurable avec système d'extension pour surcharger des configurations existantes.

Pour le PHP, il y a PHP code sniffer, mais cela permet uniquement de faire de l'analyse de code.

Prettier, en revanche, est un outil de formatage de code, ce n'est pas un outil d'analyse du code. Il permet de formater le code directement dans l'IDE en suivant quelques règles simples.

Commerce 2.x for the business-specific - Feedback on a 2k person days project

Retour d'expérience sur un projet e-commerce, de 2 500 jours hommes, dans le domaine de la location de place de parking avec les services associés.

Grâce à l'architecture de Commerce 2.X, il a été possible d'adapter la solution Drupal Commerce aux besoins clients :

  • webservices pour fournir des données à d'autres applications,

  • calcul de prix et de disponibilité des places de parking complexe,

  • 2 tunnels d'achats,

  • nouvelles solutions de paiement,

  • ...

Ce retour d'expérience montre que Drupal Commerce n'est pas nécessairement à réserver pour petits sites ou sites ayant un besoin e-commerce simple, par exemple avec de « simples » catalogues.

Jour 3

Driesnote

Présentation par Dries Buytaert de l'état de Drupal.

Présentation des avancées des initiatives :

  • expérience des contributeurs : utilisation du profile de démo Umami pour montrer les avancées en média, layout builder, workspace.

  • expérience des développeurs : renforcement des webservices de Drupal, avec comme utilisation pratique une nouvelle interface d'administration.

  • documentation : comparaison du temps et nombre de clics pour arriver à installer un site Drupal par rapport à Symfony, Wordpress et Laravel. Grand pas en avant avec un travail sur les pages de documentation de Drupal.org et la possibilité d'installer un site Drupal en 3 clics.

  • extension de la durée de la période de sécurité des versions Drupal. Désormais les versions de Drupal 8 auront une durée de vie d'un an permettant de plus facilement préparer les montées de version.

  • marketing : début de résultats pour l'initiative de promotion de Drupal 8.

Avec l'extension de la durée de vie des versions de Drupal 8, l'autre grande annonce qui va permettre de plus facilement se projeter sur le long terme est l'année de sortie de Drupal 9.

Drupal 8 s'appuyant sur Symfony, il faut suivre les dates de fin de vie des versions de Symfony. Symfony 3 ayant son support sécurité se terminant en 2021, il faut que Drupal soit compatible avec Symfony 4 (au moins) d'ici là. Un changement de version majeure entraînant des cassures de rétro-compatibilité, cela force la sortie de Drupal 9.

Ce qui n'est pas plus mal, cela permettra de retirer tout le code concernant des parties dépréciées.

Afin de laisser le temps aux utilisateurs de faire la montée de version, Drupal 9 sera sortie en 2020. De plus, comme Drupal 9 sera sortie, cela entraînera que Drupal 7 ne sera plus maintenue à partir de cette date, les 2 dernières versions majeures sont supportées. Mais le support de Drupal 7 sera étendue jusqu'en 2021 pour se synchroniser avec la fin de vie de Drupal 8 car avec la fin du support sécurité de Symfony 3 en 2021, Drupal 8 ne sera plus maintenu.

Ce qui signifie qu'en 2021, théoriquement, tous les sites Drupal seront en Drupal 9 ce qui va permettre de recentrer les efforts de la communauté sur une unique version de Drupal.

Il y a quelques années avec l'adoption du cycle de sortie d'une version mineure tous les 6 mois et l'ajout constant de nouvelles fonctionnalités, on ne pouvait pas prédire la date de sortie de Drupal 9. Il était envisagé que ce soit l'ajout de la gestion des médias dans le noyau qui provoque le passage à Drupal 9, finalement il n'en sera rien.

Mais désormais, on peut plus sûrement prédire la sortie de Drupal 10 qui sera certainement préparée par rapport à la fin du support de la version de Symfony sur laquelle Drupal 9 s'appuiera.

De plus, cela signifierait que Drupal 9 serait sur une version non supportée de Symfony, donc Drupal 9 ne serait plus supporté et on entrerait dans un cycle où une seule version majeure de Drupal serait supportée.

Une autre information importante est que prochainement la partie Git de Drupal.org va migrer sur Gitlab.org, avec migration et ajout de fonctionnalités progressivement.

Cela va permettre de fluidifier le travail des contributeurs en facilitant la manipulation des revues de code, des merges, etc.

Sell it again: licenses and subscriptions on Drupal Commerce

Présentation de l'écosystème de modules Drupal Commerce autour des licences et des sous-scriptions.

Ces modules apportent la notion de licence permettant de vendre de :

  • l'accès via un rôle : standard ou OG,

  • la modification de valeur de champs d'entité : il est ainsi possible de vendre la publication d'un contenu par exemple.

Une licence peut être permanente ou avoir une date d'expiration. Pour le renouvellement, il est possible de paramétrer des modes de renouvellement (tous les mois le premier jour du mois, dans 3 mois à compter de la commande, etc.).

Pour les licences à renouvellement à date fixe, il est possible de mettre en place des règles de déduction du prix pour éviter de payer par exemple 6 mois d'abonnement au prix d'une année entière.

Au niveau du fonctionnement interne, l'écosystème de module s'appuie sur la possibilité apportée par Drupal Commerce 2.X de créer des bundles via plugins.

Enrich your Paragraphs workflow with features you didn’t know about

Présentation de fonctionnalités intéressantes du module Paragraphs, mais qui nécessitent des développements. Certaines fonctionnalités étaient déjà présentées aux Drupal Developer Days 2017, mais au statut expérimental.

  • Behavior : métadonnées sur chaque paragraphe permettant d'altérer le comportement.

  • Library : sous-module permettant de réutiliser des paragraphes, son fonctionnement étant le suivant :

    • le contenu a un paragraphe de type paragraphe de la bibliothèque

    • le paragraphe de la bibliothèque référence un nouveau type d'entité « paragraphe de la bibliothèque ».

    • l'entité paragraphe de la bibliothèque possède un champ paragraphe qui va contenir le paragraphe réutilisable

    • cela ajoute donc 2 entités intermédiaires pour avoir des paragraphes réutilisables ce qui peut rebuter l'utilisation de cette bibliothèque de paragraphe.

  • Drag&Drop : nouvelle interface permettant lorsque dans un champ paragraphe il y a une arborescence, de manipuler l'arborescence facilement et permettre de changer des paragraphes de niveau. À tester également si l'entité a plusieurs champs paragraphe, de passer des paragraphes d'un champ à l'autre.

  • Groupe de type de paragraphe afin d'améliorer l'UI.

  • Déclarer de nouvelles actions : par exemple une action fournie par la librairie est de sortir un paragraphe de la librairie afin de modifier le paragraphe sur une contenu particulier.

  • Traductions : les champs paragraphes ne sont pas traduisibles, mais les paragraphes oui.

  • Modération de contenu : ne pas activer la modération de contenu sur les paragraphes mais sur l'entité parente.

Breaking the double digit, no wait, double digit millions, barrier for products.

Retour d'expérience d'un projet Drupal Commerce 2.x d'un site vendant des livres aux étudiants.

Tout comme le retour d'expérience sur le site de location de place de parking, Commerce 2.x a été adaptable aux besoins clients.

Au niveau technique, le point qui est revenu régulièrement a été l'utilisation de la Queue API de Drupal afin de traiter en continue les mises à jour des données produits et autres traitements nécessaires au fonctionnement du site.

Migrate n'a pas été utilisé car il ne convenait pas aux besoins du projet. Pour certaines Queue, il a été fait usage du module Advanced queue fournit une API plus fournie que celle du noyau, notamment au niveau de la gestion des relances des traitements en erreur.

Jour 4

Improving the Editor Experience: Paragraphs FTW

Présentation du module Paragraphs et de comment s'en servir.

Advanced Solr - Build Data Driven Features

Présentation de fonctionnalités sur l'intégration Solr avec le module Search API Solr Search.

Les démonstrations s'appuyaient sur le profile Umami, auquel par exemple un système de vote a été ajouté. Permettant au passage de voir que les modules de votes pour Drupal 8 fonctionnent (a minima pour des démos).

Les fonctionnalités qui m'ont marqué été :

  • les streaming expressions : permettant par exemple de mettre à jour l'index de recherche à la volée, via Solr, lors d'un vote. Afin d'avoir des données plus fraîches que s'il fallait attendre une ré-indexation de l'entité et sans chute de performance si la réindexation était paramétré pour être immédiate.

  • possibilité d'ajouter la logique d'interrogation de l'index pour par exemple avoir un système de recommandations se basant sur les notes des votes de l'utilisateur par rapport aux notes des votes des autres utilisateurs.

  • LTR (learn to rank) : pour avoir des règles de pertinence spécifiques.

Ces fonctionnalités s'appuient principalement sur du code spécifique et pour certaines également quelques paramétrages.

Le code de la présentation est disponible dans le dépôt : https://github.com/mkalkbrenner/search_api_solr_drupaleurope

Jour 5

Jour consacré aux sprints

Conclusion

Très bon événement qui a permis d'avancer sur des sujets de sprint et de rencontrer ou revoir des personnes de la communauté française et internationale.

Des soirées communautaires à proximité du lieu de l'événement, pour celles auxquelles j'ai assisté en tout cas. Avec pour une fois, une « pré-soirée » avec des jeux de société, ce qui change de l'ordinaire. Ce serait intéressant à proposer aux événements français.

Merci aux organisateurs, aux sponsors, aux participants et à Smile pour m'y avoir envoyé.

Commentaires

Ajouter un commentaire