SymfonyCon 2023, retour sur les conférences

Nous avons assisté aux 2 journées de conférence de la SymfonyCon 2023, en plein coeur de Bruxelles. Dédié à l'écosystème Symfony et à ses partenaires, le SymfonyCon est un événement d'envergure internationale : 1200 participants, 3 pistes de conférences, et des speakers de haut vol.

Voici nos retours sur les conférences qui nous ont le plus marquées.

Get a grip on your project's supply chain - Nils Adermann

Nils Adermann est co-fondateur de Packagist, le registre de paquets utilisé par composer et nous présente dans sa conférence l'importante de maîtriser la supply chain de nos projets.

Fondamentalement, je ne me pose pas d'autre question que "combien de temps faudra-t-il pour télécharger tous mes petits paquets ?" lorsque je lance un composer install, et vous ?

Pourtant l'histoire récente et moins récente nous montre que nos applications reposent sur des milliers de dépendances dont nous ne maîtrisons pas la provenance et le contenu : une de ces dépendances peut être corrompue par une injection de code malicieux par exemple, ou encore supprimée.

Conférence, graphique du nombre d'attaques sur les supply chain logicielles

Ces cas réels affectent directement notre application, mais si l'on considère toute la chaîne d'approvisionnement liée à notre production logicielle, d'autres maillons faibles existent : notre fournisseur de CI indisponible, un datacenter qui prend feu, un système de ticketing ou de gestion de projet qui connait une rupture de service etc.

Dans cette conférence passionnante, en tant que développeur, c'est vraiment le sentiment de confiance aveugle dans les dépendances que nous utilisons au quotidien qui me saute aux yeux.

Des solutions existent pour diminiuer les risques liés à la corruption de nos dépendances :

  • Côté php, private packagist apporte des garanties sur le contenu de vos vendors
  • SLSA, Supply-chain Levels for Software Artifacts : une initiative de l'OSSF - Open Source Security Foundation - propose un framework pour améliorer la sécurité des supply chain logicielles, supporté par Google entre autre
  • L'industrie utilise déjà des outils spécifiques pour garantir la traçabilité des éléments utilisés dans une supply chain, CycloneDX est un projet OWASP qui vise à fournir un format de SBOM (Software Bill Of Materials), un standard pour tracer nos dépendances; un plugin composer existe pour exporter les dépendances d'un projet sous forme de SBOM, voici un exemple pour un projet symfony
Schéma  SLSA des risque dans une supply chain logicielle

Plus proche de notre quotidien, Nils nous invite à répondre à quelques questions simples :

  • Quels sont les services qui mettraient notre capacité de production à zéro en cas d'indisponibilité ?
  • Quels outils sont inutiles mais figurent encore dans notre palette quotidienne, sachant qu'ils représente un risque sans valeur ?
  • Pouvez-vous automatiser la mise à jour de vos dépendances (Dependabot) et surveiller les risques de sécurité (Snyk) ?

L'open source est une matière première fantastique pour créer nos applications, il convient de comprendre que toute la chaîne d'approvisionnement de ces applications est fragile et doit être protégée.

Les slides de la présentation

Keynote (Composant Terminal) - Fabien Potentier

Dans ce talk, Fabien Potentier nous présente un nouveau composant Symfony à venir : Terminal

Ce nouveau composant permet d'apporter une importante modernisation de l'interface du terminal, en s'appuyant sur des classes dédiées comme Color ou Style, qui remplacent les actuelles options passées dans la Console.

Fabien Potencier présente une démo du composant terminal

Fabien nous passe rapidement en revue les différents styles applicables via ce composant :

  • couleurs
  • font-weight, font-style
  • background
  • padding et margins
  • borders
  • alignements
  • etc.

Le résultat est plutôt convaincant !

Pour appliquer ces styles, et pouvoir les rendre réutilisables, le composant supporte l'utilisation de feuilles de style. Le principe est de s'appuyer sur ce qui fonctionne à la manière d'HTML et CSS.

Contrainte notable : Le terminal manipule des blocs de pixel et les styles appliqués sont parfois limités par cela. II est par exemple impossible de changer la font size.

Fabien nous présente ensuite les Widgets. Il s'agit de messages qui seront passés au model pour permettre d'apporter l'interactivité : Utilisation de la souris, scrollbar...

Fabien a terminé cette présentation par une live demo de ce composant avec l'utilisation d'un tableau stylisé dans le terminal, sortable et scrollable... Plutôt séduisant !

Le projet est complexe et sera mené sur plusieurs années, il permettra à terme de disposer en PHP d'une solution complète pour produire des interfaces CLI sur mesure.

Taming container environment maintenance: let's go Nix-ing! - Jérôme Vielledent

Dans sa conférence, Jérôme Vielledent nous dévoile un des ingrédients utilisés chez Platform.sh pour gérer les images proposées aux utilisateurs.

Initialement, l'offre de Platform.sh repose sur la maintenance d'une centaine d'images qui ont chacunes leurs particularités, et que la mise à niveau continue de ces images occupe 3 personnes plein temps.

Schéma de la gestion des dépendances par NixOS

La difficulté principale réside dans le besoin de faire coexister plusieurs applicatifs sur une même image alors que tous n'utilisent pas le même socle pour être compilé.

