PHPnews.io

SymfonyLive Paris 2022 - En chair et en os

Written by JoliCode / Original link on Apr. 11, 2022

Après 2 ans d'absence, le SymfonyLive faisait son retour en physique à la Cité Internationale Universitaire de Paris et nous a permis d'assister à un nouveau cycle de conférences de qualité ! Petit tour ce que nous y avons (re)découvert !

Keynote

L'ouverture du SymfonyLive Paris 2022 s'est faite avec un beau teasing de Fabien : "Twig 4"… mais pas tout à fait.

En réalité, il nous a raconté l'histoire d'un bug dans le composant ExpressionLanguage (plus précisément dans l'expression matches), de comment il a été corrigé (rappelant dans la foulée la procédure pour contribuer à Symfony) et comment cela a provoqué au passage une régression dans un cas particulier.

Il nous a aussi appris que ce composant ExpressionLanguage est en fait à la base, une extraction d'une partie de Twig et qui a évolué en parallèle. Et c'est justement cette divergence qui a donné lieu, au fil des années, à plusieurs contributions à la fois sur le composant et sur Twig (quand l'un des 2 n'était pas oublié).

Et c'est cela qui a fait imaginer à Fabien une absorption de Twig dans Symfony en tant que composant dans Symfony 6.2 (profitant de l'outillage et la communauté de Symfony). Nous passerions donc directement de la version de Twig 3 à la version 6.2 !

Symfony et son éco-système

Un composant au sens Symfony du terme est une librairie de code autonome, au titre qu'elle peut être utilisée dans ou en dehors du framework. Alexandre Daubois nous en a d'ailleurs présenté quatre. Quatre composants de Symfony peu ou mal connus, et pourtant utiles dans certains contextes :

Traditionnel sujet pour Nicolas Grekas, nous avons pu profiter d'une présentation (loin d'être exhaustive) de certaines nouveautés dans Symfony depuis un an :

Notons qu'il est important de suivre les annonces officielles via le blog de Symfony, afin d'être au courant d'événements comme la coupure des serveurs Symfony Flex (au profit d'un hébergement des recipes sur GitHub), et d'anticiper ce qui peut casser nos applications ou leur déploiement.

Nicolas nous a également rappelé l’importance de mettre à jour nos applications régulièrement, via un composer update tous les débuts de mois, et une montée de version mineure tous les 6 mois. Enfin, il a tenu à parler de ce qui fait la force de Symfony, à savoir sa communauté :

Manipuler de la donnée

Deux JoliCodeurs étaient speakers à cette édition ! Marion a présenté "comment valider dynamiquement de la donnée avec Symfony", sujet dont nous avions déjà parlé sur le blog. Au-delà de la validation en général avec Symfony, c'est une mécanique complète pour valider des données complexes, sans en connaître préalablement les contraintes que Marion nous a exposé. Le tout, en parlant de Pokémon et d'évolution.

sflive-paris-2022-validation-conf.jpg

Une fois ces données validées, nous avons pu voir comment les enregistrer en base de données tout en conservant leur typage côté PHP. En effet, lors de son talk Doctrine, objet typé, et colonne JSON, Grégoire nous a montré différentes solutions potentielles pour répondre à la problématique, en expliquant pourquoi chacune de ces solutions n'était pas optimale. In fine, il nous a détaillé la solution retenue, qu'il utilise sur plusieurs projets : créer son propre type custom Doctrine, étendant le type natif json.

Sécuriser nos applications

Autre axe abordé lors de cette SymfonyLive, celui de la sécurité. Nous retenons ainsi la conférence de Marion Agé, qui est revenue sur le fonctionnement de la brique de sécurité dans Symfony, notamment la séparation entre authentication (aka "qui est connecté ?") et autorisation, le système de Voter pour centraliser la logique des autorisations, etc.

Elle a également abordé les changements apportés par la nouvelle version de cette brique : nouvelles interfaces, Authenticators responsables de transformer une requête en Passport et Badges, adieu l'authentification anonyme et bonjour la non-authentification. En parlant d'Authenticators, nous notons que les besoins les plus classiques sont couverts nativement, que de nombreux autres sont disponibles dans la communauté et qu'il est évidemment possible d'écrire son propre authenticator pour répondre à n'importe quel besoin.

