Forum PHP 2024

Dev, cloud & sécu10–11 octobre 2024Marne-la-Vallée, Hotel New York – The Art of Marvel, Disneyland Paris

Trois salles en parallèle (nouveauté 2024), retour des ateliers, 37 conférencières et conférenciers, 27 sponsors, environ 650 à 700 participants selon les comptes-rendus ; label LEAD (Label Événement à Ambition Durable) obtenu au niveau argent.

Une édition plus technique et plus large (trois salles), où l'écosystème PHP a surtout parlé de ses fondations : PHP 8.4 et les objets paresseux natifs, le débogage jusque dans le C, une faille glibc transformant toute lecture de fichier en exécution de code, et la fragilité des mainteneurs open source ; l'IA n'y apparaît qu'en marge, entre retour d'expérience Copilot prudent et clôture critique.

45 sessions résumées · 39 vidéos · mise à jour le vendredi 9 octobre 2026 · synthèse à compléter

Sources lues et limites de cette synthèse

Corpus : Cinq comptes-rendus publics lus : JoliCode (deux articles, 15 et 17/10/2024, huit auteurs pour le jour 2), Les-Tilleuls.coop (deux articles, une dizaine d'auteurs, octobre 2024) et Deezer Newsroom (novembre 2024). Seize vidéos de la playlist officielle AFUP ont été transcrites (sous-titres automatiques) : les deux keynotes AFUP, la conférence de clôture de Vincent Bontems, les lightning talks et douze talks. Programme officiel et interviews speakers de l'AFUP en appui.

Limites : Aucun retour individuel (LinkedIn, Mastodon, blog personnel) : le corpus reflète le regard de trois entreprises sponsors, dont les auteurs commentent parfois leurs propres collègues (Dunglas, Bluchet, Agé chez Les-Tilleuls.coop ; Wurtz chez JoliCode ; Vizinho et Lepot chez Deezer). Les sessions sans compte-rendu ni transcript lu sont listées à part ; les ateliers et coups de projecteur sponsors ne sont presque pas documentés. Les transcripts sont automatiques (noms propres déformés), et trois d'entre eux (ZDD, objets paresseux, Particularly Horrible Programs) n'ont été lus que partiellement.

Synthèse globale

1. Une édition qui se veut plus technique, et qui l'a été

L'AFUP a ouvert l'édition en annonçant trois réponses aux questionnaires de satisfaction : une troisième salle, le retour des ateliers et une sélection « bien plus technique » (keynote d'ouverture). Les comptes-rendus le confirment : Les-Tilleuls.coop juge la programmation « beaucoup plus technique cette année, après une édition précédente légèrement plus axée sur des sujets transverses ». Le centre de gravité est bas niveau : internes du Zend Engine (Viguier, Grekas), parseur PHP (Noël), extension parallel et mode ZTS (Kauffmann), allocateur mémoire attaqué par Charles Fol, débogage en C avec GDB (Dunglas). Même l'humour passe par le moteur, avec les bizarreries de Gina Banyard et le PHP en cinq ou six caractères de Benoit Viguier.

2. PHP 8.4 en ligne de mire

L'édition précède de quelques semaines la sortie de PHP 8.4, qui sert de fil conducteur. Derick Rethans en fait le tour (visibilité asymétrique, property hooks, parseur HTML5, nouveau JIT, nouveau cycle de support) et renvoie lui-même vers les talks qui approfondissent certains points. Nicolas Grekas présente les objets paresseux natifs qu'il a portés avec Arnaud Le Blanc, Gina Banyard signale des incohérences corrigées en 8.4 grâce à des développeurs financés par la PHP Foundation, Juliette Reinders Folmer évoque les dépréciations qui cassent la CI des dépendances. Le message implicite est le même partout : le langage se durcit (types, dépréciations, mode strict), et les outils comme Rector et PHPStan (Noback, Noël) deviennent indispensables pour suivre.

3. La santé de l'écosystème repose sur peu de personnes

Le thème le plus transversal est la fragilité humaine de l'open source. Juliette Reinders Folmer raconte comment elle est devenue mainteneuse « accidentelle » de PHP_CodeSniffer et appelle à financer les projets comme on prend une assurance ; Mathieu Noël pointe le facteur bus de nikic/PHP-Parser ; JoliCode et Les-Tilleuls.coop relaient l'appel à soutenir Joe Watkins, auteur de l'extension parallel ; Gina Banyard rappelle qu'avant la PHP Foundation, deux personnes seulement maintenaient le moteur ; Kévin Dunglas conclut son récit de débogage en demandant aux entreprises de payer les mainteneurs. Son histoire illustre aussi le coût de la communication : une journée de code, mais quatre mois entre le premier rapport de bug et le correctif.

4. Sécurité : la faille qui a marqué l'édition

La conférence de Charles Fol est celle que les deux blogs détaillent le plus longuement. Un dépassement d'un octet dans iconv, vieux de 24 ans, transforme toute lecture de fichier PHP en exécution de code à distance, y compris là où on ne l'attend pas (polyfill mbstring de Symfony, parseurs XML ou SVG). JoliCode résume : « c'est le carnage ». La sécurité est aussi traitée plus modestement par Alexandre Daubois (contrôle des fichiers uploadés, jugé « un peu simpliste » par JoliCode) et en filigrane chez Audrey Brouard, pour qui le cadrage avec le RSSI a conditionné l'adoption de Copilot.

5. Livrer sans friction : du code à l'organisation

Plusieurs talks convergent sur le flux de livraison plutôt que sur le code. Smaïne Milianni (Yousign) montre comment déployer sans interruption grâce à deux règles de rétrocompatibilité ; Fabien Paitry, chez le même employeur, applique fail fast et circuit breaker aux webhooks. Matthias Noback attaque le « 10x programmer » et les contraintes accidentelles des process (ticket obligatoire dans chaque commit, sprint fermé, double approbation) au profit du mob programming, de la méthode Mikado et de la livraison continue. Adriana Vizinho (Deezer) va plus loin sur le terrain managérial : l'empilement de process déresponsabilise, et un manager doit « faire au mieux avec l'équipe qu'on a ». Les lightning talks prolongent le débat avec des alternatives au sprint de deux semaines (cycles d'un mois, Shape Up en agence).

6. L'IA, présente mais en marge

Contrairement à beaucoup de conférences de 2024, l'IA reste périphérique : trois sessions sur une quarantaine, toutes prudentes. Audrey Brouard présente un déploiement de Copilot très encadré et refuse de réduire l'outil à un gain de productivité ; JoliCode y ajoute un doute sur la confidentialité réelle du code. Iana Iatsun parle d'« une évolution, pas une révolution » et recommande des modèles spécifiques, plus frugaux, quand le besoin est ciblé. Vincent Bontems clôt l'édition avec Dune pour poser les risques systémiques de l'IA (opacité, vulnérabilité, perte de compétences, coût énergétique). Juliette Reinders Folmer interdit le code généré par IA dans PHP_CodeSniffer pour des raisons juridiques ; Kévin Dunglas lui reconnaît surtout une utilité pour filtrer les rapports de bug triviaux. La question écologique traverse aussi l'édition, du label LEAD obtenu par l'AFUP au DevGreenOps d'Alexandre Morgaut.

7. Vie de l'événement : un cadre apprécié, une parité encore manquée

Les retours sur l'organisation sont unanimement positifs, sans surprise de la part de sponsors : Les-Tilleuls.coop salue une organisation « toujours impeccable », le buffet « devenu presque végétarien » et les fontaines à eau, JoliCode remercie les bénévoles et la directrice opérationnelle Amélie Defrennes. Les « conférences aliens » de fin de journée (Albane Veyron sur l'astrophysique, Vincent Bontems sur Dune) et la soirée au Disney Village font partie de l'identité de l'édition. L'AFUP a reconnu elle-même ses deux objectifs LEAD manqués : 27 % de conférencières pour 33 % visés, et une alimentation de proximité impossible à l'échelle de Disney.

