Retour sur le Hackathon EU-Fossa Symfony / API Platform
Publié le 09 avril 2019
Ce week-end, nous étions invités par la Commission Européenne à participer à un hackathon de 48 heures axé sur la sécurité, aux côtés de contributeurs et core-members de Symfony et API Platform. Les frameworks Symfony et API Platform se sont imposés depuis quelques années dans l'écosystème PHP. La Commission Européenne l'a bien compris et souhaite désormais les intégrer dans ses projets. C'est dans cette optique que la Direction Générale Informatique de la Commission Européenne (DG DIGIT) a ouvert un programme de bug bounty ainsi qu'un hackathon, le tout supporté par le EU-FOSSA 2.
Ce hackathon était sur invitation et a regroupé une cinquantaine de développeurs·ses dont les missions principales étaient de discuter de la diversité au sein de l'écosystème, corriger les problèmes de sécurité, réduire le nombre de tickets de support ouverts ainsi que le nombre de contributions en attente.
Lors de ces deux jours, 5 points de sécurité ont été patchés. 20 pull requests ont été mergées sur le projet API Platform, 10 nouvelles PR ont été ouvertes, 87 issues ont été fermées et 4 nouvelles ont été ouvertes. Du côté de Symfony, près de 100 PR ont été mergées, 25 ouvertes, 84 issues ont été fermées et 11 ont été ouvertes. Un énorme travail a été effectué lors de ce week-end ! Si nous devions comparer ça à des journées de travail "classiques", nous avons abattu en 2 jours l'équivalent de 2 mois de travail.
Une chose a été relevée par les organisateurs lors de ces deux jours : ils avaient rarement vu une équipe aussi investie dans leur travail et dans un projet. J'ai le souvenir d'un moment de flottement alors que nous venions de passer 2 jours à travailler de manière intense : nous attendions une personne pour démarrer une présentation, et personne ne souhaitait attendre 15 minutes à ne rien faire. Chacun a souhaité retourner sur ce qu'il était en train de faire. Si ça n'est pas le reflet d'une équipe de gens passionnés et investis dans l'Open Source, je ne sais pas ce que c'est.
- Depuis maintenant 2 ans, API Platform propose l'implémentation de subresources, permettant d'imbriquer des relations depuis une ApiResource. Bien qu'intéressante et très utilisée aujourd'hui, cette fonctionnalité est souvent complexe à prendre en main et limitée. Avec l'aide de Vincent Chalamon, Antoine Bluchet et Torrey Tsui, nous avons effectué des recherches sur l'amélioration des subresources, la simplification de son implémentation et la gestion étendue des collections.
- Grâce à Jérôme Desjardins, il est désormais possible d'hydrater des objets existants (object_to_populate) récursivement avec le composant Serializer de Symfony, de normaliser un objet de type DateTimeZone et également d'instancier un objet dynamique à partir d'un tableau de valeur.
- Alan Poulain a pu travailler sur plusieurs sujets comme GraphQL, MongoDB et le système d'évènements d'API Platform. Du côté de GraphQL, certains aspects de la certification n'étaient pas respectés dans leur entièreté. Les input via Messenger n'étaient pas testés avec MongoDB et la documentation a été améliorée. Au niveau des événements, API Platform s'appuie sur ceux de Symfony, ce qui peut être problématique puisqu'il se veut être un framework agnostique. Afin de faciliter le portage vers d'autres frameworks tels que Laravel, Alan a travaillé sur le déport vers des événements internes à API Platform. Ce déport se veut progressif, pour déprécier dans un premier temps la dépendance avec Symfony avant de complètement couper les ponts pour la version 3 d'API Platform.
- Jérôme Tanghe, de son côté, s'est penché sur le générateur de client afin de lui apporter de l'amour. Un peu de nettoyage sur la documentation et le support de Mercure au sein de VueJS lors de la génération ont été ses principales préoccupations lors de ce week-end.
- Jean-François Thuillier a complété la documentation de l'admin afin d'expliquer comment surcharger certaines fonctions. Il a également pu travailler sur un POC afin d'utiliser les "Guessers" de React Admin avec API Platform.
- Anthony Grassiot a pu travailler sur la sécurité en verrouillant l'accès à une ressource avant qu'elle soit manipulée. Il a également amélioré la détermination pour une propriété d'être accessible en lecture et en écriture, il a aussi ajouté des tests et avancé sur un sujet complexe qu'est le choix d'une stratégie de génération des urls.
- Yanick Witschi a supprimé de grosses dépendances à l'ODM de Doctrine pour les tests, ajouté le support d'un paramètre de pagination pour les subresources, et s'est penché sur la création d'un endpoint pour faire des opérations groupées.
- Maxime Veber a pu corriger les messages d'erreur lors de la récupération de l'identifiant d'une ressource qui était trop vague, et travaillé sur la résolution de ressource par héritage.
- Pascal Borreli a amélioré les charts helms pour le déploiement Kubernetes, corrigé un point de sécurité sur Symfony et a ajouté une option sur les adapter de cache pour mettre en mémoire les mêmes appels lors d'une même requête.
- Hamza Amrouche a amélioré la gestion des identifiants et pour ma part, j'ai corrigé le fait qu'API Platform tente de purger le cache même lorsqu'une ressource ne possède pas d'opération GET (ce qui provoquait une erreur).
- J'ai également pu travailler sur la documentation avec Vincent Chalamon afin de pouvoir changer la version de l'API depuis l'interface ou le format de configuration.
- En plus de fermer le plus d'issues possibles, Antoine Bluchet a accompagné différents contributeurs durant ces deux jours. Il était le contrôleur aérien d'API Platform lors de ce week-end.
Retrouvez l'intégralité des contributions tous dépôts confondus à l'adresse : https://eufossa.github.io/symfony-hackathon-2019/.
Ce hackathon fut une véritable aventure humaine. La majorité de l'équipe présente venait des quatres coins de l'Europe, même des développeurs venus de Russie, du Maroc ou de Cuba étaient là. Nous avons pu rencontrer, pour de vrai, des personnes avec qui nous échangions principalement sur Github ou Twitter. Côté organisation, c'était parfait. Tout était pris en charge par la Commission Européenne via la société BeMyApp : le transport, l'hébergement, la restauration et le lieu (exceptionnel) du hackathon. Au nom de tous les Tilleuls présents lors de ce week-end, je tiens à remercier toutes les personnes ayant participé à l'organisation de cet événement, notamment Jean-François Hovinne, à l'initiative de cet événement. Merci également à BeMyApp qui était à nos petits soins lors de ces deux jours.
The first hackathon of EU-FOSSA 2 project's series of #FOSSHackathons is soon over! Thank you @symfony @EU_DIGIT @ApiPlatform @coopTilleuls. Amazing energy and achievements! We'll post a Medium post covering the event next week, stay tuned pic.twitter.com/R0sZsItp0B
— BeMyApp Belgium (@bemyappBE) 7 avril 2019
Nous sommes revenus épuisés mais heureux d'avoir apporté, encore plus que d'habitude, notre pierre à l'édifice des projets Open Source aussi prodigieux que Symfony et API Platform. Les logiciels libres sont souvent mal compris puisque régulièrement associés à la notion de gratuité, or beaucoup de gens s'y investissent pleinement. Si des personnes sont prêtes à consacrer de leur temps libre à l'amélioration de tels outils, les entreprises devraient sans doute y investir beaucoup plus. Toutes sortes de contributions sont possibles : libérer du temps à vos employés, mettre à disposition vos locaux, sponsoriser des événements ou des développements (comme le support d'ElasticSearch dans API Platform)... Amis employeurs, laissez libre cours à votre créativité. Vos développeurs et les outils que vous utilisez au quotidien ont besoin de votre soutien.
Notre équipe serait ravie d'organiser un hackathon similaire à Lille, comme nous avions fait en octobre dernier. N'hésitez pas à nous contacter !