Monsieur Biz sponsor du Forum PHP 2022

Le Forum PHP 2022 des éléphants et une souris ! On vous dit tout ! Retrouvez un résumé de ce que nous avons vu.

Cette année l’AFUP a mis les petits plats dans les grands en nous proposant une édition exceptionnelle à Disney Land Paris, et plus précisément au Disney Hotel New York – The Art of Marvel ! Au programme, des talks, des jeux, des rencontres et aussi des sensations fortes.

Jour 1

Keynote d’ouverture

Une édition LÉ-GEN-DAIRE ! 774 personnes au total, du jamais vu. Aussi, le Forum PHP devient plus accessible en transcrivant en temps réel les différents talks proposés. Nous avons eu plusieurs fois des pensées envers les équipes qui s’occupaient de ce travail, car les termes techniques et complexes étaient nombreux 😅

The PHP Foundation - Sebastian BERGMANN et Roman PRONSKIY

C’est en constatant que Linux, Apache, MariaDB avaient leurs propres fondations, qu’est venue l’idée d’en créer une pour PHP. La Fondation PHP est une organisation à but non lucratif dont la mission est d’assurer la pérennité et la prospérité du langage PHP, lancée en 2021, soit 26 ans après la création de PHP ! Mieux vaut tard que jamais 😉

Open Collective a été utilisé pour gérer les collectes de fonds, la gestion des statuts légaux et différents aspects dans la création d’une organisation comme celle-ci. C’est un peu comme un produit type “Foundation as a service”.

L’un des rôles principaux est de financer les développeurs pour la maintenance et le développement du langage. À noter que la fondation n’a aucun pouvoir sur les RFC poussées lors des futures versions de PHP. Cela reste piloté par la communauté.

Pour information, 77% des revenus collectés ont été donnés par des entreprises, dont une grande partie par des grosses sociétés. Le restant ayant été donné par des particuliers. Seulement 40% des dons sont récurrents et 60% sont des dons uniques. Après prélèvement des frais, plus de 100 000 $ ont pu être distribués aux développeurs de PHP. Mais l’organisation garde toujours de la trésorerie pour prévoir de nouveaux recrutements mais aussi afin de pérenniser l’avenir de la fondation, étant donné que les dons peuvent fluctuer beaucoup selon les périodes.

Merci à toutes les personnes comme Tobias, Nikita, Dmitry, George, Nikolas, Arnaud etc. pour leur participation active à l’évolution du langage PHP, qui nous rappellent que ce langage, utilisé par des milliers d’utilisateurs dans le monde, repose au final sur les épaules de peu de personnes.

Voici le lien vers leur présentation

La PHP foundation au Forum PHP 2022

Back to the Sylius Future - Loïc FRÉMONT

Loïc commence par un rappel historique qui permet d’expliquer certains choix techniques de Sylius, comme la création de certains bundles bien avant la naissance et l’adoption de bundle par la communauté PHP - notamment par Symfony.

Comme Sylius <3 Symfony, et pour profiter de la force de la communauté autour de ce framework, l’équipe de Sylius a fait le choix de remplacer certains packages. C’est le cas pour le package qui permet d’injecter un jeu de données dans les applications - aussi appelé fixtures - par Zenstruck Foundry :

Présentation du fonctionnement de Zendstruck foundry

On peut citer aussi 2 autres exemples :

  • le remplacement du package winzou/statemachine par le state machine de Symfony. Dans la version 1.13 de Sylius, on pourra choisir l’un ou l’autre lorsque l’on crée un workflow. Bien entendu, pour la création de nouveaux workflows, nous vous conseillons d’utiliser celui de Symfony.
  • le package Behat Chrome extension est abandonné au profit de Panther.

Mais Sylius <3 API Plateform aussi ! Cet amour va peut-être aboutir à l’abandon du ResourceController qui représente à lui seul 575 lignes de code pour 7 actions, et qui est trop rigide (seulement quelques événements envoyés) pour donner naissance à de nouveaux attributs PHP pour décrire les routes, les grilles Sylius et les templates directement en haut de nos entités. Cette version plus flexible va s’appuyer sur API Plateform pour permettre de complétement changer le comportement du controller via le state provider, state processor. Ce changement est pour le moment un POC qui est en discussion avec l’équipe Sylius. Avec des choses qui doivent être améliorées ou revues, comme le fait de pouvoir changer le path de l’admin.

Loïc est aussi le créateur de Monofony qui est un micro framework qui s’appuie sur certains bundles Sylius pour créer les resources, les routes ou les grilles notamment. Durant cette présentation, il a parlé du futur de cet outil :

  • Un système de thèmes : Semantic UI, Bootstrap, etc.
  • Remplacer les grilles définies en YAML par une définition en PHP, pour pouvoir facilement ajouter un décorateur.
  • Autoconfiguration des filtres.
  • Ajouter la gestion des ressources Sylius dans le Maker bundle.

Pour conclure son discours, Loïc nous dit “D’autres idées ? L’avenir de Sylius vous appartient”.

Lien vers sa présentation

FFI : De nouveaux horizons pour PHP - Pierre PELISSET

Est-ce que nous, développeurs PHP, sommes prêts à gérer les allocations de mémoire ? Est-ce que nos rêves de joli code (pas nos copains) OOP ne sera pas remplacé par des cauchemars avec des Segmentation Fault ?