8. Tensions, critiques et biais du corpus

Les critiques restent ponctuelles et viennent presque toutes de JoliCode : solution de sandbox jugée trop légère, code illisible et silence sur le conflit WP Engine / Automattic dans le talk WordPress, Symfony UX à peine abordé par Loïc Frémont, corrections factuelles sur le talk de Mathieu Noël. Le corpus est très biaisé : trois entreprises sponsors (JoliCode, Les-Tilleuls.coop, Deezer) qui commentent souvent leurs propres speakers, aucun post LinkedIn ni retour individuel trouvé, et un récap Ekino resté inaccessible. Les transcripts (seize vidéos) compensent en partie pour les keynotes et les talks sans compte-rendu (DevGreenOps, IA), mais ne disent rien de la réception par le public.

Actions concrètes citées

  1. Face à un bug « impossible », construire d'abord un reproducteur minimal, recompiler avec les symboles de débogage et sortir GDB/LLDB, puis envoyer un rapport de bug détaillé, voire un patch, au projet amont (Dunglas).
  2. Considérer toute faille de lecture de fichier en PHP comme une exécution de code à distance potentielle (CVE-2024-2961) et vérifier la mise à jour de la glibc, y compris là où le polyfill mbstring passe par iconv (Fol).
  3. Connaître l'état de maintenance de ses dépendances et financer les projets dont on dépend, en présentant la dépense comme une assurance plutôt qu'un don (Reinders Folmer).
  4. Préparer la migration vers PHP 8.4 : rendre explicites les types nullables (dépréciation des = null implicites), tester visibilité asymétrique et property hooks (Rethans).
  5. Pour déployer sans interruption, rendre chaque changement rétrocompatible avec la version précédente et procéder release par release, par exemple une colonne non nullable en deux temps (Milianni).
  6. Réduire le gaspillage en livraison : travailler en pair ou en mob, découper en tranches verticales, refactorer avec la méthode Mikado sans branche longue, viser la livraison continue (Noback).
  7. Introduire un assistant de code par une expérimentation ouverte aux développeurs, un cadrage sécurité avec le RSSI et une relecture systématique, sans réduire le bénéfice à un chiffre de productivité (Brouard).
  8. Exploiter les fonctionnalités avancées de SQL (CTE, CTE récursives) avant d'alourdir le code PHP, quitte à les mapper via des vues avec Doctrine (Timothée Martin).
  9. Adosser le numérique responsable à des référentiels (RGESN, GR491, WSG du W3C) et à des outils de linting comme ecoCode, en l'intégrant dans la boucle DevOps (Morgaut).

Session par session

Jeudi 10 octobre

Keynote▶ vidéo + transcript

Keynote d'ouverture

