ForumPHP 2022

Retour sur les conférences que nous avons aimées

Le ForumPHP édition 2022 s'est tenu à l'hôtel New York Art of Marvel à Disneyland Paris : un cadre superbe et adapté pour recevoir 77O participants, à savoir la plus grande audience jamais réalisée par cette rencontre annuelle.

Sur 2 journées les 13 et 14 octobre, nous avons pu suivre près d'une quarantaine de speakers et autant de conférences très variées.

Comme à chacune de nos participations, nous partageons avec vous quelques lignes sur les conférences qui nous ont plu, avec une lecture bien personnelle de ce que nous y avons appris ;)


Sauve un-e dév, écris une doc !

Speakers : Sarah HAÏM-LUBCZANSKI

Sarah HAÏM-LUBCZANSKI est documentation architect chez Bedrock, et elle nous présente dans cette conférence ses bonnes pratiques pour la rédaction d'une doc.

Elle vient casser le mythe du code auto-documenté, en nous rappelant que les commentaires et un code bien lisible ne remplaceront jamais une documentation. La doc doit pouvoir rendre visible et utilisable le code à ceux qui en ont besoin. Elle peut donc prendre différentes formes en fonction du contexte et de la personne à qui elle s'adresse. Cela implique souvent plusieurs niveaux de compléxité.

Sarah nous présente, entre autres, le framework Diátaxis qui répond justement à ces problématiques.

FrankenPHP

En rédigeant une documentation avec cet outil, on couvre la grande majorité des cas d'usage. La suite de la présentation s'est ensuite concentrée sur un ensemble de conseils et de bonnes pratiques, tels que :

  • Suivre les Google Developer Documentation Style Guide
  • Utiliser des personnas UX pour la doc
  • S'inspirer de documentations bien écrites (Stripe, Heroku, ...)
  • Versionner sa documentation, avec un gros point d'attention sur le référencement des versions legacy !

Nous avons particulièrement aimé la façon de traiter ce sujet, en nous permettant de bien cerner les enjeux.
Le tout avec un petite pointe d'humour, comme la citation de cette belle reflexion de developeur concernant un code non documenté : "ça a été dur à écrire, ca doit être dur à comprendre"

Merci Sarah !

Rédigé par Florent et Vincent

Voir les slides

FrankenPHP

Speaker : Kévin Dunglas

Kévin Dunglas est membre de la Core Team de Symfony, ainsi que créateur d'un certain nombre de projets, dont ApiPlatform, Mercure ou encore la coop Les Tilleuls.

Il venait cette fois-ci nous présenter une nouvelle création, FrankenPHP.

FrankenPHP est un serveur PHP, écrit en Go.

Mais pourquoi faire ça ? Nous en avons déjà :

  • Apache : serveur et interpréteur
  • Nginx en serveur, combiné à PHP-FPM comme interpréteur

Aujourd'hui, la préférence revient au combo Nginx/PHP-FPM pour ses performances, mais sa mise en place sur des architectures cloud containerisées est compliquée. De plus, PHP-FPM est incompatible avec le code HTTP 103 Early Hints : ce code permet de renvoyer une réponse intermédiaire permettant de déclencher le téléchargement des CSS/JS avant même que la requête ne soit terminée. PHP-FPM ne permet d'envoyer qu'une unique réponse.

Kévin travaille depuis plusieurs années parallèlement sur du PHP et du Go : un serveur Go est très simple à mettre en place, alors pourquoi pas combiner les deux ?

Bilan, le serveur PHP en Go est très prometteur :

  • 1 seul service, serveur et SAPI en Go (via cgo pour interpréter le PHP)
  • repose sur la librairie Caddy
  • adapté à la containerisation...
  • ... mais peut aussi tourner sans
  • mode worker, démarre l'application et la garde en mémoire, une seule étape de compilation/interprétation et utilise les goroutines
  • compatible avec les apps PHP existantes
  • compatible avec le code HTTP 103 Early Hints
  • certificat Let's Encrypt automatique
  • HTTP/2, HTTP/3
  • Mercure built-in
  • les benchmarks sont prometteurs eux aussi

