Résumé des Drupal Dev Days 2018

Créé le 09/07/2018

Dernière mise à jour le 06/11/2021

Étiquettes

Du 2 au 6 juillet ont eu lieu les Drupal Dev Days de 2018. Cette année, ils avaient lieu à Lisbonne où 404 participants ont pu se retrouver pour assister à des keynotes, sessions, bofs et sprinter.

Voici un résumé des sessions auxquelles j'ai assisté et des sujets sur lesquels j'ai sprinté.

Sprints

Entity share

J'ai pu consacrer du temps à faire avancer Entity share :

  • test de bugs signalés

  • merge de patchs

  • réponse aux questions

Je n'ai pas fait de nouvelle version, car étant passé sur la branche 2.x de la JSON API (version qui sera intégrée dans le noyau Drupal), Entity share ne fonctionne plus lorsque des champs timestamp ou date sont impliqués. De plus, la dernière version de développement de JSON API Extras ne fonctionnait également plus.

Afin qu'Entity share soit réparé et pour éviter que le module ne fonctionne à nouveau plus lors de changement dans la JSON API, il faudra explorer une solution proposée par Wim Leers. Cependant cela implique de revoir le fonctionnement interne d'Entity share et je ne sais pas encore quand est que j'aurai le temps de reprendre cela.

Drupal Composer : drupal-l10n

Le hasard a fait que le premier jour j'étais situé à proximité de Webflo, administrateur du groupe drupal-composer sur Github. J'ai donc pu le rencontrer et le relancer sur des merge requests sur les outils drupal-composer.

Je suis assez content que ce point sur Drupal Composer ait pu avancer. Vu que cela faisait un peu plus d'un an que j'avais fait les merge requests et que je devais régulièrement les mettre à jour. Reste uniquement https://github.com/drupal-composer/drupal-scaffold/pull/58 à merger.

Local Community Distribution

Il y avait déjà une initiative de faire une distribution pour les différentes communauté Drupal avant ces Drupal Dev Days. Elle a pu progresser durant l'événement.

J'ai présenté aux personnes impliquées le socle Drupalcampfr et la version Drupal 8 en cours de développement du site Drupalfr et me suis proposé pour rester en contact avec elles pour répondre à leurs questions.

Au niveau du theming, ils vont a priori reprendre le thème Drupalfr qui leur a bien plus en terme de charte graphique. À voir car le thème de drupal.nl était déjà proposé.

Drupalfr

Nous avons mis en ligne une bannière sur le site Drupalfr pour la promotion de Drupal Europe.