Équipe AFUP

  • Le label LEAD obtenu au niveau argent : l'AFUP s'était engagée avec Disney sur trois axes (zéro déchet, bas carbone, impact sociétal positif), d'où le questionnaire sur les déplacements, les tours de cou à rendre et des buffets végétariens.
  • Deux objectifs manqués et assumés : la parité (27 % de conférencières pour 33 % visés, à comparer aux 10 % de femmes dans l'écosystème selon le baromètre des salaires AFUP) et l'alimentation de proximité, impossible à l'échelle des volumes commandés par Disney.
  • Réponse aux questionnaires de satisfaction précédents : une troisième salle, le retour des ateliers et une programmation « bien plus technique ».
  • Chiffres de l'organisation : 27 sponsors, 37 conférencières et conférenciers, plus de 200 jours-personnes de travail répartis sur 20 bénévoles ; une cinquantaine de bénévoles font vivre l'association toute l'année (antennes, AFUP Day, baromètre des salaires, mentoring).
  • Appel à laisser des retours aux speakers via OpenFeedback et rappel du code de conduite, avec un numéro de contact anonyme.

Conférence▶ vidéo + transcript

What's new in PHP 8.4

Derick Rethans — PHP Foundation

Retours : Blog Les-Tilleuls.coop (Vincent Amstoutz, Vincent Chalamon)

  • Sur scène, les deux nouveautés phares : la visibilité asymétrique (public private(set)) qui supprime les getters de lecture seule, et les property hooks (get/set sur une propriété, y compris des propriétés virtuelles), utiles pour valider une valeur avec beaucoup moins de code.
  • Plus petites évolutions : new sans parenthèses avant un appel de méthode, nouveau parseur HTML5 dans l'espace de noms Dom, compilateur JIT réécrit (plus lisible, plus portable vers ARM), attribut #[\Deprecated], sous-classes PDO par driver via PDO::connect, modes d'arrondi en énumération, coût bcrypt passé de 10 à 12, grapheme_str_split pour les emojis composés.
  • Dépréciation des nullables implicites (Type $x = null) : Rethans dit avoir dû corriger « plusieurs centaines » d'occurrences dans son propre code, en comptant sur des outils comme Rector.
  • Nouveau cycle de vie des versions : deux ans de correctifs plus deux ans de sécurité, fin de support alignée sur la fin d'année, cycle de pré-versions raccourci ; politiques regroupées dans un dépôt php/policies.
  • Aveu honnête en Q&A : il n'active pas le JIT, ses sites étant trop simples pour en profiter.

Conférence▶ vidéo

Créer sa Malware Sandbox en PHP

Alexandre Daubois — Decathlon

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Thibaut Arnoud)

  • Point de départ : un audit où les anciens endpoints d'upload ne contrôlaient rien et les nouveaux seulement la taille et l'extension.
  • Antivirus externes, empreintes ou exécution en VM jugés trop coûteux ; à la place, une classe PHP qui vérifie les cas courants : caractères non ASCII, directory traversal, droits d'exécution, magic bytes, et le contenu des archives ; ClamAV pour des besoins plus poussés.
  • Lecture critique de JoliCode : conférence « fluide et agréable », mais une solution qui leur est apparue « un peu simpliste ».

Conférence▶ vidéo + transcript

L'équipe technique vue comme un orchestre : l'individu au service du groupe

Adriana Vizinho — Deezer

Retours : Blog Les-Tilleuls.coop (Julien Lary), Deezer Newsroom (employeur de la speakeuse)

  • Sur scène, une head of engineering et flûtiste semi-professionnelle part d'un constat : la dérive vers l'empilement de process uniformise les individus, et il est difficile de s'y opposer sans passer pour « une fainéante ».
  • Parallèle détaillé orchestre/équipe tech : hiérarchie (pupitres, premier violon, timbalier), process omniprésents, niveaux mélangés. Mais l'orchestre déçoit rarement son public : date de concert non décalable et programme choisi avec lucidité selon les forces disponibles.
  • Initiative individuelle sans process : l'anecdote du violoniste qui renvoie au timbalier sa partition égarée en avion en papier ; l'absurdité d'une matrice de décision pour un hautbois en panne, qui déresponsabiliserait le musicien.
  • Le rôle du manager, comme du chef : faire au mieux avec l'équipe qu'on a. Un dysfonctionnement est le plus souvent de sa responsabilité, et ajouter une page Confluence est la solution de facilité. Seul moment où la tech retrouve cette cohésion selon elle : l'incident critique en production.
  • Les-Tilleuls.coop y voit un sujet « loin d'être technique » mais utile à qui gère ou gérera une équipe ; Deezer retient l'importance de la cohésion et de la prise d'initiative.

Conférence

Les nouveautés dans Symfony 7.x

Nicolas Grekas — Symfony

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Julien Lary), Deezer Newsroom

  • Rappel du rythme de publication (correctifs mensuels, mineure tous les six mois, majeure tous les deux ans) et recommandation de mettre à jour ses dépendances régulièrement, comme une routine d'équipe (Les-Tilleuls).
  • Nouveautés retenues : PHPUnit 11 par défaut et fin du phpunit-bridge, attributs #[Map*] pour mapper la requête, #[WhenNot], ConsoleAlarmEvent en 7.2, serializers nommés pour éviter les conflits entre API Platform et Jane (JoliCode).
  • Composants en discussion : ObjectMapper, JsonEncoder, FeatureFlags, AccessToken ; un composant Uri pourrait plutôt intégrer PHP.
  • Pas de vidéo dans la playlist officielle.

Conférence▶ vidéo + transcript

Comment déboguer Xdebug... ou n'importe quel autre bug bizarre en PHP

Kévin Dunglas — Les-Tilleuls.coop

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Vincent Amstoutz, Vincent Chalamon ; employeur du speaker), Deezer Newsroom

  • Récit sur scène : des freezes signalés sur Symfony Docker puis Laravel Octane, tous deux sous FrankenPHP avec Xdebug ; le premier rapport, trop pauvre, avait été fermé.
  • Méthode : un arbre de décision (bibliothèque populaire ? version récente ? usage standard ?), puis un reproducteur minimal (trois lignes dont error_reporting(0)), recompilation de PHP, FrankenPHP et Xdebug avec les symboles de débogage, et LLDB/GDB pour obtenir une backtrace (récursion infinie dans Xdebug). Autres outils cités : core dumps, lsof, strace.
  • Cause : Xdebug remplaçait error_reporting à chaque requête, ce qui n'est pas sûr en mode ZTS (threads), d'où le correctif inspiré du PHP Internals Book. Une journée de code, mais quatre mois entre le premier rapport (décembre 2023) et la fusion, faute de temps des contributeurs.
  • Message final : la communication compte autant que la technique ; financer les mainteneurs. En Q&A, l'IA est jugée utile pour filtrer les rapports triviaux, pas pour ce type de bug.
  • JoliCode : la conférence « a captivé l'audience » et devrait donner le courage de « plonger avec détermination dans les vendors ».

Conférence▶ vidéo + transcript

GitHub Copilot : une intégration sans turbulences dans notre DSI

Audrey Brouard — Harmonie Mutuelle

