Le blog

SymfonyCon 2023 : notre retour sur les talks (partie 2)

Publié le 14 décembre 2023

Retrouvez la première partie de notre retour sur la SymfonyCon 2023 sur cette page.

Photo de la grande place de Bruxelles, de nuit." class="wp-image-8267" style="aspect-ratio:3/2;object-fit:cover

Symfony, PHP and its Foundation - Nicolas Grekas #

Nicolas Grekas revient sur la création, les raisons d’exister et les missions de la PHP Foundation. Suite au départ de Nikita Popov fin 2021 qui a ainsi réduit le nombre de développeurs travaillant sur le code source de PHP à un, en la personne de Dmitry Stogov, JetBrains lance l’initiative de créer une PHP Foundation. Partant du constat qu’il vaut mieux investir dans un collectif plutôt que de rechercher un unique remplaçant à Nikita. Une dizaine d’organisations orbitant autour de PHP sont contactées, on retrouve parmi celles-ci Symfony, Acquia (Drupal), JetBrains, Laravel, Zend…   

Il revient ensuite sur le fonctionnement historique du développement du langage PHP. Les décisions sont prises par votes et reposent sur des échanges via une liste de diffusion par mail où chacun peut s’exprimer, le débat peut se révéler anarchique même si cela fonctionne depuis une vingtaine d’années. La fondation ne vise pas à changer radicalement ce fonctionnement mais plutôt à influencer la prise de décision par du lobbying.

Nicolas continue avec une présentation plus pragmatique. D’abord sur l’aspect comptable avec l’origine des fonds et des dépenses effectuées, le budget est public et mis à disposition sur Open Collective. Vient ensuite la présentation des équipes qui travaillent pour la fondation et le rôle de chaque personne : 6 développeurs, 9 membres du conseil, 5 membres communautaires.

Enfin, Nicolas précise qu’une partie des développements consiste à effectuer des corrections de bugs et termine avec un aperçu des travaux en cours : un nouveau mécanisme d’autoloading, property hooks, lazy objects, generics, le remaniement de PECL, le support de JSONSchema, la possibilité de cloner avec modifications lié à l’introduction du readonly. Il rappelle que si ces développements aboutissent, ils ne rejoindront le code source qu’après un vote basé sur une RFC.

Q&A with the Core Team #

La première journée de conférences s’est terminée par une session de questions et réponses avec une vingtaine de membres de la Core Team de différents projets parmi lesquels Symfony mais également Doctrine, API Platform et des membres de la PHP Foundation. 

Les questions sont variées et reviennent pour la plupart sur des annonces effectuées durant la journée, notamment à propos du nouveau composant Terminal. À noter quelques questions concernant Doctrine, dont une liée à la date de sortie de sa prochaine version majeure : Grégoire Paris répond qu’on parle en mois plutôt qu’en années. Une autre est posée sur la bonne santé du PHP, une des réponses, sarcastique, est que PHP est mort depuis bientôt vingt ans, pour Fabien Potencier la communauté ne s'essouffle pas.

Les intervenants reviennent également sur le fonctionnement de la PHP Foundation à travers un questionnement sur les différences avec le PHP-FIG, le groupe de travail à l’origine des PSR. En bref, les deux groupes n’ont pas les mêmes prérogatives et n’interviennent pas de la même façon sur le PHP.

Plusieurs questions et réponses reviennent sur les évolutions de l’open-source et les manières d’y participer. En résumé, c’est avant tout la communauté qui fait vivre le projet et les équipes Core ne font généralement pas les plus grosses évolutions mais beaucoup de tâches comme du triage, de la revue de code, de l’écriture de tests, des corrections ou de la documentation. Il y a plusieurs moyens différents pour contribuer, comme participer à un hack day, mais créer des issues avec des reproducer complets est aussi une bonne méthode pour faciliter la résolution des problèmes.    

Simplified Processes With Symfony Workflow - Bruno Henrique De Souza #

Lors de ce talk, Bruno Henrique De Souza nous a présenté le composant Workflow de Symfony, Il nous a montré ses principales fonctionnalités et ses applications réelles. Après une introduction rapide du composant, il nous a détaillé les sujets de la construction d’un modèle de workflow, de la gestion des instances de workflow et plus encore. Il a montré l'utilisation concrète d'un projet dans son entreprise SmartBox en utilisant la structure DDD. Finalement il a montré les meilleures pratiques pour optimiser les performances et la gestion des erreurs dans les flux de travail à grande échelle.

Refactoring monolith to multi-app - Florent Huck #

Florent Huck de Platform.sh nous a présenté une démo étape par étape d’un déploiement rapide et simple d’une application Symfony avec la stack API Platform, API Platform Admin et Mercure.