Tout ça, alors que le projet n'en est qu'à ses débuts en public, Kévin ayant publié le projet sous les applaudissements de l'assemblée lors du Forum.

Et pour finir, ce logo est génial !

FrankenPHP

Les femmes à barbe et à capuche sortent de la grotte pour sauver le numérique et son impact

Speakers : Anais SPARESOTTO et Hortense MAHON

Anaïs et Hortense nous racontent comment elles-ont fait prendre en compte au sein de leur entreprise l'importance de l'accessibilité du numérique.

Il est important de savoir qu'en France, 20% de la population est victime d'handicap. Rendre son site accessible est donc essentiel pour ne pas priver une grande partie de la population de notre produit.

On ajoute à cela qu'en moyenne, 1 tiers des gens sont à l'aise avec le numérique, 1 tiers en sont éloignés et le tiers restant a de grosses difficultés.

La mise en place d'une stratégie d'accessibilité doit être pris en compte dans plusieurs étapes clés. La rédaction du cahier des charges, la réalisation des maquettes...

Pour ce faire, il faut suivre les différentes réglementations du RGAA afin de comprendre les différents sujets à traiter et les intégrer à différents niveaux de réalisation d'un projet.

On retient de cette conférence, que c'est un travail de fond à mettre en place, dès le début du projet et qui mérite vraiment de l'attention. Car après ça devient des mécanismes qui sont directement réalisés par les développeurs pour certains critères du référentiel.

Rédigé par Florent


Une plongée dans Node depuis PHP

Speaker : Matthieu Napoli

Matthieu Napoli est un développeur PHP expérimenté, il est venu nous parler de Node.js et des différences majeures qu'il a notées par rapport à PHP.

Il a commencé par aborder le sujet de l'asynchrone, en effet celui-ci est omniprésent dans Node alors que dans PHP il se fait plus rare.

La différence vient du fait qu'en PHP les calculs se font sur plusieurs processus, alors que dans Node il n'y a qu'un seul processus mais que celui-ci utilise l'event loop. L'event loop permet à Node d'intercaler des calculs dans les "temps morts", ces périodes où le programme attend la réponse d'une requête par exemple.

Il a ensuite poursuivi en nous parlant du typage dans Node qui est mis en place au travers de TypeScript, qu'il a comparé aux interfaces en PHP mais à la différence qu'il est, selon lui, plus facile à mettre en place dans Node parce qu'il est évalué constamment.

Pour finir, il a abordé un sujet controversé : l'injection de dépendances dont Symfony est friand. Selon lui, l'injection de dépendances est dans la plupart des cas utilisée en tant que service locator, et que les services en questions pourraient donc être statiques.

M'intéressant de près à Javascript associé à TypeScript, cette conférence m'a beaucoup plu car elle m'a permis de faire des parallèles entre ce langage et PHP.

Rédigé par Hadrien

Comment être bien onboardé en tant que développeuse junior reconvertie ?

Speaker : Amélie ABDALLAH

Amélie ABDALLAH est une développeuse junior actuellement en alternance, qui est venue nous présenter son parcours suite à une reconversion professionnelle.

Étant moi-même jeune reconverti, j'avais à cœur d'assister à cette conférence et je me suis en partie retrouvé dans le parcours d'Amélie.