Dans un contexte idéal, une image se concentre sur une tâche, par exemple exécuter du PHP, et ceci est très bien géré par la technologie LXC, les containers natifs de Linux. Mais s'il devient nécessaire d'aggréger plusieurs binaires dans la même image (pour générer du pdf, traiter de l'image, du son etc.), le risque de conflit entre les librairies qui permettent de compiler et de faire fonctionner ces applicatifs grandit.

Le cas est particulièrement fréquent lorsqu'il faut faire appel à une version ancienne d'un applicatif.

Solution ? NixOS !

NixOs est à la fois un OS et une suite d'outils qui permettent d'isoler par un système de hash les librairies nécessaires au fonctionnement d'un applicatif dans une version données.

Nix permet donc de disposer de plusieurs paquets où chacun dispose des librairies qui lui sont nécessaires (dans un path prédictible par le hash) et ainsi de ne pas entrer en conflit avec les pré-requis d'un autre applicatif.

La solution n'est pas nouvelle, Nix fête ses 20 ans, et c'est avec une pointe d'étonnement que je la découvre : à l'opposé de la containerisation qui a joué un rôle important dans la diffusion de setups reproductibles, l'approche Nix semble à la fois plus efficace et puissante avec un traitement à la racine de la problématique des conflits de version.

Merci Jérôme pour ce focus, nous allons tester Nix dès notre retour ;)

Les slides : on les attends, ping @loic_emagma si vous les trouvez

TDD Styles: London VS Chicago

Diego Aguiar a fait 28 heures de voyage depuis le mexique pour venir donner son talk à Bruxelles, chapeau :)

Il nous présente en détail 2 façons de pratiquer le Test Driven Development, 2 approches qui ont chacune leurs forces et leurs faiblesses.

Schéma de l'organisation des briques dans le Chicaggo TDD

Le London style TDD est une approche qui met le focus sur le besoin utilisateur : en partant des actions que l'utilisateur doit pouvoir effectuer, Diego définit un test d'acceptance qui va couvrir tous les besoins et qui permettra de développer les fonctionnalités manquantes dans l'application, ainsi que les tests unitaires qui les couvrent.

Le Chicago style TDD prend le problème à l'inverse : en partant du niveau le plus bas "API", Diego définit le contrat que doit respecter son domaine pour ensuite impacter logiquement la couche de persistence, via des entités, et bien sûr créer une couche d'interaction avec l'utilisateur.

Dans le London style, l'UX est davantage prise en compte et le code sera plus difficile à maintenir si cette expérience doit évoluer, les tests cassent facilement.

Mais l'approche permet de réduire la complexité de l'architecture et finalement offre ce qui est nécessaire pour l'utilisateur.

Le Chicago style - inside-out - est plus adapté pour les sujets complexes sur lesquels le développeur fait le choix d'isoler la complexité dans des briques indépendantes aux responsabilités très claires.

En contrepartie, il rend plus facile la création d'architecture suringénierées et peut passer à côté de la question UX.

En attendant les slides, voici une ressource sur les 2 styles

Expression Language in Symfony: Beyond the framework - Rémi JANOT

Dans ce talk, Rémi JANOT nous présente le composant Expression Language (EL). Un outil puissant, largement utilisé dans l'ecosystème Symfony pour évaluer des expressions de façon simple.

Rémi à commencé par une introduction permettant d'illustrer quelques cas d'usages possibles :

  • Règles de promotion
  • Validation de formulaires
  • Génération de contenus dynamiques

En se basant sur un exemple concret de génération de formulaires dynamiques, il nous a ensuite présenté une revue comparant les différentes solutions techniques envisageables pour répondre à cette problématique (SQL Snippets, repositories, ...)

L'EL se révèle être un candidat solide dans ce cas d'usage, et Rémi est alors rentré plus en details sur les particularités de l'EL :

  • Il permet d'ajouter du dynamisme dans la configuration (administration)
  • C'est un langage simple, qui ne demande pas d'écrire du PHP
  • Il n'introduit pas de problèmes de securité
  • Il est extensible pour y rajouter ses propres fonctions et étendre les possibilités
  • Il peut être utilisé pour faire de l'évalution ou compilé (mise en cache)
  • Il est performant.

La fin de cette présentation a été consacrée à une demo très pertinente, dont le code est disponible ci-dessous, merci Rémi !

Le dépot de la présentation et celui du code de la démo

Hands-on with LiveComponents, AssetMapper, Turbo & Stimulus - Ryan Weaver

Dans ce talk, Ryan Weaver nous présente les dernières nouvelles de Symfony UX.

J'avais déjà eu un bel aperçu sur les live components la veille, puisque la conférence de Simon André n'ayant pas pu avoir lieu, Ryan l'avait remplacé pour nous proposer une belle session de live coding sur le sujet.

Il avait notamment été question des nouvelles possibilités des turbo actions pour permettre la transmission des paramètres de recherche dans l'URL. Très utiles lors de l'utilisation dans un formulaire de recherche par exemple.

Nous avions également vu des fonctionnalités faciles à mettre en oeuvre comme le debounce ou encore l'autosubmit.

Ici, Ryan a commencé par aborder l'Asset mapper, un outil de gestion moderne et simple pour la gestion des assets, avec ses deux features principales :

  • Assetpath : pour mapper et versionner les assets
  • Importmaps : pour gérer les imports js le plus simplement possible.

À noter qu'en version 6.4, il sera possible de prendre en charge l'import des CSS.

Du côté de Turbo, nous avons abordé les fonctionnalités en béta dans la version 8 : Morphing et View transitions avec une démo aux résultats assez bluffants.

Il en ressort que les possibilités offertes par tous ces outils semblent vraiment impréssionnantes.

Ce talk a particulièrement mis en avant la simplicité et la rapidité de leur utilisation, pour apporter un vrai gain en terme d'UX et de modernité dans nos applications Symfony.

La bonne humeur de Ryan était encore une fois au rendez-vous, excellente conférence !

Les slides de la conférence

Derniers articles