Si vous vous posez ces questions, vous pouvez essayer l’extension PHP FFI qui est disponible depuis PHP 7.4, qui permet de charger des librairies .ddl et .so et d’appeler directement des fonctions C depuis PHP. Mais à vos risques et périls, vous êtes prévenu(e)s !

Pierre est venu nous présenter un cas d’usage de FFI chez Karafun : remplacer une librairie python (psyrial) en PHP pour communiquer avec un boitier branché via USB. Après une analyse, aucune solution n’est disponible directement en PHP. Donc, il s’est tourné vers FFI pour utiliser les fonctions C de termios pour communiquer avec ce boitier.

Durant cette présentation, Pierre nous a exposé des problèmes auxquels les développeurs PHP ne sont jamais confrontés :

  • les constantes n’ont pas la même valeur suivant les plateformes.
  • les différences de type entre PHP et C, par exemple un stream en PHP et un identifiant de référence de fichier ouvert en C.

Sa conclusion est que FFI ouvre de nouvelles possibilités - sans avoir besoin d’une connaissance approfondie du C. Par contre, cette solution est plus lente qu’une extension PHP.

Comment être bien onboardée en tant que développeuse junior reconvertie ? - Amélie ABDALLAH

C’est avec plein d’entrain et de bonne humeur qu’Amélie nous raconte son histoire en tant que junior reconvertie. Et un an après, elle monte déjà sur la scène du Forum PHP pour nous en parler ! Son retour n’est pas universel, chacun à son parcours en fonction de ses envies, mais aussi de sa situation.

Les raisons d’une reconversion sont multiples :

  • Promotion horizontale
  • Burnout
  • Rêve d’une vie
  • Opportunités
  • Crise de la [n]aine (Insérez la dizaine de votre choix)

Comme on le stipulait juste avant, la situation de chacun·e entre aussi en jeu. En étant une femme reconvertie dans la tech, la question de la légitimité arrive à l’esprit car actuellement il n’y a pas de modèle sur lequel se reposer, peu de représentation (mais vous êtes légitimes ! 💪). Il y’a aussi les questions de temps alloué à la reconversion, couplées à la gestion de la charge mentale et de la santé mentale globale. Un handicap visible ou invisible, et plus globalement, le niveau d’autonomie de la personne sont aussi à prendre en compte lors d’une reconversion.

De plus, plusieurs facteurs de stress seront rencontrés selon votre situation.

  • Les dispositifs de formation type POEI / POEC, sont des contrats qui demandent un résultat
  • Rentrées financières pour continuer de vivre
  • Temps disponible pour étudier
  • Crédits pour financer sa formation
  • Contextes familiaux

La première expérience d’Amélie en tant que développeuse en alternance fut pour le moins surprenante. Dès le premier jour, dans une PME dans le secteur des retraites, elle a été mise sur du code source sans unboarding, sans aucune communication, et sans disponibilité de la part de son responsable projet. Autant dire que ce n’était pas ce qui lui était vendu sur le papier. Aussi difficile à vivre quand c’est sa première expérience dans le domaine.

Elle a donc décidé de quitter son alternance, pour se diriger ensuite vers TheTribe. Les valeurs de TheTribe tranchent totalement avec celles de son ancien poste :

  • Marre du système des ESN, de ne pas être écouté dans la création produit.
  • Le dev doit être écouté tout au long de l’élaboration des features.
  • Recrutements plus ouverts avec des personnes reconverties, aussi plus de recrutement de femmes (tendre vers une parité !)
  • Un.e reconverti.e pourra plus facilement prendre du recul sur le point de vue métier qu’une personne sortant d’école d’ingénieur

Son arrivée a également été complètement différente. Elle a rencontré toutes les équipes métiers de l’entreprise, un des co-fondateurs, et a eu une mise à niveau sur tous les process à connaître pour bien démarrer. Sont également en place un système de parrainage, du mentorat, des vidéos et des documentations sur des sujets techniques, et surtout du temps consacré à la mise à niveau technique.

Prenons le temps donc d’accueillir les reconveti·e·s, de les former, car ce sont des personnes motivées qui ont plein de choses à nous apporter !

Des workers PHP avec systemd et SF Messenger - Loïck PIERA

Symfony Messenger est un composant publié avec Symfony 4.2 qui utilise le “message bus parttern”. L’idée est de retarder les traitements qui peuvent l’être, comme des envois de mails, des appels à des APIs tierces etc.

Il se compose de 2 parties :

  • D’un message qui est dispatché
  • D’un handler qui receptionne un message selon son type

Par défaut, l’utilisation sera synchrone mais il est possible, même préférable, de le configurer pour consommer les messages en asynchrone, via Doctrine, Redis ou encore RabbitMQ.

Il existe aussi une file d’erreur où sera empilé les messages qui ont échoué afin de les analyser, les rejouer ou les supprimer. On enverra par exemple un message dans la file d’erreur après 3 echecs.

Pour consommer les messages, il est possible d’utiliser supervisor ou encore systemd.

Configuration des workers Symfony Messenger avec systemd

Petites astuces pour finir :

  • Ne pas laisser les worker tourner indéfiniment (time limit, memory limit ou nombre de message)
  • Couper les workers pendant un déploiement
Nous avons eu l'occasion d'utiliser ce composant lors de nos projets e-commerce sur Sylius. Et nous avons même implémenté une interface en BO pour gérer ses messages facilement sans devoir tout faire en ligne de commande.

Affichage dans Sylius de la liste des messages Symfony Messenger

Affichage dans Sylius de la liste d'un message Symfony Messenger

Lien vers sa présentation

