Retour sur le Forum PHP 2020

Il y a quelques jours, nous participions à l’édition en ligne du Forum PHP 2020. Cette dix-neuvième édition, circonstances sanitaires obligent, était diffusée en direct depuis Livestorm, la plateforme de streaming déjà utilisée par l’AFUP lors de l’AFUP Day 2020. Durant ces deux jours axés sur PHP et son écosystème, et à la veille de la version 8 du langage, le temps était à la réflexion sur notre place en tant que développeur·se au cœur des produits que nous développons

Pleins feux sur la 8ème version de PHP et bilan de ses 25 années d’existence   

Gabriel Caruso a présenté les nouveautés de PHP 8. Parmi les plus attendues, nous retrouvons bien sûr les attributs - un équivalent aux annotations de Java, dont l’un des objectifs est de redonner aux annotations de la PhpDoc leur rôle originel : documenter le code. Autres nouveautés du langage, le support natif des types d’unions 2.0, qui permettent de définir plusieurs types à une même variable, le bloc match, une alternative plus rapide à écrire et plus stricte en termes de typage au bloc switch, ou encore la possibilité de fournir les valeurs aux arguments d’une fonction en les nommant, comme en Python. Concernant la compilation Just In Time (JIT), il ne faudra pas s’attendre à des améliorations de performances aussi importantes que pour PHP 7.0. Gabriel a pour autant rappelé que c’est dans le cadre de processus lourds que le compilateur JIT tire réellement son épingle du jeu, les cas d’usage simples comme une API profitant généralement déjà de bonnes performances.

Qui dit nouvelle version majeure, dit rupture de rétrocompatibilité. Parmi celles qui pourront vous donner des cheveux blancs, on notera :

  • La signature des méthodes magiques est maintenant vérifiée et une erreur surviendra si elle est incorrecte. Fini, les méthodes __toString(): bool !
  • L'API de réflexion largement améliorée, elle fournit maintenant plus d’informations sur les fonctions ;
  • La correction d’une absurdité sur l’opérateur d’égalité : désormais, 0 == ‘foo’ et 42 == ‘42foo’ ne retourneront plus true mais false.

Pour finir, Gabriel a tenu à rassurer concernant le statut de PHP pour Windows : pour rappel, Microsoft a récemment annoncé qu'ils mettaient fin à leur support de PHP sur leur système d'exploitation, ce qui n’a pas manqué d’inquiéter la communauté sur l’avenir du langage sur cette plateforme. Microsoft a en réalité décidé de ne plus compiler le binaire de PHP lui-même mais continue cependant de contribuer activement à PHP. La core team du langage a par ailleurs d'ores et déjà trouvé une solution pour continuer de distribuer PHP sur le système au menu Démarrer.

Zeev Suraski, contributeur à PHP depuis sa version 3, a pour sa part fait le bilan des 25 années d’existence du langage. Après des débuts très modestes et contre toute attente, le PHP s'est rapidement imposé comme le langage le plus important du Web, alimentant un pourcentage ahurissant de serveurs et certains des principaux sites Web que nous utilisons tous quotidiennement. Zeev a retracé l’historique de PHP, illustrant les volontés de ses créateurs à la fois de se démarquer et de s’inspirer d’autres langages,  mais surtout nous retiendrons leur volonté de conserver un langage flexible, dont le typage fort doit rester une option. Il est fier de ce qui a été accompli jusqu’ici même s’il reconnaît également les faiblesses du langage comme certaines inconsistances, qu’il espère voir disparaître petit à petit. Enfin il nous a encouragé à participer et contribuer à notre échelle, que ce soit via les votes sur les RFC, les propositions, les corrections de bug, ou même de tester nos applications. Nous ne sommes pas tous Rogue ou JetBrain. En résumé une jolie promenade historique !

L'écosystème PHP toujours bien représenté  