Retours : Blog JoliCode

  • Démarche bottom-up racontée sur scène : sondage à l'été 2023 (86 % y voient une opportunité), essai de deux mois ouvert aux ~150 développeurs avec un canal Teams et 25 « super évaluateurs », passage en CODIR, mise en production le 1er février 2024.
  • Résultats : 26 % de suggestions acceptées, des usages surtout en autocomplétion puis en génération de tests a posteriori sur du code legacy ; 3h45 gagnées par semaine en moyenne déclarée, chiffre que la speakeuse dit elle-même ne pas aimer (« le mot productivité, je voudrais vraiment le bannir »).
  • Cadre sécurité pour un hébergeur de données de santé : licence Business uniquement, blocage des suggestions issues de code public, relecture obligatoire et suivi qualité dans SonarQube. Licence attribuée sur demande du manager, revue mensuelle des licences inutilisées.
  • Un an après : 72 licences (environ 50 % des développeurs), sans promotion ni obligation. Vigilance sur les juniors (risque de dépendance) et sur la qualité de la base de code, que Copilot reproduit.
  • Réserve de JoliCode : malgré les engagements de la licence entreprise, le doute demeure sur des fichiers locaux envoyés dans le prompt et conservés « dans des logs à la Silicon Valley ».

Conférence▶ vidéo

StandAAArdisez vos tests !

Nerea Enrique — ekino

Retours : Blog Les-Tilleuls.coop (Vincent Chalamon)

  • Présentation du pattern Arrange, Act, Assert (Bill Wake, 2001) pour structurer les tests ; un bon test est maintenable, rapide et protège des régressions.
  • Le Test Data Builder facilite l'étape Arrange sans dupliquer le code.
  • Conclusion retenue : AAA est utile mais doit être complété par d'autres pratiques. Le récap Ekino (Medium), qui en parle comme d'un pattern très utilisé en interne, n'a pas pu être lu.

Conférence▶ vidéo

PHP/Parallel : Accélérer sensiblement ses temps d'exécution

Thierry Kauffmann — Arawa

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Kévin Dunglas), Deezer Newsroom

  • Retour d'expérience sur DiViM-S, orchestrateur libre en PHP qui pilote jusqu'à 150 serveurs BigBlueButton pour l'Éducation nationale, en allumant les machines seulement quand la charge ou l'agenda l'exige.
  • Cœur technique : l'extension parallel de Joe Watkins, du vrai multithreading sur le principe « partagez la mémoire en communiquant ». Deezer retient 100 connexions SSH en deux secondes au lieu de trois minutes en séquentiel.
  • Limites : pas d'objets par référence entre threads, pas de yield ni de déclaration de classe dans une tâche ; PHP doit être compilé en ZTS, ce que Dunglas présente comme un argument pour FrankenPHP (où l'extension est disponible).
  • JoliCode et Les-Tilleuls relaient l'appel à soutenir financièrement Joe Watkins.

Conférence▶ vidéo

CTE : la puissance inexploitée de votre base de données SQL

Timothée Martin

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Nicolas Philippe)

  • Salle comble pour du SQL, à la surprise du speaker selon JoliCode.
  • Les CTE (WITH) clarifient les sous-requêtes, se chaînent, s'utilisent en écriture, et les CTE récursives (en fait des boucles) parcourent des graphes ; PostgreSQL sait détecter les cycles avec CYCLE.
  • Performances : « ça dépend », à mesurer, mais on évite des allers-retours avec le code métier.
  • Contournement du manque de support par Doctrine : mapper des vues en lecture seule ou passer par NativeQuery et ResultSetMapping.

Conférence▶ vidéo

Le grand cycle de la vie (d'une variable)

Benoit Viguier — Lendable

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Vincent Amstoutz)

  • Vingt minutes « claires et didactiques » (JoliCode) sur l'allocation et la libération mémoire dans le Zend Engine, utiles pour les processus longs (workers, crons).
  • Notions couvertes : garbage collector et gc_status, références circulaires, copy on write (qui ne s'applique pas aux objets), WeakReference et WeakMap pour des caches qui ne retiennent pas les objets.
  • Conseils retenus : pas d'exception dans les destructeurs.

Conférence▶ vidéo

throw new Exception(); Oui mais laquelle ?!

Olivier Dolbeau

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Vincent Chalamon)

  • Une exception n'est pas un bug mais un cas prévisible hors du nominal.
  • Dans une bibliothèque : anticiper les erreurs, une interface commune à toutes les exceptions (exemple de symfony/http-client), ne jamais lever une exception étrangère.
  • Dans un produit final : réutiliser d'abord les exceptions des bibliothèques, puis créer une exception métier si nécessaire, et en dernier recours les exceptions natives.
  • Ne pas tout attraper : une erreur 500 quand la base est tombée est normale.

Conférence▶ vidéo

Un parser de PHP en PHP : le cœur des outils d'analyse statique

Mathieu Noël

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Alan Poulain)

  • Lexer, tokens, parser, AST : la plupart des outils (PHPStan, Rector, php-cs-fixer, PhpMetrics) reposent sur nikic/PHP-Parser, avec démonstration d'une règle de style maison.
  • Facteur bus : Nikita Popov n'étant plus aussi actif, le speaker plaide pour un parser intégré au cœur de PHP ; alternatives jugées limitées (tolerant-php-parser, php-ast, pxp).
  • Correction de JoliCode : PHP expose bien token_get_all() (utilisé par PHP-Parser), et php-ast ne fait qu'exposer l'AST déjà construit par le moteur.

Conférence▶ vidéo

De « 0 » à « tracing distribué » en quelques lignes de code, c'est possible !

Vincent Lepot — Deezer

Retours : Blog Les-Tilleuls.coop (Julien Lary), Deezer Newsroom (employeur du speaker)

  • Démonstration en direct sur une application distribuée qui présente un problème de performance et une erreur, résolus grâce au troisième pilier de l'observabilité : les traces.
  • Quatre étapes OpenTelemetry : backend de stockage (Grafana Tempo), extensions PHP (opentelemetry, protobuf), paquets Composer d'auto-instrumentation (Symfony, Laravel, PDO), configuration.
  • Bénéfices cités : repérer les requêtes N+1 et les appels synchrones lents, améliorer l'expérience utilisateur, le chiffre d'affaires et la durée de vie du matériel.

Conférence▶ vidéo + transcript

Resurrecting the Dead