Sauve un-e dev, écris une doc - Sarah HAÏM-LUBCZANSKI

Cette conférence commence par faire tomber un mythe : le code auto documenté n’existe pas. Où du moins, il ne sert que rarement !

En réalité, les utilisateurs·ices ont besoin d’être accompagnés·ées, de savoir que ça existe et de comprendre à quel problème répond votre code. La première chose à produire est une documentation d’installation (un fichier README.md ou INSTALL.md par exemple), un guide pour débuter (Getting started) et/ou une liste de pré-requis. Même si votre code est destiné des développeurs·euses, ces personnes deviennent des utilisateurs·ices. Publier du code c’est bien, mais si il n’est pas documenté, il n’est pas utilisable facilement.

Les fichiers annexes peuvent fournir une documentation basique mais intéressante, tel que les tests, le Makefile, les release notes, un swagger, etc. Une régle importante, c’est de bien nommer son projet et de le décrire simplement.

Comme pour le code, une bonne documentation doit être architecturée ! Sarah nous conseille le framework Diátaxis qui permet de répondre au problème de la structure de la documentation technique.

Présentation du framework Diataxis

Un autre conseil : copier la documentation qui vous plait. Pour ne citer qu’un exemple de très bonne documentation, Stripe, mais 35 personnes maintiennent ce site.

Adapter le style de la documentation à votre audience, les utilisateurs·ices n’auront pas tous entre 25 et 40 ans. Donc abstenez-vous de référence culturelle, de note d’humour douteuse - par exemple, “API expliquée à ma mère” -, etc. Vous devez privilégier un style accessible dans un langage correct, vous pouvez vous servir du guide de style de Google.

Lien vers sa présentation

Récit du passage d’une migration d’un hébergement classique à un infra cloud PAAS - Bastien JAILLOT

C’est une histoire pleine de rebondissements que nous a raconté Bastien sur le passage d’un hébergement classique à une infrastructure flexible cloud.

Tout commence avec un POC pour satisfaire les investisseurs, hebergé sur un serveur où l’hébergeur a demandé la version de PHP souhaitée, la CPU, RAM et espace disque voulus. Par contre des sujets comme les déploiements, les tirs de charge, la gestion des logs, la mise en place de workers etc… ne se sont pas faits dès le début et la complexité est vite arrivée. D’autant plus que la dette technique demandait du temps, beaucoup plus que le temps initial nécessaire pour la mise en place du POC.

C’est là qu’intervient Bastien pour auditer le projet, mais déjà il rencontre des blocages. Pas d’accès SSH, aucune documentation, un script custom pour le déploiement, pas de logs etc. En revanche, le code est plutôt bien découpé même si le code est lent, et que le cache API manque.

La première action sera de mettre un cache HTTP avec Varnish, et l’ajout d’un proxy cache pour l’API. L’idée vient alors de changer d’hébergement et de passer sur Clever Cloud en mode Paas (Platform as a service). Pour cela il a fallu récupéré ce qui était nécessaire pour le changement (DNS, repository, backups etc.).

Avec Clever Cloud les choses se dirigent avec des commandes bash pour les actions, et en variables d’environnement pour les configurations. Cela donne le contrôle sur l’architecture et évite les allers-retours avec l’hébergeur. En quelques commandes, le proxy PHP et varnish sont en place pour mettre en cache les appels API. En front, le menu aussi a été mis en cache pour gagner en temps de chargement avant de le corriger.

Ensuite est venu le temps d’améliorer les perfs liées à SQL en ajoutant des index et en supprimant du code qui appelle 500 fois les mêmes requêtes. Un downgrade de MySQL 8.0 à MySQL 5.7 a aussi été fait car le query cache n’était plus présent en MySQL 8.0.

Les fichiers contribués ont été mis sur un stockage S3, car le cloud n’est pas voué à faire du stockage local, les machines sont “temporaires”. Est ensuite placé un point de montage distant (NFS - fsbucket).

Concernant la gestion des mails, le SMTP local ne fonctionne pas sur Clever Cloud, notamment pour éviter le spam. Bastien est passé par l’utilisation de symfony/mailer pour se connecter à un serveur SMTP distant. Il y’a aussi beaucoup de documentation au sujet des crontab, des workers, des logs, des hooks accessibles pour ajouter des scripts, etc.

Au sujet du scaling, il peut être horizontal (augmenter la puissance des machines), ou vertical (mettre plus de machines). Mais tout n’est pas magique pour autant. Certaines demandes sont encore manuelles comme RabbitMQ, certaines extensions Apache, un réplication SQL etc. D’autres sujets sont en cours notamment HTTP/2 en bêta, et la possibilité d’avoir un réseau privé.

Une fois tous les changements effectués, voici le schéma de l’architecure avec Clever Cloud : Architecture de l'infrastructure après passage chez Clever Cloud

Pour conclure, utiliser une infrastructure Paas c’est :

  • Une architecture moins chère, stable et évolutive
  • Un déploiement standardisé sans code custom
  • Des applications bien cloisonnées sans container ni VM
  • Il n’est pas nécessaire d’avoir de connaissances en Admin sys
  • Certaines demandes encore manuelles
  • Possibilité de tester des choses sans un gros investissement (Exemple avec les versions de MySQL)
Nous hébergeons plusieurs projets Sylius avec Clever Cloud en mode Paas et cela nous permet d'éviter les nuits blanches !

OpenTelemetry: vers un standard pour surveiller vos applications - Benoit VIGUIER

