La parole est aux speakers : George Banyard

Publié le

La conférence

Comment contribuer à PHP?

Vous avez toujours voulu contribuer au code source de PHP, mais vous ne savez pas comment vous y prendre ? On abordera les ressources disponibles pour pouvoir comprendre et écrire le code C d'une extension, suivi d'une séance de live coding où on ajoutera une nouvelle fonction PHP avec les tests unitaires qui vont avec.

Salle Johnson GHJKLM
12/10/2023
11:40-12:20

Pour un.e junior.e quel serait le premier conseil pour débuter dans la contribution PHP ?

Être têtu·e ! Plus sérieusement, je dirais lire le tutoriel sur l’écriture d’extensions PHP de Zend écrit par Dmitry Stogov qui donne un bon aperçu de comment fonctionnent les extensions qui sont une grosse partie du langage. L’autre ressource extrêmement utile est PHP Internals Book même si incomplet par moment. Mais sinon, il ne faut pas avoir peur de fouiller dans le code source pour voir comment les APIs du moteur sont utilisées. Le meilleur outil pour cela étant OpenGrok/LXR.

Tu travailles actuellement à temps partiel sur la maintenance de PHP avec la PHP Foundation. Peux-tu nous parler de tes dernières contributions ?

Mon temps de travail est découpé en plusieurs tranches :
– Trier les issues
– Revue de code
– Participer aux discussions de la liste interne
– Corrections de bogues
– Conception et implémentation de RFC
– Refactoring
– Expérimentation

En général, un tiers de mon temps est dédié au tri des issues, à la revue de code et aux discussions sur la liste interne de PHP.
Certains bogues sont relativement simples à corriger, d’autres comme deux bogues à propos des flux (stream) ont pris plusieurs semaines à trouver une correction.

La conception d’une RFC et son implémentation prend aussi un temps considérable.
Mes RFCs récentes sont par rapport au sémantique de PHP et les améliorer, notablement le comportement des opérateurs ++ et –, et des fonctions range(), array_sum() et array_product().

Refactorer le code de php-src n’est pas forcément simple, car souvent, il n’y a pas suffisamment de tests.
Néanmoins, j’ai fait du refactoring sur les extensions BCMath, DBA et IMAP pour rendre le code plus simple et compréhensible.
L’autre gros projet de refactoring a été autour de l’API des structures internes FCI et FCC (Function Call Info et Function Call info Cache) qui représente un appel à une fonction utilisateur.

Le reste du temps est passé à faire de l’expérimentation, comme essayer de résoudre les type relatif self et parent lors de la compilation pour permettre de déterminer des relations de type entre deux objets ReflectionType.

PHP Foundation a maintenant un peu plus d’un an, quel est le bilan de ce premier anniversaire ?

Depuis sa création, les devs de la fondation ont commit environ 1600 commits, ce qui correspond à environ 3/5 de la totalité des commits.
Autres que de la maintenance en tout genre, les grandes lignes sont :
– Derick Rethan a corrigé tous les bogues connus de l’extension DateTime en plus de s’occuper de l’infrastructure du projet.
– Jakub Zelenka a amélioré le setup pour tester FPM, ajouté le support de OpenSSL 3, et corrigé des bugs dans FPM, les flux et l’extension OpenSSL.
– Ilija Tovilo a amélioré la CI du projet et conçu/développé des nouvelles fonctionnalités avec leur RFC respective, qui ont été déclinés.
– Arnaud Le Blanc a corrigé des bugs de longue date à propos de la VM, du GC, et opcache/JIT.
– Máté Kocsis a fait, et continue de faire, un énorme travail autour des stubs pour permettre de générer une documentation plus complète des fonctions, constantes, et classes pour la doc de PHP à partir de ceux-ci.

Une conférence présentée par

Gina/George BANYARD
Gina/George BANYARD
George est actuellement sous contrat à temps partiel avec la fondation PHP pour maintenir PHP. Il participe aussi à la documentation et il est le mainteneur principal de la documentation française en ce moment.

Autres interviews