Juliette Reinders Folmer

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Vincent Chalamon)

  • Sur scène, une « mainteneuse accidentelle » (Requests, PHP Parallel Lint, PHP_CodeSniffer) : un patch, puis la CI à réparer, puis la pression de la communauté. PHP_CodeSniffer (plus de cinq millions de téléchargements par mois) a été repris en fork avec la bénédiction de l'ancien mainteneur, en gardant le nom du paquet Composer.
  • Cycle de vie d'un projet (jeune, mature, zombie, mort) et causes d'abandon : la vie, la maladie (témoignage sur un co-mainteneur atteint d'une tumeur cérébrale), le burn-out aggravé par les entreprises qui envoient des contributeurs au lieu de financer.
  • Succession : documenter, activer la communauté, identifier et coacher des candidats, valider la confiance (rappel de l'attaque xz-utils), partager « les clés du château ».
  • Formule reprise par JoliCode : « si quelque chose a l'air de juste fonctionner, c'est que quelqu'un se donne à fond derrière ». Financer = s'assurer, pas donner. Le guide de contribution de PHPCS interdit le code généré par IA, faute de pouvoir se défendre juridiquement.
  • Bilan après dix mois : neuf releases, support de PHP 8.2 et 8.3, premier nouveau sniff accepté depuis trois ans.

Conférence▶ vidéo

PMU: un plugin composer pour la gestion de Monorepository en PHP

Antoine Bluchet — Les-Tilleuls.coop

Retours : Blog Les-Tilleuls.coop (Vincent Amstoutz ; employeur du speaker)

  • Monorepo contre polyrepo : les équipes en polyrepo sont souvent isolées, ce qui complique communication et CI/CD.
  • Après Lerna, Nx, Bazel, Turborepo côté JS et Mono ou monorepo-builder côté PHP, puis splitsh/lite pour API Platform 4, création de PMU faute de fonctionnalités suffisantes.
  • Commandes ajoutées à Composer : composer graph, composer check-dependencies, composer blend, et le Project Linking par liens symboliques dans les vendors.

Conférence▶ vidéo

Une gestion dynamique des permissions en PHP

Marion Agé — Les-Tilleuls.coop

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Vincent Chalamon ; employeur de la speakeuse)

  • Rappel des notions (authentification, autorisation, DAC, MAC, RBAC, ABAC) puis limites des Voters Symfony quand le métier exige des droits objet par objet.
  • Solution maison : permissions stockées et évaluées en base, administrables sans toucher au code, optimisées par lazy loading des Voters, index et cache.
  • Exposition au front via JWT ou API, avec CASL et Mercure pour mettre à jour les droits en temps réel.
  • JoliCode juge la présentation trop complète pour être résumée et renvoie aux slides.

Conférence▶ vidéo + transcript

How to Eliminate Waste in your Development Process

Matthias Noback

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Julien Lary)

  • Sur scène, deux principes : la performance de l'équipe avant la performance individuelle, et un flux de valeur régulier. Le mythique « 10x programmer » produit vite mais crée dépendance et gaspillage.
  • Pair et mob programming (un driver, des navigateurs) : frustrant au début, puis tout le monde apprend les étapes « magiques », partage le domaine, décide mieux, et la code review devient inutile. Pour soi-même, une mini-rétrospective toutes les 20 minutes.
  • Où la valeur se coince : backlog, branches longues, revue, déploiement. Contraintes accidentelles dénoncées : ticket obligatoire dans chaque commit, estimation de tout, sprint fermé, deux approbations par merge request.
  • Pour le refactoring, la méthode Mikado (essayer naïvement, noter le prérequis, tout annuler, commencer par le prérequis fusionnable) ; pour les fonctionnalités, le découpage vertical ; en toile de fond, la livraison continue.
  • JoliCode retient la caricature du lead qui crie « attention, je déploie » dans l'open space comme « mauvais signe » ; Les-Tilleuls note la critique d'un formalisme excessif des méthodes.

Conférence▶ vidéo + transcript

L'inévitable chemin vers le DevGreenOps

Alexandre Morgaut — Capgemini

  • Le speaker, qui anime une guilde numérique responsable, veut faire de l'approche green une exigence non fonctionnelle comme la performance, la sécurité ou l'accessibilité.
  • Alliés et « faux amis » : performance, cloud, FinOps, cache ou builds optimisés aident, sauf s'ils servent d'excuse pour multiplier les ressources (caches préalimentés en permanence, builds relancés sans cesse).
  • Conseils techniques : découper les flux selon leur durée de cache plutôt que tout regrouper ; HTTP/2 et HTTP/3 réduisent l'intérêt de minimiser le nombre de requêtes ; processeurs ARM côté cloud. Règles des 3P, 3U (utile, utilisable, utilisé) et 3R, avec l'idée de retirer les fonctionnalités inutilisées.
  • Cadre réglementaire qui devient contraignant (loi REEN, RGESN avec moyens de contrôle, CSRD, WSG du W3C) ; outils de mesure, questionnaires (NumEcoDiag) et linting ecoCode (règles PHP comme sortir le count() d'une boucle).
  • Passage sur l'IA : beaucoup d'entreprises ont abandonné leurs engagements carbone avec le boom de l'IA.

Conférence▶ vidéo + transcript

PHP: Particularly Horrible Programs

Gina Banyard — PHP Foundation

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Alan Poulain)

  • En ouverture, un plaidoyer pour la PHP Foundation, présentée comme l'assurance des entreprises que le moteur est maintenu (« il y a trois ans […] il y avait deux personnes »).
  • Puis un « one woman show » (JoliCode) de bizarreries du langage, souvent liées au type juggling : '007' == '7', incrément de 'Zz', classe readonly modifiée via ArrayObject, comparaisons de flottants dépendant de precision, jusqu'à un segfault ; plusieurs ont été corrigées depuis, certaines par la speakeuse.
  • Les-Tilleuls rappelle que beaucoup de ces pièges s'évitent avec le mode strict.

Conférence▶ vidéo

Gérer des gros volumes de données avec PHP

Joël Wurtz — JoliCode