Et principalement avec Floris Moriceau, nous avons pu avancer sur le theming pour sa part, sur des fonctionnalités (workflow offre d'emploi, image style, contenu par défaut, etc.) pour ma part.

Jour 1

Jour dédié aux sprints.

Jour 2

Keynote : Friction

Retour sur le cycle de développement de Drupal avec Drupal 7 et le système de feature freeze et UI freeze qui fait que Drupal 7 n'a quasiment pas évolué depuis sa sortie.

Donc cela a fait que par exemple des parties manquantes de l'Entity API ont dû être comblées via le module contrib Entity API.

Drupal 8 avec son nouveau cycle de développement et de sortie d'une nouvelle version mineure tous les 6 mois et le système des modules expérimentaux, permet d'évoluer.

Désormais les modules expérimentaux ne sont mis dans le noyau que lorsqu'ils atteignent un niveau de stabilité beta pour éviter des problèmes comme avec Content moderation qui a dû changer sa structure sans chemin de migration des données, car il était en alpha, mais du coup des utilisateurs ayant ignorés les avertissements sur le fait qu'il s'agissait d'un module expérimental ont eu des problèmes.

Sur la dernière année, il y a eu 70K sites Drupal 8 en plus et 105K sites Drupal 7 en moins enregistrés dans le système de statistiques de Drupal.org.

Il ne faut pas s'affoler par rapport à ces chiffres par rapport à des articles qui peuvent dire que Drupal est en perte de vitesse car cela fait moins de sites au total.

Les utilisateurs ont évolués :

  • certains n'ont jamais utilisé Drupal 7 avant et sont donc des nouveaux utilisateurs avec Drupal 8,

  • d'autres se rendent compte que Drupal n'est pas forcément la solution la plus adaptée à leur besoin avec l'expérience de leur utilisation,

  • au niveau Drupal Commerce, des personnes se tournent vers Drupal 8 pour Drupal Commerce,

  • désormais le CMS est de plus en plus choisi par le département marketing que par la DSI des entreprises.

Objectif de retirer la friction à la découverte et à l'adoption de Drupal. Simplifier le processus de découverte.

Sur la page pour tester Drupal, il est grosso modo indiqué « essayez Drupal, montez un environnement en 20 minutes », sauf que les personnes qui essaient Drupal n'ont pas 20 minutes.

Points positifs / d'avancées :

  • profil de démo Unami

Points négatifs :

  • une version en ligne prête à l'emploi manquante

  • utilisation de Composer

Points à explorer :

  • Concept « d'experienceReports » du langage Go qui permet de collecter rapidement et simplement les impressions et les problèmes rencontrés durant le processus de test de Drupal.

  • Vote sur les issues pour les prioriser.

  • Telemetry initiative : afin de collecter par exemple les versions de PHP utilisées et donc pouvoir plus facilement prendre des décisions pour prioriser le travail des contributeurs dont le temps n'est pas illimité.

Overview of GDPR modules for Drupal

Présentation des modules GDPR, en partant des points à implémenter sur un site. Pour chaque point les modules concernés sont listés ainsi que leur pourcentage de couverture fonctionnelle, difficulté de mise en œuvre, stabilité de la dernière version est résumée.

Il y a actuellement trop de modules qui traitent des points du RGPD et donc duplication de l'effort et cela ajoute de la difficulté à trouver les bons modules.

Quelques modules que je n'avais pas rencontré lors de recherche sur le sujet :

  • GDPR Tag manager,

  • Blizz vanisher,

  • CookieBot,

  • Cryptolog,

  • IP anonymize.

Twig and twig.js: A magical tale about 2 families, and about art, magic, heroes and villains

Twig JS permet de gérer du HTML via Twig tout en permettant à du Javascript de facilement remplacer des parties de HTML sans avoir à connaître la structure HTML.

Par exemple un template Twig est passé à un fichier Javascript via des settings Drupal, le Javascript peut alors utiliser cette variable pour re-générer le HTML avec les variables Twig et remplacer le HTML existant en ayant juste à sélectionner un élément parent.

Cela a l'air sympathique, mais il y a les problèmes suivants :

  • traductions : le tag Twig « trans » n'existe pas dans Twig JS,

  • lorsque dans Drupal on affiche un objet {{ content }}, Drupal sait comment rendre cet objet, Twig JS non,

  • Twig JS pèse 83 Ko.

Tests d'utilisation de Underscore JS, plus léger que Twig JS et inclus dans le noyau, pour faire un « twiglight ».

Symfony Framework style API building in Drupal

Présenter par quelqu'un venant du monde Symfony et ne faisant pas ou peu de Drupal.

Dans un contexte de site Drupal servant de backend pour des webservices, comment utiliser certains composants Symfony dans Drupal.

  • L'autowiring pour déclarer les contrôleurs en tant que services et ne plus avoir à utiliser la méthode « create » pour l'injection de dépendance.

  • Déclarer les contrôleurs avec des annotations et ainsi gérer également leur route dans l'annotation : un module existe pour cela.

  • Déclarer les métadonnées de cache via des annotations.

  • Comment désactiver le cache même sur le système de route et le conteneur de service.

À voir ce qui sera utilisable en dehors d'un contexte d'expérimentation.

Building a citizen portal for 100+ services using a microservices arcitecture

Pouvoir fournir un système de webservices génériques et avec génération automatique des formulaires front.

Création d'un type d'entité de contenu avec bundle. Chaque bundle représente un service et ainsi chaque service peut avoir ses propres champs.

JSON schema est utilisé pour générer les formulaires front par rapport à la structure du bundle.

Gestion via les form mode de l'ordre des champs et des formulaires multi-étapes.

Pour la première version du projet, et parce qu'il est compliqué (voir impossible) avec des modules comme conditional fields de pouvoir mettre des conditions sur un champ à une étape N par rapport à la valeur d'un champ à l'étape N – X, le multi-étape est en fait géré via du Javascript, la totalité du formulaire est présente sur la page, mais seule l'étape courante est affichée à l'utilisateur et ainsi conditional fields ou la State API de la Form API, peuvent fonctionner.

How to delight content editors with UX when building Drupal 8 websites

Quelques modules et thèmes pour améliorer le back office :

  • Adminimal admin theme,

  • Adminimal admin toolbar,

  • Material admin,

  • Admin toolbar,

  • Autocomplete deluxe,

  • Plus utiliser le module Shortcuts du noyau.

Exemple du thème d'administration du site « mass gov » où un gros travail a été fait par exemple sur la page node/add pour la sélection du type de contenu à créer, avec image d'aperçu, description précise de quel type de contenu à utiliser dans quel cas. Filtres de recherche pour filtrer la liste des types de contenu.

Module Tour : possibilité de mettre un paramètre « ?tour » dans l'URL pour déclencher Tour. Pratique si l'utilisateur n'a pas accès au bouton Tour de la barre d'administration.

De manière générale en terme d'approche lors du recueille de besoin, ne pas hésiter à demander aux utilisateurs le nom des champs tels qu'ils les nomment dans leur métier ou souhaitent les désigner. Sinon observer comment travaillent les utilisateurs dans leur quotidien.

Jour 3

Today, my friends, we’re going to Change the World...

Keynote Today, my friends, we’re going to Change the World...
Légende

Rachel Lawson durant sa keynote.

Une citation « You take risks, you get reward. » : lors du voyage de Rachel Lawson au Maroc et avec un hôtel dont l'extérieur pouvait dérouter mais dont l'intérieur était magnifique.

Histoire du site « War child » refait en Drupal, ce qui a permis de doubler le taux de conversion des visiteurs en donateurs.

Avec ces ressources en plus, Cela a permis à l'ONG de retrouver les parents d'un enfant de Mossoul capturé par ISIS, puis libéré, et en attente dans un camp de réfugiés.

State of Layout Management in Drupal

Présentation des différents outils pour la gestion de l'affichage en Drupal 8, avec focus sur le module Bricks. Le présentateur était le mainteneur du module.

Il n'y a pas une stratégie unique pour la gestion de l'affichage des contenus, il faut étudier par rapport au besoin du projet.

Le présentateur voulait montrer l'utilisation de :

  • block layout (core) : pour l'affichage des blocs globaux du site, exemple en-tête et pied de page.

  • field layout (core, expérimental) : pour gérer des régions au sein des entités de contenus.

  • bricks : pour gérer des régions, système de grille et imbrication, au niveau d'un champ.

J'avais testé le module Bricks il y a un mois environ et en effet cela à l'air sympathique, mais :

  • cela reste un nouveau type d'entité, certes la relation entre ces entités est sérialisée dans le champ et il n'y a pas besoin d'avoir un champ référence dans un type de brick pour faire une arborescence,

  • le module utilise le module ECK, ce qui engendre une dépendance sur un module dont en Drupal 8 on peut se passer avec la nouvelle API d'entité,

  • Il faut créer les différents types de brick, ce qui revient à créer ses types de paragraphes.

Pour réellement se passer du fait d'avoir beaucoup de paragraphes à charger pour gérer des systèmes de grille ou de l'imbrication (carousel), je pense que le module qui va révolutionner la manière dont on structure les sites est le module « Layout Builder », actuellement au statut expérimental dans Drupal 8.6.x. Mais il faudra certainement attendre une ou deux versions mineures pour que le module soit stable et par exemple que des problématiques comme l'intégration avec Search API (est-ce possible d'indexer une information provenant d'un bloc placé avec Layout Builder ?) ou la traduction soient résolues.

Progressive Web Apps for all Drupal sites

Présentation du concept et des pré-requis des PWA.

Le module PWA permet de précaché les URLs visitées pour une utilisation hors ligne.

Les service workers sont retirés lors de la désinstallation du module ce qui évite d'avoir des services worker zombies sur les navigateurs.

Les fonctionnalités suivantes ne sont pas fournies dès l'installation du module, en même temps, il est difficile de faire des choix généraux sur ces fonctionnalités :

  • le push de notification,

  • la synchronisation en tâche de fond : afficher d'abord la page en cache navigateur puis la rafraîchir,

  • choisir une stratégie de cache.

Il existe un outil dans chrome dev tools pour tester si un site marche en mode pwa.

Actuellement le module permet d'afficher sur une page non visitée un message « Vous êtes hors ligne » plutôt qu'une page d'erreur réseau.

Modern Javascript for Drupal Developers

Histoire des ES de Javascript, avec présentation des nouvelles possibilités apportées.

Je ne fais pas assez de Javascript pour saisir le contenu et les subtilités de cette session.

Le présentateur, core Javascript mainteneur, a un excellent niveau et est passionné par son sujet, mais peut être la forme a fait que l'information n'est pas passée :

  • les nouveautés étaient vite passées en revue : peut être qu'il y en avait trop à présenter,

  • les exemples donnés n'étaient pas significatifs : constamment avec des « a = b », « c = 1 » et autres formulations similaires, alors que je pense qu'en donnant des exemples plus concrets voir directement du code du noyau, cela aurait eu plus de sens.

Et au niveau du fond, j'ai trouvé certaines syntaxes, présentées comme révolutionnaires, plus compliquées à lire et à comprendre que les « anciennes » syntaxes.

Reusability is overrated, administrability overlooked. The unwritten laws for a successful frontend development.

Méthodologie pour organiser le travail front afin d'obtenir un résultat de qualité, maintenable et évolutif.

  • Le développeur front doit participer / plus participer à l'analyse des maquettes afin de prévoir au plus tôt les problèmes.

  • Il y a toujours des questions à poser au designer.

  • Vérifier que le markup de Drupal va être compatible avec le design afin de soit adapter le design, soit prévoir les points de développement.

Au niveau de la structure du CSS :

  • Tout changement de style à la fin du projet doit être aussi facilement implémentable qu'au début du projet.

  • Le but du code n'est pas d'être le plus élégant ou le plus efficace ou le mieux factorisé, mais d'être du code qui permet des changements à n'importe quel moment.

  • Dans l'ordre d'imbrication des fichiers SASS (ou autre préprocesseur CSS), qui est à quelques détails près la méthodologie SMACSS, on trouve :

    • utility : contient les mixins, variables, et autres outils,

    • base : style de base (a, p, body, etc.), les couleurs, le système de grille, la typographie,

    • components : les formulaires et autres composants HTML,

    • layout : les paragraphes, les blocs, les types de contenus, etc.

  • Mise en place du thème (utility, base, components) : Nécessite beaucoup de coordination / consensus entre les thémeurs.

  • Style des layouts (layout) : peut se faire en parallèle, une seule règle, on ne touche plus au contenu des fichiers utility, base et components, sinon il faut que l'équipe se re-coordonne sur ces points.

  • Découper le travail par composant et non par page.

  • Arborescence de fichier : nom du fichier SASS = sélecteur de base du fichier, pas d'autre sélecteur dedans. Implique qu'uniquement à la lecture du nom de fichier on sait ce qu'il y a dedans à l'avance et lorsqu'un sélecteur n'existe plus car par exemple il concerne une vue ou un type de contenu supprimé, on peut supprimer sans risque le fichier SASS.

  • Lors de l'utilisation d'une librairie externe, si cette librairie fournie également un style, il faut que ce soit une option à activer (opt-in) et non activée par défaut (opt-out). Avec Drupal 8 et la clé libraries-overrides des thèmes il est facile de ne pas inclure de fichiers CSS de librairies externes.

Jour 4

An update on Drupal 8.6

« Embrace the chaos ».

En prenant la vision d'une personne venant contribuer pour la première fois, une salle de sprint ou les issues queue sur Drupal.org, sont pleines de gens déjà impliqués et occupés s'activant sur des sujets nécessitant plus ou moins de concentration.

Où dois-je aller pour commencer ?

Si on est seul et que l'on commence par prendre une issue au hasard, même si marquée « novice », on risque de s'enliser et de se démotiver. Il vaut mieux aller voir les leaders des initiatives ou des sujets de sprint qui auront toujours quelque chose à confier aux débutants, ou les mentors qui sont là pour aiguiller et pour faire rentrer les nouveaux contributeurs progressivement dans le processus de contribution.

C'en est suivi un tour d'horizon des différentes initiatives.

https://www.drupal.org/about/strategic-initiatives : avec dans la sidebar, l'agenda des réunions des initiatives.

TDD - Test Driven Drupal

Présentation sur comment faire du test automatisé avec Drupal 8. Récapitulatif des différents types de tests et de leurs bénéfices.

Une des difficultés lors de l'écriture de tests est de savoir ce que l'on veut tester. Par exemple, dois-je tester le rendu HTML d'un bloc ou tester le « renderable array » qui compose son contenu ?

En fin de session, j'ai pu poser la question s'il était possible d'utiliser CMI et la configuration exportée avec lors d'un projet pour constituer la mise en place des pré-requis de tests.

En effet, Il y a quelques mois sur un projet utilisant CMI pour la gestion de la configuration, il était compliqué de devoir exporter la configuration dans un module de test pour pouvoir l'utiliser dans les tests, quid de la maintenance de cette configuration ? Mais impossible d'utiliser la configuration exportée et il aurait été trop long de scripter la mise en place des types de contenus, champ, etc. nécessaire à ces tests.

J'ai été content que le présentateur me réponde qu'il avait également tenté cette approche pour les pré-requis de tests automatisés fonctionnels. Et malheureusement il avait rencontré les mêmes problèmes et ce n'est pas possible.

Peut être qu'avec l'initiative CMI 2.0 et la possibilité, sans module contrib, d'utiliser une configuration existante pour installer un site à ce moment là cela sera possible.

BOF GDPR

J'ai participé à la bof sur le RGPD, Le CR de la session est accessible en ligne. Les différents points issus de cette discussion sont :

  • créer une démo pour avoir un exemple concret de site respectant le RGPD et ainsi montrer quels modules utilisés et comment les utilisés,

  • centraliser les fonctionnalités des modules liés au RGPD dans un seul module pour éviter la dispersion d'effort et la facilité de trouver une solution,

  • mise en avant du fait qu'actuellement dans le module gdpr il n'y a rien concernant les enfants,

  • il est urgent de mettre en place les APIs nécessaires pour que les autres modules contrib puissent se brancher dessus.

Après un rapide consensus, les discussions se poursuivront sur drupalchat.eu, canal gdpr.

Jour 5

My Drupal Mid-Life Crisis

Présentation par Robert Douglass de son parcours à vouloir créer un site Drupal 8 pour le fun après 7 ans sans faire de Drupal.

Présentation très intéressante, qui fait un peu écho à la keynote Friction, qui montre à chaque étape les bonnes et mauvaises surprises de quelqu'un ayant déjà fait du Drupal et ayant été un mentor pour de nombreux piliers actuels de la communauté.

Quelques exemples :

  • Pourquoi le module Fivestar ne marche pas, et les autres modules de vote sont instables ?

  • Comment cela se fait que le module Rules, dans le top 30 des modules les plus utilisés avec plus de 300 000 sites qui l'utilisent, qui pourtant a son propre logo, a eu une levée de fond pour accélérer le portage sous Drupal 8, est maintenu par des personnes brillantes de la communauté, ne soit pas stable voir utilisable en Drupal 8 ?

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.

De bonnes soirées communautaires pour discuter et échanger.

Je pense aller de moins en moins aux keynotes et sessions. En effet, je suis d'assez près, même si je peux passer à côté d'une information, l'actualité Drupal entre :

  • le planète Drupal.org,

  • le planète Drupal.fr,

  • Twitter,

  • les newsletters Drupal.org,

  • la newsletter de Dries,

  • le visionnage des vidéos des sessions des Drupalcon et autres événements.

Et en conséquence, j'apprends assez peu de nouveautés, et lorsqu'il y a une nouveauté, exemple Twig JS, ce n'est pas toujours utilisable.

Il y a d'autres sujets que je n'ai pas encore expérimenté, comme le headless, mais avant d'assister à des sessions sur le sujet, il vaut mieux avoir un peu pratiquer ou chercher soit même avant d'y assister.

Je préfère me concentrer sur les sprints pour les rendre plus productifs. En effet, il est compliqué de sprinter, s'interrompre pour aller à des sessions, revenir sprinter, s'interrompre à nouveau, etc. Et à un moment donné, il n'y a que la pratique pour progresser en rencontrant de vrais problèmes.

Au pire, une fois le/la présentateur/trice d'une session identifié/e, il est possible d'aller lui poser une question en dehors de sa session. De plus les sessions sont enregistrées et le support de présentation mis en ligne.

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

Commentaires

Ajouter un commentaire