PHP bénéficie d’un riche écosystème où bibliothèques et outils divers rayonnent. Pendant le Forum PHP, nous avons encore eu droit à des conférences variées et nous avons eu la chance d’avoir plusieurs membres de notre équipe dans le line up.

  • Notre coopératrice Jade Bellereau a présenté Click ‘N’ Collect, notre solution basée sur Sylius et permettant aux  commerçants de poursuivre une activité commerciale dans le respect des consignes sanitaires actuelles. Ses slides viennent d’être publiées
  • Kévin Dunglas nous a présenté Vulcain.rocks, l’outil qui rend obsolète GraphQL. Cet outil permet de coupler une API REST en utilisant les capacités hypermédia de celle-ci (souvent avec une documentation OpenAPI, et avec les formats JSON-LD, JSON:API, ou HAL) afin de requêter à l’aide d’un JsonPointer (format s'apparentant à une expression régulière) fourni dans un entête HTTP. Cet outil exploite les nouvelles capacités de HTTP/2 afin d’aller chercher en amont les ressources associées réclamées par l’expression de cet en-tête. Le but final étant d’avoir les données disponibles sans avoir à effectuer la requête côté client. Cette révolution permet une plus grande souplesse tout en respectant l’architecture REST, permet d’exploiter du cache et d’accélérer jusqu’à 40x le temps de réponse. Parce que Kévin n’est jamais sans surprise, il en a profité pour nous annoncer qu’il a travaillé sur une intégration serveur avec Caddy afin d‘intégrer cache et reverse proxy d’un seul tenant avec Vulcain.
  • Antoine Bluchet quant à lui nous a proposé une démonstration technique avançant les dernières nouveautés et capacités de temps réel avec PHP. Il aura enflammé le chat d’applaudissements à l’aide d’un bot relié à une application PHP, distribuant de manière asynchrone grâce à Mercure.rocks et les EventSources. Côté PHP c’est le composant HttpClient de Symfony qui s’affaire pour expédier les messages. Une belle démonstration de capacité qui s’accompagne d’un benchmark de Mercure dont vous pourrez retrouver les résultats ici et .
  • De son côté, Antti Rössi nous a proposé de pirater nous-même notre propre application afin de vérifier sa robustesse, avant que quelqu’un d’autre n’en ait l’idée. Injection SQL, injection d’objet, élévation de privilège… sont autant de possibilités pour un acteur malveillant de nuire à votre application, et par conséquent, à votre activité. Après une démonstration impressionnante de l’exploitation de chacune de ces failles, Antti nous a donné quelques conseils pour éviter une situation désastreuse : ne jamais faire confiance à l’utilisateur ; mettre à jour les logiciels exécutés en production le plus rapidement possible ; ne jamais déployer du code que l’on ne comprend pas ; suivre le principe du moindre privilège : moins une application possède de privilèges et mieux elle se portera ; apprendre à réfléchir comme un pirate et apprendre les bases du piratage ; toujours se souvenir qu’un grand pouvoir implique de grandes responsabilités.

L'impact des conférences “non techniques”

Bien que toujours liée à PHP, cette édition 2020 nous a permis de nous remettre en question sur la place de l’éthique dans l’informatique et sur les produits que nous développons, mais aussi sur la place (parfois trop faible) de la bienveillance et de la communication dans les équipes. À ce sujet, Kim Laï Trinh, anciennement développeur à la Ruche qui dit Oui, nous a fait part de son analyse des difficultés inhérentes à la revue de code au sein d’une même équipe, rappelant que “vous n’êtes pas votre code”, allant même jusqu’à aborder des sujets délicats tels que les discriminations.

Agnès Haasser, développeuse indépendante, nous a quant à elle incités à explorer des solutions basées sur la communication non-violente et l’empathie, dont elle a elle-même fait l’expérience positive d’abord dans son rôle de parent, puis dans son travail. Nous avons été particulièrement touchés par la sincérité de ces conférences. Le Forum PHP 2020 a aussi clôturé son événement avec le chercheur Gilles Dowek, qui a rappelé lors de sa conférence au sujet de la place de l’éthique dans le web, que les études d’informatique n’étaient pas genrées.

La communauté présente, même à distance

La communauté ne pouvant pas déambuler comme d’habitude à travers les stands, elle avait néanmoins l’opportunité de rencontrer les sponsors et participant·e·s de l’événement sur Work Adventure, une solution ludique développée par The Coding Machine qui nous a fort plu ! 

Malgré le contexte sanitaire, l’AFUP a su rebondir et offrir à sa communauté deux jours de partage de connaissances. S’agissant de mon premier Forum PHP, je suis très heureux d’avoir pu partager ce moment de convivialité virtuelle avec la communauté bien réelle. Les conférences sur l’éthique et la bienveillance, encore trop rares dans les événements tech de ce type, m’ont particulièrement plu. Il ne reste plus qu’à croiser les doigts pour que le prochain Forum puisse avoir lieu en présentiel !