Retours : Blog JoliCode (employeur du speaker)

  • Import de catalogues de marketplace : ne plus traiter les lignes inchangées grâce à un hash par ligne, une table temporaire (LOAD DATA INFILE) et des jointures, pour n'importer que le delta.
  • Sur redirection.io : générateurs PHP et streaming de bout en bout, qui réduisent la mémoire au point de supprimer des couches de cache.
  • Conclusion citée : « il n'y a jamais de solution magique au traitement de gros volumes de données », il faut d'abord comprendre le besoin pour simplifier.

Atelier

API Platform 4 : de la RAD à l'extensibilité

Antoine Bluchet — Les-Tilleuls.coop

Retours : Blog Les-Tilleuls.coop (employeur du speaker)

  • Atelier de deux heures sur inscription : partir des fonctionnalités RAD d'API Platform (avec Symfony et avec Laravel), puis complexifier avec CQRS et DDD via les Providers et Processors.
  • Seul retour : celui de l'employeur de l'animateur.

Lightning talk▶ vidéo + transcript

Lightning-talks

Clément Talleu — Les-Tilleuls.coop, Jacques Bodin-Hullin — Monsieur Biz

Retours : Blog Les-Tilleuls.coop

  • Herms, bot Discord de covoiturage pour l'événement (Symfony Console et ReactPHP), dans la lignée du label LEAD.
  • PHP Redis OM (Talleu) : un object mapper qui implémente l'interface Doctrine pour stocker par exemple des paniers e-commerce dans Redis sans réécrire les contrôleurs.
  • Des cycles agiles d'un mois (trois semaines de développement, une de validation métier, une de déploiement servant de cooldown) contre l'épuisement des sprints de deux semaines.
  • Une bibliothèque Flow de programmation par flux asynchrones (Darkwood), puis un plaidoyer pour les builds reproductibles (chemins absolus, dates, métadonnées tar, Nix).
  • Shape Up adapté en agence (Bodin-Hullin) : façonner, parier, construire, sur des cycles de trois semaines, en remplaçant l'estimation en points par un « appétit ».

Keynote▶ vidéo

Un peu plus près des étoiles

Albane Veyron

Retours : Blog Les-Tilleuls.coop (Alan Poulain)

  • Première « conférence alien » de l'édition (sujet hors PHP en fin de journée) : un parcours de l'astrophysique (formation des étoiles, l'étoile DG Tau B) au coaching professionnel, autour du rêve et de la curiosité.
  • Qualifiée de présentation « digne des TED talks : travaillée, interactive et belle », parfaite pour clore la journée.

Vendredi 11 octobre

Conférence▶ vidéo

L'aventure d'une requête HTTP, ou le chemin de la vie des devs

Pascal Martin — Bedrock

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Kévin Dunglas), sketchnote de Mathieu Desnouveaux (cité par JoliCode)

  • Suivre une requête de la barre d'adresse au serveur pour balayer logiciel, réseau, hébergement, front, back, tests, CI/CD, sécurité et légal.
  • Accent sur l'observabilité (Wireshark, Sysdig) pour comprendre ce qui se passe en coulisse.
  • Formule retenue : « notre métier est un assemblage de multiples compétences » ; la conférence comme boussole pour choisir ses prochaines technologies et pistes de carrière. Dunglas la décrit comme « léchée ».

Conférence▶ vidéo

Une Monade, simplement, c'est quoi ?

Gina Banyard — PHP Foundation

Retours : Blog Les-Tilleuls.coop (Vincent Chalamon), Deezer Newsroom

  • Démystification par l'exemple : une monade combine des fonctions en enveloppant leurs retours dans un type à effets additionnels, utile surtout pour la gestion d'erreurs.
  • Implémentations PHP de Either (L | R), Maybe (null | T), Exception (T | Exception) et List.
  • Deezer y voit une approche proche du pattern Pipeline, différente des réflexes orientés objet.

Conférence▶ vidéo

Créer des interfaces d'administration rapidement avec Symfony UX et Sylius

Loïc Frémont — Sylius

Retours : Blog JoliCode

  • La Grid Sylius standalone, découplée du système de ressources, permet des back-offices hors e-commerce ; les hooks Twig remplacent les « event templates ».
  • Démonstration : entité, formulaire et grid générés avec MakerBundle, attribut #[AsResource], filtres et actions, autocomplétion via ux_autocomplete.
  • Réserve de JoliCode : Symfony UX très peu abordé et documentation pas encore écrite, même si le code est utilisable.

Conférence▶ vidéo + transcript

Utiliser une faille de la glibc pour attaquer le moteur PHP

Charles Fol — Lexfo

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Thibaut Arnoud)

  • Sur scène, le chercheur raconte une découverte fortuite : en automatisant des chaînes de filtres php://filter (pour faire passer /etc/passwd pour du JSON, outil wrapwrap), un crash le mène à un dépassement de tampon vieux de 24 ans dans iconv de la glibc, lors d'une conversion vers ISO-2022-CN-EXT.
  • Un seul octet (0x48) écrit hors tampon suffit à corrompre la liste chaînée de l'allocateur PHP, puis à réécrire un pointeur de fonction : toute lecture de fichier devient une exécution de code à distance, de PHP 7 à aujourd'hui, avec un payload qui tient dans une requête GET (démo sur Magento via une XXE).
  • Surfaces concernées : file_get_contents, getimagesize, XXE, LOAD DATA LOCAL INFILE, parseurs (HTML vers PDF, XLIFF, SVG), appels directs à iconv (Roundcube) et même le polyfill mbstring de Symfony qui s'appuie sur iconv.
  • Divulgation saluée : équipe glibc « compétente, rapide et sympa », CVE-2024-2961. Trois semaines de travail pour l'exploit, détaillé sur le blog Ambionics.
  • JoliCode résume : « une faille de lecture de fichier se transforme très rapidement en RCE et c'est le carnage ».

Conférence▶ vidéo

Welcome to the Age of Static Analysis and Automated Refactoring

Matthias Noback