Autre conférence sur le même thème, Karim Pinchon nous a parlé des tokens JWT, en faisant tout d'abord un rappel sur ce qu'était JWT (JSON Web Token), les différentes formes (JWE, JWK, JWS, etc) ainsi que certaines attaques possibles à connaître : modifications des algorithmes dans les headers, brute force pour trouver le secret, modification des données chiffrées, etc.

Nous notons en résumé qu'il est conseillé de ne pas accepter tous les algorithmes de signature, qu'il vaut mieux préférer l'asymétrique mais surtout qu'il faut utiliser une librairie connue et éprouvée plutôt que d'écrire son propre système de vérification.

Une ouverture sur le monde

Plusieurs conférences portaient sur des sujets un peu moins techniques. On notera, par exemple, la conférence de Jérôme Vieilledent sur le temps. Avec des aires de sujet philosophique, Jérôme a réussi à faire le lien entre cette notion de temps et notre métier, le temps passé dans l'exécution de notre application étant corrélé à la consommation de ressources. Comme nous ne pouvons pas optimiser ce que l'on ne sait pas mesurer, il est revenu sur la différence entre le profiling, qui consiste à mesurer les performances à l'instant T, et le monitoring, plutôt lié à une surveillance en continue. Il appelait ainsi à une réflexion collective sur d’autres unités de mesures que le temps (ou la rapidité) pour mesurer la qualité de nos applications.

De son côté, Titouan Galopin nous a parlé de la plateforme "En première ligne" qu'il a eu l'occasion de créer au début de la crise du Covid pour mettre en relation des volontaires et des personnes ayant besoin d'aide. Il nous a expliqué en quoi le choix de Symfony a été pertinent et leur a permis de gagner du temps pour la réalisation du site. En abordant également un autre projet auquel il a participé pour aider les Ukrainiens lors du conflit en cours, Titouan a surtout invité le public du SymfonyLive à se mobiliser : face aux défis de la société actuelle, les développeurs ont en effet un fort pouvoir d'action, notamment en se rassemblant autour des outils open source.

Enfin, Kévin Dunglas a attiré notre attention sur la décentralisation du Web et l'importance de redonner aux utilisateurs la toute possession de leurs données. Initialement inventé pour permettre aux personnes marginalisées de s'exprimer, le Web est aujourd’hui un espace monopolisé et censuré par les GAFAM. Pour répondre à ces problématiques, la spécification Solid (abréviation de "social linked data") permet aux utilisateurs de stocker leurs données de manière sécurisée et décentralisée dans des "pods". Kévin, "serial contributeur" de réputation, nous a présenté son client PHP qui permet de développer des applications Solid et d'interagir avec les données stockées dans des pods Solid.

Pour conclure

Mis à part quelques soucis techniques (le jingle qui se lance en plein milieu d'une conférence 🤣) accueillis par le public avec humour, cette nouvelle édition du SymfonyLive a été un franc succès.

Parmis les petites attentions, nous avons apprécié les lunch bags prévus pour les collations du midi (en fonction du choix végétarien / poisson / viande fait à l'avance) et qui étaient assez copieux et qualitatif.

Les sujets abordés étaient dans l'ensemble intéressants. Des speakers qui ne se connaissaient pas 48h plus tôt faisaient référence aux talks des autres, apportant un esprit d’équipe supplémentaire à cette super édition 💪. Les slides et les démos sont listées sur un compte GitHub dédié et les talks devraient être bientôt disponibles en replay sur SymfonyCasts.

Nous avons déjà hâte de retrouver cette belle communauté pour la SymfonyCon 2022 à Disneyland Paris les 17 et 18 novembre prochains !

jolicode beberlei jolicode jolicode

« Des frites, du PHP et de la bière - Restructuring a Laravel Controller using Services, Events, Jobs, Actions, and more »