OpenTelemetry est un nouveau standard qui vise à normaliser les échanges entre les applications et les outils de monitoring.

Schéma de la promesse de l'OpenTelemetry

La promesse est de collecter les données, de les traiter (par exemple, en anonymisant le contenu) et de les envoyer vers les outils de type analytique (Matomo, Google Analytics, etc) jusqu’aux outils de tracing (Blackfire, New Relic, etc). Vous n’êtes plus dépendant d’une application comme New Relic.

Pour y arriver, il faut installer un collecteur qui se chargera de ces opérations pour envoyer les données de télémétrie aux différents outils. Cette nouvelle brique doit idéalement se situer sur la même machine que notre application, ou sur le même réseau pour éviter les pertes d’information et les latences.

Dans nos applications, on pourra utiliser un SDK pour créer des événements de monitoring. Celui pour l’écosystème PHP a un peu de retard et ne propose que le tracing et les metrics pour le moment en version alpha.

C’est une promesse alléchante pour avoir un standard pour la télémétrie. Mais beaucoup de choses restent à faire, donc à vos contributions !

Les femmes à barbe et à capuche sortent de la grotte pour sauver le numérique et son impact - Anais SPARESOTTO et Hortense MAHON

C’est une entrée sur scène très remarquée que font Anais et Hortense toutes deux vêtues d’un sweat et d’une fausse barbe afin d’interpeller le public sur les codes très encrés du monde du développement. Oon doit avouer que c’est une réussite ! Elles sont dévellopeuses back-end et ont à coeur de défendre l’accessibilité dans la Tech au sein de Toovalu.

Entreprise Nantaise proposant aux entreprises un logiciel de calcul de données RSE, permettant en toute autre chose de mesurer l’impact carbonne, la parité …

-> 20% de la population française est en situation de handicap soit près de 12 millions de personnes.

C’est sur ce constat non négligeable que ces deux collègues nous présentent les types d’utilisateurs qu’il faut être en mesure de comprendre et de motiver :

  • Les personnes à l’aise avec le numérique
  • Les personnes éloignées du numérique
  • les personnes ayant un accès difficile

Vient le moment de nous raconter leur parcours dans ce chemin semé d’embuche qu’est l’accessibilité et surtout comment elles ont fait pour rallier tous leurs collègues à la cause. Car l’accessibilité c’est une histoire qui nous concerne tous qu’on soit développeur back-end, développeur front-end, chef de projet, designer, responsable des ressources humaines…

Lors de la confrontation de leurs outils au fameux référentiel RGAA la surprise fut grande, de nombreux points étaient à reprendre mais pour ça il fallait dans un premier temps former les équipes, les sensibiliser avant d’entamer la phase de réparation ou d’anticipation des besoins à l’accessibilité. L’une des actions mises en place pour cela a été de développer un BOT slack qui tous les 15 jours partageait à tous les collaborateurs une règle provenant de la formation OPQUAST.

Aujourd’hui Anais et Hortense disent fièrement que le pari a été gagné ! Pour cause :

  • Leur RH défend l’accessibilité comme une valeur prenante de chez Toovalu
  • Les chefs de projets refusent des maquettes non accessibles
  • Leur UX étaient présent à Paris Web 2022 pour en discuter

À chacun désormais de mettre l’accessibilité au cœur de chaque réflexion.

RINA, le nouvel Internet - Louis POUZIN

En cette fin de journée de jeudi, nous avons eu le plaisir d’assister à une conférence donnée par Mr Louis POUZIN. À 90 ans Mr Pouzin a un long et beau parcours. Ancien de Polytechnique, il rejoint le MIT au début des années 60 où il définit notamment les spécifications de l’interpréteur de commandes Shell. Il rejoint ensuite Météo France pour qui il effectue une modification de leur système d’exploitation afin de permettre différents usages appliqués à la météorologie (METEOS). Dans les années 70 il participe au projet du gouvernement français de créer un équivalent français du réseau ARPANET qui sera baptisé CYCLADES.

Dans les années 2000 il travaille à la promotion d’un nouvel Internet non-IP. Ce protocole de communication, baptisé RINA pour Recursive Inter Network Architecture se veut plus simple et plus rapide que les protocoles utilisés actuellement sur Internet. Il répond également à un certain nombre des problématiques actuelles comme les limites du nombre d’adresses IP. Resté longtemps au stade expérimental dans différentes universités, il a été mis en oeuvre en 2018 à plus grande échelle par le gouvernement arménien. L’idée de cet Internet du futur est de répondre aux problèmes actuels liés aux besoins en rapidité, sécurité ainsi qu’au nombre croissant des utilisateurs, ce, en raccordant les utilisateurs sans intermédiaire.

Burger Quiz Sauce AFUP

Pour finir la journée, l’AFUP nous a concocté un Burger Quizz digne de l’émission officielle ! Les nuggets, le sel ou poivre, les menus, l’addition, le Burger de la mort, tout y était ! Le public était pour l’occasion divisé en deux : Team Ketchup et Team Mayo, la team étant imprimée sur le coin du badge AFUP que chaque participant·e portait autour du cou.

Burger Quizz sauce AFUP

Soirée équipe

Nous avons mangé avec un drôle d’éléphant ! Repas avec un drôle d'éléphant

C’était l’occasion de tester et d’approuver le bar à cocktail du Disney Hotel New York – The Art of Marvel ! N’est-ce pas Carine ? Les cocktails de l'hôtel Marvel

Jour 2