Retours : Blog Les-Tilleuls.coop (Vincent Chalamon)

  • L'analyse statique (PHPStan, Psalm) anticipe les erreurs comme un humain qui lit le code, en construisant un AST et en appliquant des règles.
  • Ce sont les normes du projet qui en fixent l'usage ; une fois en place, la revue de code peut se concentrer sur la conception.
  • Rector pousse le refactoring automatisé bien au-delà de ce que fait PHPStan.

Conférence

Et si on repensait les ORMs ?

Baptiste Langlade

Retours : Deezer Newsroom

  • Présentation de l'ORM Formal, conçu à partir du DDD et de l'immuabilité, face aux limites des ORM actuels dans les workers (mémoire, entités mutables, identifiants imposés).
  • Deezer retient la revendication du speaker que Formal est « 40 % plus rapide que Doctrine » et ses multiples backends (SQL, système de fichiers, Elasticsearch).
  • Pas de vidéo dans la playlist officielle ; un seul retour, sans regard critique.

Conférence▶ vidéo + transcript

Les objets paresseux en PHP

Nicolas Grekas — Symfony

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Nicolas Philippe)

  • Sur scène : la paresse sert la performance (le mailer jamais instancié), casse les références circulaires et permet de réinitialiser un objet, comme l'EntityManager de Doctrine « closed » dans un worker Messenger.
  • Les quatre stratégies de Martin Fowler : lazy initialization, value holder, virtual proxy et ghost object, ces deux dernières déjà fournies par VarExporter et utilisées par Doctrine.
  • Support natif en PHP 8.4 via ReflectionClass::newLazyGhost et les proxys (travail de Grekas et Arnaud Le Blanc), qui permet notamment de rendre lazy des classes final.
  • Mécanisme « bas niveau » : on l'utilisera surtout à travers des bibliothèques. Seule différence de comportement observable selon lui : une exception d'initialisation survient plus tard.

Conférence▶ vidéo

The Business of Bisecting

Pauline Vos

Retours : Blog Les-Tilleuls.coop (Justine Delalleau), Deezer Newsroom

  • git bisect pour isoler le commit fautif d'une régression, mais aussi d'un build anormalement long ou de tests qui ralentissent la CI.
  • Astuces : renommer good/bad, git bisect replay, automatisation par script.
  • Condition de réussite : des commits atomiques. Conférence qualifiée de « captivante ».

Conférence▶ vidéo

Optimiser les performances de votre API avec AutoMapper

Joël Wurtz — JoliCode

Retours : Blog JoliCode (employeur du speaker), Deezer Newsroom

  • AutoMapper, bibliothèque de JoliCode, génère du code de mapping au lieu de s'appuyer sur des métadonnées comme le Serializer, d'où des gains de performance sur une application API Platform.
  • Migration endpoint par endpoint, normalizers custom transformés en transformers, section dédiée dans le Profiler.
  • Recommandation : « 1 endpoint = 1 DTO », pour un typage fort et la fin des groupes de sérialisation. Salle comble selon JoliCode.

Conférence▶ vidéo

L'Orienté Objet au Cœur du Templating Symfony : Découvrez TwigComponent et LiveComponent

Felix Eymonot

Retours : Blog JoliCode

  • Découper les templates en composants liés chacun à une classe PHP : réutilisabilité, encapsulation, modularité, interaction.
  • Objectif selon JoliCode : des templates orientés objet « auxquels les développeurs back n'auraient pas peur de toucher », testables avec InteractWithTwigComponents.
  • LiveComponents, surcouche inspirée de Livewire, pour modifier les données en direct sur la page.

Conférence

Écrire du Php avec seulement 6 caractères

Benoit Viguier — Lendable

Retours : Blog JoliCode, Deezer Newsroom

  • Présentation humoristique, « presque digne d'un one-man show » (JoliCode), sur le mantra « sous contrainte, on devient plus créatif ».
  • Le défi aurait finalement été tenu avec cinq caractères selon JoliCode, au prix d'un simple echo pesant 240 Ko.
  • Pas de vidéo dans la playlist officielle.

Conférence▶ vidéo

Webhooks at scale

Fabien Paitry — Yousign

Retours : Blog JoliCode

  • Environ 120 000 webhooks par jour chez Yousign, via RabbitMQ et des workers Symfony ; des envois par lots vers un endpoint muet pouvaient saturer la file.
  • Rejet de la solution « quick and dirty » (ajouter des workers) au profit d'une politique fail fast : timeout ramené à 1 seconde au premier appel, file dédiée aux retries.
  • Circuit breaker (ouvert, semi-ouvert, fermé) par nom de domaine, avec la bibliothèque Ganesha intégrée au HttpClient Symfony.

Conférence▶ vidéo

Découverte de Castor : Le Task Runner PHP qui Simplifie votre Workflow

Grégoire Pineau

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Kévin Dunglas)

  • Castor, task runner écrit en PHP dont les tâches sont écrites en PHP : attributs, réflexion et composants Symfony pour une expérience développeur soignée.
  • Fonctions natives citées par Dunglas : mode watch, parallélisme, HTTP, .env, SSH, YAML, cache, notifications desktop, et distribution en binaire statique embarquant PHP (static-php-cli).
  • Dunglas, qui avoue « une aversion pour les Makefile » hors C/C++, conclut : « Adoptez un castor ! ».

Conférence▶ vidéo

Dis Siri, mets des éléPHPants dans ma domotique

David Buros — Monsieur Biz

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Marion Agé)

  • Domotique à petit budget sur Home Assistant, Zigbee, MQTT et Zigbee2MQTT : températures, consommation électrique par appareil, jusqu'au solde du compte bancaire.
  • Modules PHP maison qui interrogent des API tierces et publient en MQTT, empaquetés en binaire avec FrankenPHP, pour éviter d'écrire du Python.
  • Sujet rarement abordé en conférence PHP, salué par les deux blogs.

Conférence▶ vidéo + transcript

Le Zéro Downtime Deployment en pratique