Grâce à quelques lignes de configuration en YAML directement intégrées dans notre application Symfony, nous pouvons désormais mettre en production simplement et de manière sécurisée toutes nos applications et ce grâce au nouveau produit Upsun tout juste annoncé lors de la convention. Hâte de l’essayer !

How to use GPT with your Symfony app - Christopher Hertel #

Christopher Hertel nous arrive tout droit de Berlin pour nous parler d’IA et d’intégration dans Symfony. GPT (pour Generative Pre-trained Transformer) est trop souvent confondu avec la solution phare d’OpenAI : ChatGPT, pourtant de nombreux autres produits existent (certains sont d’ailleurs open source). Tout au long de cette conférence on a pu découvrir comment fonctionne ces outils et comment les utiliser dans nos projets.

Task scheduling can be boring, but not with Symfony scheduler - Allison Guilhem #

Notre coopératrice Allison Guilhem est montée sur scène, pour nous parler d’un sujet que l’on connaît à peu près toutes et tous : la planification de tâches, et à quel point cela peut devenir ennuyeux, pas pratique, rébarbatif… Heureusement pour cela il y a notamment les tâches cron sous Linux, mais on peut rapidement se trouver bloqué : gestion des erreurs ou exécutions manquées, gestion concurrente, configuration limitée…

Depuis la version 6.3, le composant Scheduler de Symfony vient changer la donne ! Le composant s’appuie sur le composant Messenger, largement adopté par la communauté, et reprend ses concepts pour offrir à son tour la possibilité de déclencher des messages récurrents qui pourront être exécutés de manière planifiée.

Après un petit rappel du fonctionnement de Messenger et de ses concepts clefs, Allison nous propose un tour d’horizon très clair et détaillé du composant Scheduler et de ses usages, en prenant notamment appuie sur  un cas d’utilisation précis.

Le Scheduler donne notamment la possibilité d’utiliser des attributs PHP et des méthodes statiques qui permettent de planifier des commandes très facilement, selon une expression cron, une récurrence de temps, ou encore avec une date de fin.

Le composant permet également de gérer tout ce qui est nécessaire à la bonne gestion de tâches planifiées : commande de debug pour afficher la configuration en cours d’application, mise à l’échelle pour l’utilisation avec plusieurs workers, gestion des jobs concurrents avec un lock, utilisation du cache, configuration des transports spécifiques par message…

Need to search through your data ? Heard about Meilisearch ? Guillaume Loulier #

Guillaume Loulier introduit son propos en expliquant la complexité que peut être la recherche au sein d’une volumineuse base de données. Stocker une grande quantité de données est difficile, et finit souvent par aboutir au traitement avec des index, des documents et des types de données permettant ainsi une meilleure expérience.

C’est dans ce contexte que Meilisearch se distingue. Ce moteur de recherche écrit d’abord en Go puis réécrit en Rust, a été conçu pour être performant, facile à utiliser et capable de gérer des volumes importants de données.

Parmi ses fonctionnalités, la prise en charge de la recherche en temps réel, la recherche multiple, géolocalisation, recherche vectorielle, recherche par facettes, la prévisualisation de recherche, la tolérance aux fautes de frappe, la détection automatique de langue ou encore la prise en charge des synonymes

Guillaume nous explique ensuite que ce logiciel open source français fonctionne autour d’une structure de document JSON (supporte également NDJSON et CSV) et adopte une approche sans schéma. Il détecte automatiquement la clé primaire, les paramètres d'index, et propose des échanges d'index. Le processus implique le parcours des documents, la division de chaque champ, puis une exécution récursive (phase de tokenization via charabia) des pipelines.

Lorsqu'une requête est effectuée, un tri par compartiment est appliqué pour classer les documents. Par défaut, Meilisearch définit un ensemble de règles déjà appliquées lors de la phase de tri, mais des règles personnalisées peuvent être créées/configurées au besoin. La conférence s'est poursuivie avec une démo disponible sur son GitHub : https://github.com/Guikingone/SymfonyConMeilisearch

Merci SymfonyCon ! #

Bien que le centre de conférences puisse donner l'impression initiale d'un labyrinthe avec ses nombreux étages, nous avons toutes et tous passé un excellent moment. La communauté Symfony/PHP ne montre définitivement aucun signe de ralentissement, et tous les échanges que nous avons eus sur notre stand étaient très enrichissants. Bravo à l'équipe d'organisation pour cet événement, on trépigne d'impatience de nous rendre à Vienne l'année prochaine ! De notre côté, nous faisons une mini pause dans les événements pour mieux vous retrouver à Amsterdam les 5 et 6 février prochains à l'occasion de la LaraconEU !

Le blog

Pour aller plus loin