Papa et Maman nettoient Internet - Hélène MAITRE-MARCHOIS et Mathieu MARCHOIS

Le numérique produit aujourd’hui presque 4% des émissions en CO2 - pour comparaison, le trafic aérien en génère 2% - et il augmente de 10% par an. Les émissions dues au numérique dépasseront celles des voitures en 2025 ! Cela est en dû en grande partie à la fabrication des terminaux des utilisateurs, qui ont une durée de vie très courte (souvent moins de 4 ans) à cause des applications et sites internet qui demandent de plus en plus de ressources.

C’est 70% des pages qui ne sont jamais consultées, et 80% des fonctionnalités qui sont peu ou jamais utilisées. En 5 ans, une page web est passée de 500ko à plus de 2Mo, et une augmentation de plus de 311% des requêtes SQL pour les construire. En réfléchissant à l’utilité d’une fonctionnalité et à ce que l’on charge sur une page, cela permettrait de réduire significativement nos applications. Pour Hélène, inclure un UX designer dans le projet permet de réfléchir à un design efficace en terme d’utilisation et en nombre de fonctionnalités.

Mathieu prend le relais pour nous parler des outils à notre disposition pour mesurer, et ainsi de suivre les évolutions au fil des correctifs apportés. Parmi les outils, on en a qui sont plutôt orientés performance (Darebast, PageSpeed, Blackfire, …) ou d’autres orientés sur l’impact environnemental (Ecoindex, GreenFrame.io, Scaphandre, …). Ces outils ne mesurent pas les mêmes choses et sont complémentaires.

Dans une démarche de code green, Matthieu nous donne des exemples qui permettent d’avoir des gains rapides et de peser sur les utilisateurs :

  • Favoriser le sur-mesure à l’utilisation d’un CMS.
  • Adapter le format des colonnes aux données à stocker.
  • Optimiser les requêtes SQL, et combiner plusieurs requêtes HTTP grâce au request collapsing.
  • Basculer le cache dans la RAM, via Redis ou Memcached, pour réduire l’I/O et la consommation en CPU.
  • Mettre en place une politique d’invalidation de cache, et ajouter un cache HTTP (ou reverse proxy).
  • Réduire les logs en ajustant le niveau de log pour la production, en ne fournissant que des informations utiles et par la mise en place d’un logrotate.
  • Utiliser les versions récentes.

Cette conférence nous rappelle que nous avons un rôle à jouer pour réduire les émissions, et que ces améliorations profitent aussi aux utilisateurs finaux.

Typage en PHP comment ça fonctionne ? - George BANYARD

George nous a proposé de superbes formules mathématiques que l’on ne vous détaillera pas ici mais nous allons quand même vous parler du typage en PHP.

Déjà, quels sont les types que nous avons à disposition ? Les primitifs sont les plus simples, ce sont les object, array, null, never, void, mixed, mais aussi ceux que l’on appelle les scalaires : bool, int, float, string.

Ensuite viennent les types définis en espace utilisateur. Ce sont vos classes, vos interfaces, vos énumérations. Générelement on importe la classe vie un use et on utilise son nom pour le typage. On peut aussi y faire référence de façon relative via self, parent, static.

Puis c’est au tour des callables, qui sont des fonctions. Cela peut-être une chaîne de caractères (ex: strlen), un couple objet et nom de méthode, un objet qui appelle la méthode __invoke, ou avec PHP 8 une closure avec la syntaxe strlen(...).

Ensuite il est possible d’obtenir des types composés qui peuvent être des unions, des intersections ou des compositions encore plus complexes. Par exemple, en PHP 8.2, les Formes Normales Disjonctives de type (X&Y)|(V&W), sont des listes de OU qui contiennent des ET.

Mais derrière tout cela, rien n’est magique. PHP est écrit en C et chaque valeur est représentée par une zval.

Conversion des valeurs de type en zval

Plus globalement le typage, ce sont des mathématiques complexes derrière, et tout cela est géré par des personnes brillantes qui font le langage PHP, et qui le font évoluer pour nous permettre des possibilités de plus en plus diverses. Merci à eux !

Sortir du cadre Symfony - Robin CHALAS

C’est une annulation de dernière minute qui a amené Robin sur scène pour sa présentation. Mais malgré le peu de temps qui lui a été accordé pour se préparer, c’est une conférence avec des bases intéressantes qu’il nous a proposé.

En effet, il est revenu sur la structure de base d’un projet Symfony pour voir avec nous en quoi elle consistait si elle était modifiable.