Smaïne Milianni — Yousign

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Vincent Amstoutz)

  • Sur scène, l'argument : mettre en production n'importe quand (l'équipe Yousign déployait le vendredi même de la conférence), sans page de maintenance ni mise en production à 6 h, avec des rollbacks simples.
  • Deux règles : chaque changement est rétrocompatible avec la version en production, et les changements se font release par release (N+1 compatible avec N, jamais N+2 avec N).
  • Cas pratiques : colonne non nullable en deux releases, propriétés de messages RabbitMQ avec valeur par défaut, évolution de contrats d'API ; outils safe-migrations et zdd-message-bundle.
  • Limites assumées : utile seulement si l'on déploie souvent, et une maintenance reste parfois nécessaire (« faut pas être dogmatique »). Conseils : documentation par cas, post-mortems, un référent ZDD dans l'équipe.

Conférence▶ vidéo

WordPress: Une cause perdue?

Cyrille Coquard

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Kévin Dunglas)

  • Ouverture provocante (WordPress est-il « de la merde » ?) puis réhabilitation : le CMS propulse près de 44 % des sites et rend la création accessible à tous, avec une dette technique remontant à 2003.
  • Pour les plugins : PHPUnit, Composer avec Mozart ou Strauss pour éviter les conflits de dépendances, injection de dépendances, event dispatcher objet, et le framework Launchpad du speaker.
  • Critiques de JoliCode : code des slides illisible depuis la salle, et silence sur le conflit WP Engine / Automattic. Les-Tilleuls compare avec Acorn, qu'ils utilisent.

Conférence

Covariance, Contravariance et Diamant

Alexandre Daubois — Decathlon

Retours : Blog JoliCode, Blog Les-Tilleuls.coop (Vincent Chalamon)

  • Pourquoi PHP permet d'élargir le type d'un argument (contravariance) mais pas celui d'un retour (covariance) : le principe de substitution de Liskov.
  • Génériques documentés avec PHPStan ; problème du diamant en héritage multiple, et les traits comme « alternative » qui apportent leurs propres problèmes.
  • Les deux blogs renvoient aux slides, « une mine de bons exemples ». Pas de vidéo dans la playlist officielle.

Conférence▶ vidéo + transcript

Démystifier l'IA : Un guide pratique pour les devs PHP

Iana Iatsun

  • Thèse posée sur scène : l'IA générative est « une évolution, pas une révolution » (Turing, numérisation massive, GPU, AlexNet en 2012, transformers) ; sa vraie nouveauté est l'accessibilité par le langage naturel.
  • Pédagogie par la cuisine : acquisition et préparation des données, apprentissages supervisé, non supervisé et par renforcement ; un modèle ne rend qu'une probabilité (« pomme à 85 % »), la décision reste humaine, et la responsabilité du choix des données incombe à qui construit le modèle.
  • Outils : API de cloud (OCR, reconnaissance vocale, entités nommées) et modèles ouverts sur Hugging Face. Elle juge impossible le remplacement des développeurs, faute de besoins bien clarifiés.
  • En Q&A : préférer un modèle spécifique à un LLM quand le besoin est ciblé (plus précis, plus frugal) ; limites de l'entraînement sur des données générées et du watermarking, qui dépend de la bonne volonté des acteurs.

Conférence

Utiliser un framework pour écrire de la documentation ?

Martin Supiot — Alma

Retours : Blog JoliCode, Deezer Newsroom

  • Constat d'une équipe en croissance (60 personnes) : la documentation était difficile à utiliser et à écrire.
  • Framework Diátaxis : explications, tutoriels, guides pratiques et références, avec des titres normés (« Pourquoi… », « Comment… », « Les différents… ») et des templates.
  • Conseils : connaître son audience, désigner des relecteurs et des mainteneurs par document, supprimer l'obsolète, donner une date de validité (astuce Notion). Documenter la documentation a fait écrire et consulter davantage toutes les équipes. Pas de vidéo dans la playlist officielle.

Keynote▶ vidéo + transcript

Peut-on imaginer un avenir sans IA ? (L'innovation à l'épreuve de Dune de Frank Herbert)

Vincent Bontems

  • Conférence de clôture d'un philosophe des techniques : utiliser l'univers cohérent de Dune (méthode de « science fiction prototyping ») pour « penser un autre monde pour penser notre monde autrement ».
  • Stratégies face à un milieu hostile (s'adapter, transformer le milieu, renoncer, se transformer) : le distille est démonté par la thermodynamique, la terraformation d'Arrakis illustre une innovation lente et à basse puissance et l'écologie comme « science des conséquences ».
  • Le Jihad butlérien (« tu ne feras point de machine à l'esprit de l'homme ») hérite d'une vision qu'il juge réactionnaire, mais pose une vraie question : comment la culture peut-elle encore réguler une civilisation technique qu'elle ne comprend plus.
  • Quatre risques systémiques de l'IA, issus de ses travaux pour la défense : opacité (vers une « cryptocratie »), vulnérabilité (asymétrie attaque/défense, empoisonnement des données), « débilité » au sens propre (perte des compétences quand l'expert part à la retraite) et insoutenabilité énergétique. Position finale : pas un renoncement total, mais choisir stratégiquement où mettre de l'IA.

Keynote▶ vidéo + transcript

Keynote de clôture

Équipe AFUP

  • Remerciements aux 27 sponsors, 37 speakers, bénévoles et à Amélie, « chef d'orchestre » de l'organisation, ainsi qu'aux partenaires Disney et au prestataire vidéo.
  • Les vidéos seront publiées en calendrier de l'Avent, comme l'année précédente, dont les vidéos ont fait plus de 34 000 vues, un record pour l'AFUP.
  • Annonce de l'AFUP Day 2025 (7e édition) le 16 mai à Lille, Lyon et Poitiers, après des éditions complètes dans quatre villes en 2024 ; appel à conférences ouvert jusqu'au 11 novembre.

Sessions sans retour trouvé (3)

  • La goutte d'eau qui fait déborder le Cloud (J. Joye, ekino ; vidéo OCClZfNUMI8)
  • [Atelier 2h] PHP/Parallel : développer une application massivement parallèle (T. Kauffmann)
  • Coups de projecteur : Les-Tilleuls.coop, ActivInnov, labellisation LEAD (AFUP), Clever Cloud

Sources