Après une brève introduction, elle nous a expliquée que les raisons d'une reconversion peuvent être variées. Cela peut aller d'un désir de changer de vie professionnelle (c'était mon cas), à un burn-out en passant par la crise de la XXaine.

Amélie nous a ensuite sensibilisés sur le fait qu'une reconversion n'est pas une chose aisée, en effet celle-ci intervient le plus souvent à un âge où la vie personnelle est déjà développée. La personne peut déjà avoir des enfants, un crédit, et de manière générale davantage de responsabilités qu'un étudiant. Ces facteurs peuvent être un frein mais ils montrent aussi que le⸱la jeune reconverti⸱e aura une détermination à toute épreuve, car c'est un choix de vie important.

La conférencière nous a ensuite raconté son parcours post-formation, avec une première expérience en entreprise peu concluante dû au fait que sa prise en charge n'était pas à la hauteur. Selon elle, l'absence de formation métier (entendre par là une formation de base aux enjeux du client), le fait que personne ne soit pas réellement disponible pour l'aider au quotidien et l'absence de documentation interne sur les projets, ont rendu son intégration à l'entreprise très compliquée.

Elle a donc décidé de rompre son contrat, et a rejoint l'entreprise où elle travaille actuellement, qui lui a offert une expérience d'intégration aux antipodes de ce qu'elle avait vécu.

Chez theTribe elle n'a pas commencé à travailler sur un projet avant 3 semaines. À la place, elle a tout d'abord commencé par faire connaissance avec toute l'équipe. Puis a reçu toutes les informations administratives nécessaires pour appréhender le fonctionnement de l'entreprise. Elle a ensuite pu se mettre à niveau techniquement grâce aux outils internes, avec l'aide d'un parrain qui disposait de temps pour l'aider à s'intégrer.

Pour finir, Amélie a encouragé l'audience à se pencher davantage sur les CV des reconvertis, car ils amènent avec eux une expérience professionnelle qui apporte de la fraîcheur, et une motivation sans faille.

Rédigé par Hadrien

Papa et Maman nettoient l'internet

Speakers : Hélène Maitre-Marchois et Mathieu Marchois

Pour reprendre leurs termes, ils nous proposent une plongée dans une opération de sauvetage du Web actuel.

Ils sont co-fondateur de Fairness, une coopérative de développement de sites éco-responsables.

Elle est Scrum Master et Product Owner.

Lui est développeur expert PHP/SF Node.

Quelques chiffres sur notre monde pour poser le décor :

  • Si on ne fait rien, le numérique sera plus polluant que les voitures d'ici 2025
  • Nous avons des dizaines de milliards de terminaux (mobiles, pc et autres) dans le monde, leur durée de vie et leur recyclage sont très limités
  • Les ressources naturelles nécessaires au numérique s'épuisent très vite

Ils opposent à cela des chiffres sur le numérique :

  • 70% des pages ne sont jamais affichées
  • 80% des fonctionalités ne sont jamais utilisées
  • En 10 ans, une page est passée de 500Ko à plus de 2Mo en moyenne

Il nous ont emmené de ce constat vers des pistes concrêtes d'amélioration de la situation.

  • Hélène sur l'aspect produit, ou comment réduire le scope fonctionnel à l'essence du besoin utilisateur.
  • Mathieu sur l'aspect technique, ou comment réduire la charge de nos applications et serveurs par l'éco-conception.

J'ai beaucoup apprécié passer de ce constat assez inquiétant à des solutions applicables pour le web.

L'éco-conception dont je n'avais qu'entendu parler de loin jusqu'à maintenant, s'avère avoir une norme (ISO 14062), ainsi que des méthodes d'applications dédiées au web (par le biais du livre "Eco-conception web : les 115 bonnes pratiques" que je vais m'empresser d'ajouter à ma bibliothèque).

Il existe aussi une repository Github contenant ces règles

Merci à eux !

Rédigé par Kevin



FFI : de nouveaux horizons pour PHP

Speaker : Pierre Pelisset

Pierre Pelisset est développeur backend chez KaraFun, une société qui propose des solutions de Karaoké en ligne ainsi que des solutions de « bar karaoké » proposant des salles privatives toutes équipées (son, lumière, dispositif paroles).

Chaque salle est équipée d’un dispositif faisant tourné une application PHP gérant la salle.

Le jeu de lumières est notamment piloté par l’application via un port série présent sur le boîtier de commandes.

PHP ne peut pas nativement prendre en charge l’initialisation d’un port série sur la machine. Auparavant les équipes de KaraFun utilisaient un script Python pour initialiser et configurer le port série (PySerial).

Pierre a présenté rapidement Termios qui permet de piloter les entrées/sortie de ports de communication.

Pierre a donc décidé de tester les FFI PHP (Foreign Function Integration) possibles depuis PHP 7.4. afin d’intégrer du code C (sous forme de fonction) au sein du code PHP.

Il a donc créé la librairie php termios implémentant l’interface Termios / PHP grâce à du code C.

Le but était d’écrire le moins de code C possible et de le conserver simple.

Après plusieurs essais, les équipes KaraFun ont réussi ce challenge, et aujourd’hui plusieurs salles utilisent une version de l’application intégrant cette brique FFI.

Pierre a toutefois avertis que cette solution pouvait présenter des inconvénients (hors de l’environnement maîtrisé de Karafun) :

  • Le code C de la FFI devient dans ce cas dépendante de la plateforme (unix, mac)
  • C’est une solution moins performante qu’une extension PHP dédiée

Les avantages :

  • Le code est packagé dans une dépendance que l’on peut installer via Composer
  • Il n’est pas utile de créer et d’installer une extension PHP

Rédigé par Sébastien



Sortir du cadre SF

Speaker : Robin Chalas

Robin est Core member de @Symfony et Principal Engineer chez @coopTilleuls.

Il commence ici par nous présenter la structure de fichiers de Symfony, avec les parties à ne pas modifier, qui vont être un standard (certaines peuvent être surchargées et d'autres non) et les parties propres au userland.

Donc un cadre est posé par Symfony, celui-ci convient à un grand nombre de cas. Ce cadre est nécessaire au fonctionnement de Flex par exemple, qui va automatiquement surcharger la configuration et autre routing.

Mais il ne faut pas avoir peur d'en sortir.

À une vision projet centrée sur le framework et restant dans son cadre, Robin oppose une vision projet considérant le framework comme une base, une boite à outils.

Ce n'est pas un carcan qui doit empêcher l'innovation.

Tant qu'on comprend pourquoi, on peut et on doit en dévier si le besoin existe (métier ou technique).

Lien vers les slides

Rédigé par Kevin



Comprenez comment PHP fonctionne, vos applications marcheront mieux

Speaker : Pascal Martin

Pascal Martin a commencé sa conférence par des rappels utiles autour de PHP :

  • Un process PHP prend en charge une requête, charge tout le contexte, exécute le code, renvoie la réponse et s’éteint
  • Le cycle de vie d’un process PHP (ainsi que celui des extensions chargées)
  • Utilisation des Sapis, qui permettent d’interfacer le serveur et PHP

Aujourd’hui majoritairement nous utilisons pour les applications web un serveur qui communique via fast cgi avec Php FPM.

Celui-ci gère des processus qui prennent chacun en charge des requêtes PHP (via une file d’exécution). Si une requête est bloquante, elle met le processus PHP Fpm en attente.

PHP Fpm gérant un pool de processus, d’autres processus peuvent prendre en charge les requêtes entrantes. Seulement, comme tout sur notre planète, les ressources ne sont pas illimitées …

La situation peut vite devenir bloquante et multiplier les ressources disponibles ne résout pas le problème.

Pour limiter au maximum la ressource nécessaire à l’exécution de nos requêtes PHP, nous devons penser notre code comme devant être économe en ressource (nombre d’extension nécessaire, quantité de code applicatif, quantité de dépendances, mémoire, time-out sur les IO etc …).

De plus, l’opcache nous permet d’accélérer l’exécution de notre code, de minimiser les ressources nécessaires à l’exécution d’une requête, encore faut-il bien le configurer et consulter régulièrement les métriques afin de vérifier que la configuration en place est toujours pertinente et optimisée.

En fin de conférences des conclusions intéressantes :

  • En tant que développeur, pensez aussi Ops, discutez avec les équipes en charge de l’infrastructure, nos sorts sont liés
  • Soyez curieux, jetez un coup d’oeil au code PHP
  • PHP est-il toujours la solution adaptée ?

Rédigé par Sébastien



De l'humain à l'ordinateur, ou découvrir le sens d'un texte avec Elastic Search

Speaker : Mathias ARLAUD

Comment le moteur de recherche ElasticSearch (basé sur Apache Lucène) arrive à trouver des correspondances entre des éléments qui sont très semblables pour le cerveau humain mais qui n'ont a priori aucune similitude lorsqu'ils sont encodés par la machine.

Ce sujet passionnant a été traité de façon particulièrement brillante, avec une vulgarisation très réussie pour un sujet aussi complexe.

Le principe repose sur le calcul d'un score de corrélation entre les termes d'une requête et un document.

Elastic Search

Dans les grandes lignes, voici les paramètres qui rentrent en compte dans le calcul de ce score :

  • Term Frequency : c'est le nombre d'occurrences du terme dans le document.
  • Inverse document frequency : proportion des documents qui contiennent le terme. Cela permet de fortement diminuer le poids des mots très communs (le, la, très, ...), qui ne sont pas pertinents pour la recherche.
  • Coordination factor : recompense le document qui contient la plus grande proportion des mots de la recherche.

La seconde partie a été l'occasion d'abordé quelques méthodes utilisées pour supprimer le bruit dans les termes de recherche.

Lien vers les slides

Rédigé par Vincent



Revue de code : on n’est pas venu pour souffrir !

Speaker : Anne-Laure DE BOISSIEU

Lors de son changement d'entreprise Anne-Laure nous raconte ses craintes sur les futures revues de code au sein d'une équipe bien plus grande. Spoiler, ce ne fut pas le cas.

La solution est simple à mettre en place : les "conventional comments". Basé sur le fait de mettre en place une convention d'écriture, ce standard permet d'avoir une meilleure communication.
Le format est le suivant :

<label> [decorations]: <subject>

[discussion]


Les labels permettent d'indiquer si le commentaire est une suggestion, une question, de mettre en avant quelque chose de positif, etc...
Les décorations quant à elles servent à définir l'urgence du correctif à mettre en place.

Evidemment, on pense bien à avoir de la revue de code automatique avec différents outils tel que PHP ECS, PHP Stan ou encore Rector pour du linting classique.

Qu'est-ce que les conventional comments apportent de plus qu'une revue de code classique ? Et bien, on diminue les risques de mal se comprendre et on améliore la qualité des échanges entre les techniciens.

Ce qui ressort vraiment de cette conférence, c'est tout d'abord le très grand nombre de chats sur les slides (on aime ça !). Que cela permet clairement de se concentrer sur ce qui est important, avec bienveillance.

Et que de travailler en groupe à cette amélioration permet de produire de meilleures choses.

Rédigé par Florent



Back to the Sylius Future

Speakers : Loïc Frémont

Chez Emagma, nous sommes fans de Sylius, il était impossible de manquer la conférence de Loïc sur ce qui pourrait arriver prochainement dans Sylius.

La conférence est originale car Loïc a rejoint récemment la core team de Sylius alors qu'il est contributeur depuis plusieurs années : créateur de Monofony, un framework RAD basé sur les composants Sylius et sur Symfony, son point de vue est à la fois critique et constructif.

Son contat part d'un besoin pour Sylius de simplifier ses dépendances (un sujet repris par Nicolas Grekas dans sa conférence « Pourquoi créer un composant Symfony ») à des paquets et des librairies qui peuvent donner un travail supplémentaire en terme de maintenance et de suivi de versions.

À titre d'exemple, l'adaptation de Sylius à Symfony 6 a occupé les équipes pendant pratiquement 1 an, et le maintien de la Backward Compatibility commence à poser des difficultés non négligeables, au point que la nécessité de se pencher sur une version 2.0 de Sylius commence à se faire sentir.

Dans les sujets actés qui vont bouger nous voyons :

  • Le remplacement du SyliusFixturesBundle par Zenstruck/Foundry qui présente plusieurs avantages parmi lesquels une gestion des fixtures compatible avec le DoctrineFixturesBundle, ainsi que l'autocomplétion dans un IDE
  • Le gestionnaire de State Machine Winzou qui est en cours de migration vers le composant Workflow de Symfony
  • Le remplacement du Chrome Driver utilisé dans les tests Behat par Symfony Panther

Ces changements seront intégrés de façon progressive mais engagent déjà la communauté Sylius à se préparer.

Lien vers l'issue Sylius sur l'intégration de Zenstruck/Foundry

Ensuite d'autres changement ambitieux sont à l'étude, notamment ceux qui concernent le ResourceBundle et son contrôleur principal qui gère l'ensemble des actions disponibles pour une ressource.

Le principe de la déclaration des resources pourrait se faire à la manière d'Api Platform, permettant déclaration des routes sous forme d'attributs au niveau des entités et une surcharge partielle ou complète de la logique de chaque action - show, index, create, update, delete, bulkDelete, applyStateMachineTransition - un point difficile à réaliser à l'heure actuelle.

Comme je le disais en préambule, mon intérêt pour cette conférence vient du ton objectif et libre de Loïc F. vis à vis du produit Sylius, il y a des choses à améliorer et c'est dit de façon constructive.

Les propositions de Loïc F. sont d'autant plus intéressantes que son action sur Monofony lui permet de tester, d'identifier des limites et de proposer de nouveaux points de vue qui profitent à la fois à Monofony et à Sylius.

A suivre de près !

Citation

« La décoration, c'est la vie. » Loïc Frémont, Disneyland Paris, 2022

Lien vers les slides

Rédigé par Loïc

Back to the Sylius Future



The PHP Foundation

Speakers : Sebastian BERGMANN & Roman PRONSKIY

Une des premières conférences de ce ForumPHP concerne la PHP Foundation, une initiative concrétisée en 2021 après de nombreuses tentatives par le passé.

Le constat est simple : toutes les solutions open source reconnues disposent d'une fondation qui permet à l'écosystème de s'organiser et de pourvoir à son besoin de développement :

  • Linux Foundation en 1999
  • Apache Foundation en 2000
  • Mysql en 1995
  • MariaDB en 2021

Mais rien en PHP...

Alors à quoi sert une fondation ? Simplement à donner des moyens aux personnes qui animent au quotidien l'évolution de la solution, ici en l'occurence le langage PHP.

Sebastian (PHPUnit) et Roman (Jetbrains) nous expliquent clairement d'où vient ce besoin : lutter efficacement contre le « Bus factor », autrement dit "combien de personnes devraient se faire écraser par bus pour mettre en danger un projet".

Dans le cas de PHP, le constat est assez terrible : 2 personnes sont au coeur d'une grande partie de la connaissance des mécanismes internes du langage, à savoir Nikita Popov et Dmitry Stogov, Nikita ayant annoncé son souhait de se concontrer sur d'autres technologies, Rust et LLVM.

C'est donc de là que vient la nécessité de créer la PHP Foundation qui va trouver et organiser des moyens pour que le langage PHP puisse :

  • Poursuivre son développement
  • Assurer sa propre maintenance - c'est un sujet majeur souvent mal compris par les utilisateurs
  • Répartir l'effort et la connaissance autour de plusieurs core développeurs

La PHP Foundation a choisi la plateforme Opencollective pour disposer d'un cadre légal et financier qui lui permet de gérer des fonds avec une transparence tout à fait nécessaire.

À ce jour la PHP Foundation a collecté 664 745,43 $ de fonds dont 10% reviennent à opencollective pour sa gestion et dont le solde sert essentiellement à financer le travail de contributeurs à PHP comme c'est le cas pour George Banyard également conférencier sur ce Forum.

En soutenant la PHP Foundation, les entreprises qui utilisent PHP au quotidien pourront donner du souffle au langage qu'elles utilisent au quotidien, voici le lien pour devenir donateur sur opencollective

Voir les slides de la présentation

Rédigé par Loïc

The PHP Foundation

Derniers articles