Ne ménageons pas le suspense, la réponse est oui, cette structure est modifiable. À une exception près : le dossier config**` qui ne peut pas changer de nom. Mais si cette structure n’est pas figée, ce n’est pas forcément une bonne idée de changer le nom ou l’emplacement des répertoires car ça ne fait que rajouter des particularités au projet. Pour information, les noms des dossiers sont inspirés de l’écosystème Linux, ils ont un sens.

Même s’il y a parfois des contraintes infra, comme un public html, ces contraintes ont tendance à disparaître.

On peut en revanche ajouter des fichiers où des dossiers sans soucis. Robin donne l’exemple d’un dossier tool avec son propre composer.json pour les dépendances d’analyse de code qui peuvent être dépendantes de versions différentes de Symfony. Ainsi il n’interfère pas avec le composer.json du projet.

Mais attention à ne pas tomber dans l’excès d’ajout de fichier ou de dossier custom qui risque de mettre la pagaille dans votre projet. Dans tous les cas, l’ajout de custom doit être documenté et il faut une cohérence inter-projet autant que faire se peut.

Robain nous a ensuite détaillé le contenu du dossier config:

  • Le dossier config/packages contient la configuration des bundle Core et des bundles tiers. Il est piloté par le plugin composer Flex. On peut modifier les fichiers, mais pas la structure. On n’utilise plus les sous-dossiers dev ou prod, mais on utilise la syntaxe yaml when@dev, when@prod.

    Attention aux mises à jour des recettes Flex qui impactent le fichier de config. Avant il fallait faire le boulot à la main, maintenant Flex le gère grâce à la commande composer recipe update Elle essaye de modifier les fichiers de recette un par un pour voir si la nouvelle version match avec la version actuelle et elle patch (au sens Git) les fichiers de config. SI rien ne change, tout va bien. Sinon elle donne un diff.

    Petit conseil de Robin : il vaut mieux éviter les changements cosmétiques dans le dossier packages pour éviter les diff inutiles. Garder une structure proche de l’original en cas de modif.

  • Le dossier config/route référence les fichiers de routing. Il est également géré par Symfony Flex. Il n’y a pas lieu de toucher à sa structure et à son contenu.

  • Le fichier config/bundles.php active les bundle core et tierces en fonction de l’environnement. Il est également managé par Flex. Il n’a pas vocation à changer mais peut-être fait si nécessaire.

  • Le fichier config/preload.php. Il n’est pas sujet à modification. Il permet à Symfony de tirer parti du preloading PHP (7.4). Il est éventuellement voué à disparaître car depuis PHP 8.1, le preloading n’a plus forcément de valeur ajoutée.

  • Le fichier route.yaml. Il est sujet à modification en fonctionnement de l’archi du code. Il cable automatique les controller déclarés en annotation.

  • Le fichier config/services.yaml. Autrefois vide, il est désormais prérempli et cherche à configurer les classes de src. Au cours d’un projet, il y faut ajouter des entrées supplémentaires dans la plupart des cas.

Puis c’est au tour du dossier src d’être rapidement décortiqué. Il ne faut pas avoir peur de casser sa structure. Flex n’y touche pas sauf pour le Kernel ou il peut proposer des updates.

En conclusion, Robin nous rappelle qu’avant d’être des développeurs Laravel ou Symfony, on est des développeurs tout court. On ne doit pas laisser le framework empiéter sur les besoins métiers. Le framework doit proposer une structure par défaut pour le RAD mais on doit pouvoir en sortir pour aller sur des architectures plus compliquées et adaptées aux projets. Il précise que dans Laravel les conventions permettent moins de sortir du cadre que dans Symfony.

Et pour la route, il nous conseille le livre de Mathias Noback qui s’appelle Recipes for Decoupling. Il amène des notions pour enlever l’adhérence aux frameworks.

Lien vers sa présentation

Revue de code : On est pas venus pour souffrir - Anne-Laure DE BOISSIEU

Anne-Laure est une habituée des événements AFUP et cette année elle nous parle de revue de code ! Oui mais quelle revue de code ? Ici on parle d’un delta de code (Ajout / Modification / Supression) qui est soumis à revue via une Pull Request ou Merge Request.

C’est en passant d’Elao, d’une 10aine de personnes découpées en équipes de 2 ou 3 personnes, à Bedrock, une entreprise de 80 personnes en équipe d’environ 10 personnes, qu’Anne-Laure s’est demandée comment allait se dérouler la revue de code.

Mais d’abord pourquoi la review de code ? Les raisons sont multiples :

  • Améliorer la qualité
  • Améliorer la lisibilité
  • Détecter les bugs
  • Savoir ce qu’il se passe dans les projets
  • Se former et former les autres en lisant le code
  • Responsabilité du code, l’auteur n’est pas seul responsable

Mais parfois on appréhende la review, car les reviewers peuvent parfois manquer d’empathie dans leurs retours, même nous, en relisant on peut essayer de se sentir plus compétent en faisant des remarques, un peu comme une compétition. Parfois cela fini avec des retours cruciaux qui peuvent être noyés dans d’autres retours moins importants.

Une revue de code pas très sympathique

C’est là qu’interviennent les Conventionnal Comments !

Voici quelques exemples de types de messages proposés par la convention :

  • 👏 praise : Mettre en avant quelque chose de positif.
  • 🤓 nitpick : Petite coquille mais n’est pas bloquant, comme une variable mal nommée, ou une faute de traduction.
  • 🎯 suggestion : Une amélioration du code proposée est possible, c’est un “nice to have” qui ne bloque pas nécessairement le merge.
  • 🔨 issue : Un potentiel bug est repéré et on le déclare.
  • question : Le reviewer pose une question car il n’a pas les éléments nécessaires à la compréhension du contenu.
  • 💭 thought : Ouverture à un débat, une idée. Ne bloque pas le merge mais permet de lancer des sujets.
  • 💣 chore : Des retours bloquants qui doivent être corrigés avant le merge.

De quoi mettre son égo de côté, d’emettre des critiques respectueuse en mettant ses sentiments de côté. Car on fait toutes et tous des erreurs, nous sommes humains et aucun code n’est parfait. D’ailleurs vous n’êtes pas votre code, et il faut accepter que certains de vos choix peuvent être refusés par l’équipe, ce n’est pas un échec. D’ailleurs sur le sujet, Kim Laï TRINH avait fait un talk au Forum PHP 2020 sur l’Auto critique de la revue de code bienveillante.

Pourquoi on souffre moins avec ça ?

  • Meilleure compréhension grâce aux labels qui evitent les quiproquos
  • On donne un contexte, une priorité sur les retours que l’on fait
  • Permet de ne pas perdre de temps sur un commentaire non bloquant
  • Réfléchir à l’intention de notre commentaire avant de le rédiger !

C’est trop loooong !? Il existe des templates de réponses dans Github pour préformatter les réponses, et aussi des extensions pour Chrome et Firefox. Le but est de s’approprier la méthode, pas d’utiliser le standard en entier.

Depuis le forum, l’équipe de Monsieur Biz a décidé d’utiliser les conventional comments dans ses reviews de PRs sur Github et on en est tous plus heureux ! Merci Anne-Laure !

Une revue de code avec les conventional comments

Une extension PHP rouillée - Pierre TONDEREAU

Pierre nous parle dans ce talk de la création d’une extension PHP en Rust sous forme d’un retour d’expérience.

Il nous précise pour commencer qu’il ne s’agit pas d’une réécriture de la VM PHP comme ça a pu être fait par d’autres, mais bien de la création d’extension PHP en Rust.

Rust a été créé en 2015, porté par Mozilla lors du projet de refactoring du moteur HTML. Rust est articulé autour de :

  • la performance
  • la garantie de la gestion de la mémoire.
  • la fiabilité grâce au typage. C’est comme du PHPStan level max ou du Typescript.
  • un très bon tooling notamment grâce à Cargo pour le package management. Il y a même une gestion de la doc avec du markdown dans le code.

Classiquement, pour faire une extension PHP, il faut coder en C. Mais il y a pas mal de choses à digérer et il faut faire attention à la gestion de la mémoire. Pierre a donc cherché à savoir s’il était possible de coder une extension en Rust, langage pour lequel il avait une certaine appétence. Il a alors découvert ext-php-rs qui répondait exactement à ses besoins. Le projet étant Open Source, il en est devenu contributeur.

L’objectif de cette bibliothèque est clair : faciliter le développement avec Rust plutôt que C, car plus accessible. C’est une abstraction de la Zend API “à grand coup de FFI” selon les dires de Pierre. Il y a le support de Linux et MacOS pour les architectures courantes, mais ce n’est pas stabilisé pour Windows. En effet, Rust a un système de chanel comme Firefox pour choisir entre lighting ou stable et ça pose souci sur Windows.

Sous le capot, Rust génère du code C à partir d’en-têtes PHP. Ce code en C est interprété comme une extension par le moteur PHP. La librairie propose également la création de stubs afin que les fonctions de l’extentions en Rust soient reconnus par les IDE.

Pour conclure, Pierre nous explique la raison pour laquelle il faudrait utiliser Rust: il permet d’éviter de nombreuses failles de sécurité liées à la mémoire. Ça devient aujourd’hui prioritaire sur les performances qui sont de toute façon native sur la plupart des environnements.

Drupal, je vous 10 tout ! - Marine GANDY

Notre reporter de terrain Marine a su braver la tempête et aller chercher des informations croustillantes et fraiches au sujet de la dernière version de Drupal, la version 10.

Cette Criquette Rockwell version développeuse a su maintenir le suspense et nous proposer plusieurs rebondissements durant son talk afin de nous présenter plusieurs choses sur l’avenir de Drupal.

BREAKING NEWS ! Drupal 10 sortira le 14 décembre 2022 ! Notons que Drupal 7, sorti en 2010 est encore maintenu est actif. La version 8, sortie en 2015, qui a divisé la communauté avec l’arrivée de Symfony, quant à elle ne sera plus maintenue. Drupal 9 le sera encore, il est sorti en 2020.

Les pré-requis pour l’utilisation de Drupal 10 sont les suivants :

  • Composer 2
  • PHP 8.1
  • Symfony 6
  • CKEditor 5

Quant aux changements, de nouveaux themes arrivent dans le core : Olivero pour le front et Claro pour le back. Certains modules quittent le core Quickedit, Aggregator etc. La migration est en cours vers Gitlab, ce qui permettra de rajouter facilement des issues, mais aussi de contribuer au projet via des merge requests. Vont arriver prochainement le Project browser qui permettra de naviguer et d’ajouter des modules facilement, ainsi que l’Automatic update pour mettre à jour sa plateforme via l’administration.

Pour celles et ceux qui pensent que Drupal est mort, que nenni ! 1204 modules sont prêts pour Drupal 10, la communauté est prête à l’adoption de cette nouvelle version. Il y a encore beaucoup de sites à fort traffic sur Drupal, et les agences proposant du Drupal sont en forte croissance.

Pour finir, voici ce qui est prévu pour la suite :

  • Le support de PHP 8.2 pour la 10.1
  • L’intégration du Project Browser et Automatic Update dans le core
  • Plugin lenient pour Composer
  • Encore moins de module dans le Core : 16 module en moins
  • Des recipes a la place des distributions

Marine a su nous montrer que Drupal avait encore de beaux jours devant lui !

Piochons dans les bonnes pratiques de la DDD - Benjamin RAMBAUD

La conférence de Benjamin est une sorte de tour d’horizon des de plusieurs techniques de programmations dans lesquelles il peut-être bon de piocher des idées pour réussir ses projets.

C’est également l’occasion pour lui de nous donner quelques conseils. L’un d’eux étant de créer un langage commun avec les équipes. Un mot a un sens en fonction d’un contexte. On parle Ubiquitous language

Benjamin nous parle également des 3 types de complexité :

  • la complexité essentielle ou de base
  • la complexité obligatoire
  • la complexité accidentelle

Enfin, tour d’horizon des différentes techniques de programmation :

  • Hexagonal architecture : boite noir avec une logique et pour communiquer avec l’exterieur on branche des adapteurs dans des ports.

  • Functional programming : paradigme de programmation où on enchaîne les fonctions pour résoudre les actions. Les fonctions sont pures si elles sont idempotentes avec aucun effet de bord. On parle aussi d’immutabilité.

  • Domain Driven Design: philosophy pour gérer des domaines complexes. A n’utiliser qu’en cas de gros projet car c’est lourd. Mais c’est normal, c’est pour gérer des choses complexes.

Internet et la géopolitique - Stéphane BORTZMEYER

Stéphane a conclu la seconde journée du forum avec un talk qui a encore plus d’importance en vue du contexte mondial actuel.

Tout d’abord il insiste sur le fait que le cloud est quelque chose d’intangible, qui traverse les frontières et qui “plane” au dessus des nations. Mais la réalité est toute autre car derrière le cloud il y a des personnes, des matériaux, de l’énergie. Ce qui nous paraît virtuel est en réalité bien concret.

Les événements qui se produisent dans le monde on des conséquences même sur des gens qui ne pensaient pas être touchés.

Le premier exemple est l’Ukraine. Dans les territoires occupés, l’armée russe force les opérateurs ukrainiens à faire passer le trafic Internet via la Russie. Cela leur laisse la possibilité de passer par la surveillance et censure Russe. La surveillance est beaucoup plus facile quand les cables réseau passent sur son propre territoire. À ce sujet les USA et le Royaume-Uni on un avantage car beaucoup de communications internationales passent par chez eux. La capacité d’espionnage est aussi plus grande. En Europe, nous sommes relativement favorisés : le trafic Européen reste en Europe. C’est loin d’être le cas partout. Certaines communications entre pays proches passent par un autre continent ou encore entre deux opérateurs du même pays, les échanges passent à l’étranger (Exemple en Colombie, tout passe par Miami ou Los Angeles).

Stéphane nous parle aussi de la distinct entre “coeurs” et “services”. Pour les journalistes et politiques, Internet se résume à ce qu’ils voient, les services (Youtube, Tiktok, GAFAM etc.). Le coeur de l’Internet c’est l’infrastructure physique (cables sous marins), protocoles d’infra (BGP, DNS). Les services peuvent obéir à des lois internationales, mais le coeur devraient rester neutre. Le souci est que les états ne demande pas mieux de garder le coeur non sanctuarisé pour plus de contrôle.

Par rapport à la censure, elle est typiquement nationale. Même en France nous avons de la censure ! Elle intervient sur les jeux d’argent, la propagande terroriste, le contenu pedo-pornographie, les contenus soumis à ayants droits (Sci-hub - Z-library), la propagande russe (RT Et Spoutnik plus récemment). Les techniques pour appliquer la censure sont multiples. En Europe la plus fréquente s’attaque au coeur : resolveur DNS menteur. L’Iran et la Chine utilisent d’autres techniques comme la deconnection de régions entières comme au Kurdistan, les serveurs de la messagerie Signal étaient bloqués. Il fallait passer par des serveurs relais pour continuer à l’utiliser.

La question se pose alors, comment étudier l’Internet ? Comment sait-on comment fonctionne l’Internet, ce qui se passe en Bolivie ou en Mongolie par exemple ? Premièrement l’Internet est transparent, plein de choses sont publiquement visibles. De plus, de nombreux chercheurs travaillent dessus et des outils techniques type Sondes OONI, sondes RIPE Atlas sont disponibles. Les volontaires posent les sondes sur leurs machines et les chercheurs peuvent étudier en communiquant avec ces sondes.

Autre sujet quand on pense à Internet, les noms de domaines. Beaucoup de gens croient que .com est international, or au contraire tout registre est national. Tout domaine de premier niveau a un pays. Conséquence pratique en cas de litige : Par quel tribunal passer ?

Pour conclure, Internet ne vit pas dans les nuages qu’on s’en félicite ou déplore. Si on ne s’occupe pas de géopolitique, la géopolitique s’occupera de vous. Ce qui tend à dire que la technique n’est pas neutre dans ses choix.

Keynote de clôture

L’AFUP Day 2023 reprendra cette année dans deux lieux différents. C’est Lille et Lyon qui ont été sélectionnées pour accueillir l’événement.

AFUP Day 2023 à Lille et Lyon

Un grand MERCI aux équipes de l’AFUP, qui ont fait un travail titanesque, qui sont toujours là pour gérer les petits tracas et nous combler de bonheur avec leur bonne humeur ! ❤️

Jour 3 (Bonus !)

L’équipe Monsieur Biz à Disney Land Paris

Après 2 jours de conférences, place à la détente ! Même si la fatigue se fait sentir, une partie de l’équipe a joué les prolongations dans les parcs de Disney Land Paris. L'équipe de Monsieur Biz arrive à Disney !

L’équipe de Monsieur Biz est devenu l’équipe Web pour chasser des arachnides dans la nouvelle attraction Spiderman ! Équipe web

Un dernier regard au chateau, et il est temps de rentrer chez nous. Chateau de Disney

Fin !

A bientôt pour de nouvelles aventures ! Ça nous a fait plaisir de vous revoir pendant ces 2 jours !

Merci l'AFUP