Introduction
Samedi 3 février 2024. Bruxelles. Belgique.
Matinée fraîche.
C’est au rythme des vagues de bus et des tramways bondés déversant des torrents d'aficionados anglophones sur le campus de l’Université Libre de Bruxelles que le week-end du FOSDEM (Free and Open source Software Developers' European Meeting) commença.
Errant tout d’abord à la recherche d’un soutien caféiné, ces développeurs passionnés se réunirent ensuite en discrètes confréries afin de partager ce qui importe à leurs yeux : la passion, la connaissance, la compétence.
Des débats animés aux claviers cliquetants, le FOSDEM s'est déroulé pour la 24e fois, affirmant une fois de plus sa position de conférence incontournable. Les SFEIRIANS vous guident à travers cette conférence européenne phare, dédiée aux logiciels libres et open source
Tout d'abord, il convient de souligner d'emblée que le FOSDEM se distingue radicalement des autres conférences. Organisée et orchestrée entièrement par une communauté de bénévoles, cette conférence se caractérise par sa gratuité et son absence de commercialisation, tout en offrant une liberté totale d'accès sans nécessité d'inscription préalable. Les participants peuvent ainsi entrer et sortir à leur guise, sans avoir à fournir la moindre information personnelle. De plus, l’autonomie de chaque devroom reflète le caractère décentralisé des projets libres et open source.
Main track
Samedi 3 février 2024. 9h40.
Mario et Renaud ont commencé cette journée par un sujet … non technique.
En effet, à 10h dans une des main track, Laura Durieux (🇧🇪) nous proposait dans son talk “Where have the women of tech history gone?” un retour sur les différentes femmes ayant contribué significativement au développement de l’informatique.
Partant du constat que les femmes étaient majoritairement présentes comme développeuses aux débuts de ce domaine, nous constatons que la diminution de leur présence dans notre secteur coïncide avec deux éléments majeurs :
- Quand le software est devenu plus "respectable" (voire cool) que le hardware. Ce qui n'était pas le cas au début de l'informatique.
- Quand le PC (Personal Computer) est apparu et que l’appétence pour l’utilisation de la machine n’est plus apparue au cours des études où des travaux de recherches chez des adultes mais au sein de l’environnement familial… exposant ainsi les jeunes aux stéréotypes de genre dès l'enfance.
Le talk mettra en lumière l'importance de présenter aux jeunes filles des modèles inspirants et diversifiés, dépassant ainsi le cliché du développeur comme étant exclusivement un homme blanc, introverti, barbu et chevelu.
Samedi 3 février 2024. 11h00.
Suite à ce talk instructif, Renaud et Mario se sont séparés pour suivre des talks orientés techniques. Tandis que Renaud essayait sans succès de rentrer dans une room Go surpeuplée et d’y rejoindre notre Engineering Director, Mario a eu plus de chance avec la room Free Java.
Track Go (du matin)
Samedi 3 février 2024. 10h30 : Go !
Après avoir manqué plusieurs éditions, Seb fait son retour au FOSDEM et arrive dans la room Go. Un programme prometteur pour cette journée.
Après avoir présenté le programme et les règles de l’amphithéâtre dédié au Go, nous avons été interpellés par Maartje (🇧🇪) à l'occasion des 10 ans de cette Room.
Conformément à la tradition, la journée a débuté avec une intervention “State of Go” actualisée pour 2024, marquant l'évolution continue du langage. Le langage évolue par petite touche et avec l’arrivée récente des generics, il s’offre quelques nouvelles facilités syntaxiques. Des fonctions min, max génériques, du clear pour les slices et les maps.
Côté tooling, la gestion des dépendances est repensée pour un import plus prédictif, mais introduit potentiellement des breakings changes sur vos projets. Les boucles for (qui n’ont pas changé depuis la création du langage) s’offrent également un petit lifting avec un for i := range 10 qui n’existait pas jusque là et, cerise sur le gâteau, les variables locales de boucle for sont initialisées à chaque itération pour éviter le shadowing ou la modification involontaire de variables.
Le linter go vet s’enrichit également de nouveaux warning pour vous éviter certains pièges du langage (append, time.Since en defer).
La bibliothèque standard évolue aussi et le plus notable est le routeur HTTP qui prend en charge les verbes, wildcards et paramètres d’URL dans sa mécanique. Le logger structuré est introduit avec un package slog. Le but inavoué de ce package est de remplacer tous les autres loggers existants tel que logrus et il semble qu’avec des logs clé-valeur, la gestion des niveaux de log et du format de sortie, ils soient en passe d’y réussir. Longue vie à slog !
Autre irritant de la bibliothèque standard, le package random se voit augmenté d’une version 2 dont la racine est initialisée par le package lui-même, enfin ! On termine comme d’habitude par l’amélioration des performances et de nouvelles avancées concernant les architectures supportées.
Mais le state of Go c’est aussi un tour d’horizon des communautés du langage, et celle-ci a été endeuillée par les disparitions tragiques de deux de ses figures, Carolyn Van Slyk et Kris Nóva. Les meetups et groupes Woman Who Go sont en recul, mais c’est une tendance générales des meetups tech dans le monde.
Maartje clôture sa session par une rétrospective des dix ans de la room, marquant le long chemin parcouru depuis sa création en 2014. Un grand merci à elle pour cette session enrichissante.
Samedi 3 février 2024. 11h.
Cette ouverture se poursuit avec une seconde conférence sur la vie secrète des Go routines. Alors que Renaud se retrouvera devant une porte close, Seb a l'opportunité de profiter de ce talk enrichissant pour comprendre ce que sont les goroutines et, surtout, quel est leur cycle de vie.
Parce qu’une image vaut mille mots, voici l’essentiel de ce que nous retiendrons de cette présentation : le contraste entre ce qui est attendu et la réalité. Un grand merci à Jesus Espino (🇪🇸) pour ses explications claires et précises.
Samedi 3 février 2024. 11h30 : Go
Dernière présentation Go avant la pause déjeuner: le parcours d’un contributeur Go et le process de la communauté pour intégrer les modifications au langage par Jonathan Hall (🇳🇱).
Contribuer à un langage ou framework est souvent un process semé d’embûches. Il aura fallu à Jonathan beaucoup de persévérance et plus de 2 années pour voir sa PR approuvée par la core team du langage.
Track Free Java (du matin)
Samedi 3 février 2024. 11h20.
Le temps pour Mario de parcourir le campus et de trouver une place dans la room Free Java et c’est parti pour la présentation “Exploring Quarkus Native: Choices and Implementation” par Foivos Zakkak (🇬🇷).
Quarkus est un framework Java open-source dont la popularité monte en flèche. Conçu pour le développement d’applications cloud-native et les environnements serverless, Quarkus a pour priorité dans ses objectifs la rapidité de démarrage (“boot time”). À cette fin, Quarkus tend à exploiter pleinement les avantages de GraalVM.
La surprise de ce talk était, lors de la discussion des différents métriques de performance, qu’un exécutable Java standard restait le plus performant !
Cela s’explique par le fait que, traditionnellement, une application Java est plus lente au démarrage mais obtient, après un certain temps, des performances optimisées. Or, ce certain temps n’est pas assez rapide pour les environnements serverless que Quarkus vise à servir.
Un inconvénient majeur avancé est que Quarkus avec GraalVM empêche l’utilisation d’outils de debugging.
Pause Déj’
Samedi 3 février 2024. 12h00.
Il est midi. C’est donc le moment idéal pour nos SFEIRIANS de se retrouver autour de la même table afin de passer un moment convivial ensemble en nous résumant nos matinées.
Nous en profitons ensuite pour aller voir les stands des projets Open Source présents (PostgreSQL, LibreOffice, Minetest, Jenkins, Thunderbird, etc.) et y retrouvons même un ancien SFEIRIANS lillois.
C’est aussi et surtout ça le FOSDEM, des rencontres et du partage.
Track Go (après-midi)
Samedi 3 février 2024. 14h30 : Go!
L'après-midi en room Go se poursuit pour Seb avec le talk de Dylan Reimerink (🇳🇱) sur l’injection de dépendances dans les projets Go grâce au projet Fx des équipes engineering de Uber.
Go ne permet pas l’injection dynamique de dépendances dans ses applications comme d’autres langages basés sur la JVM par exemple. L’initialisation d’un programme du parsing de ses arguments au lancement de ses traitements est simple pour de petits programmes, mais l'utiliser sur des projets d’entreprise avec des composants partagés s'avère plus compliqué.
Fx est là pour accompagner dans cet ordonnancement.
Samedi 3 février 2024. 15h.
Nous avons ensuite pu apprécier les qualités et avantages de Go-Releaser vs un bon vieux Makefile avec Denis GERMAIN (🇫🇷) de Deezer. La présentation s’est vue complétée d’une démo sur base de jeux de mots de nom de coiffeurs, une exception culturelle française ?
Samedi 3 février 2024. 15h30.
La participation à la room Go de Seb s’est ensuite soldée par le talk de Tanguy HERMANN (🇫🇷) sur une ouverture à un framework de développement d’applications web en Go. En utilisant les generics du langage : REST in peace (RIP) en est à ses débuts mais l’approche de Tanguy est intéressante et le speaker drôle. Cette ouverture sur les possibilités des generics en tant que framework est à suivre de prêt.REST in peace (RIP) ce projet, bien que naissant, se distingue par l'approche innovante de Tanguy et son humour en tant que conférencier. Cette exploration des possibilités offertes par les generics comme base d'un framework mérite une attention particulière.
Samedi 3 février 2024. Entre Bruxelles et Lille. 18h.
Sur le chemin du retour, la connexion internet de Seb lui a permis d’assister aux dernières évolutions de Tiny Go, cette toolbox permettant de mettre du Go dans tous les micros devices (arduino, ESP, Raspberry PI, …). C’est le papa de l’outil, l’excentrique Ron EVANS (🌎) qui nous présente le support du bluetooth, du wifi et même du LoRaWAN dans ces devices avec le support d’une démo de drônes pilotés avec son Gopher Badge dans l’amphi de l’ULB : une expérience tout simplement magique.
Track Free Java (après-midi)
Samedi 3 février 2024. 13h35.
Après le temps de midi passé ensemble et quelques rencontres fortuites, Mario reprend le fil de la devroom Free Java accompagné de Sébastien et Renaud.
Après une partie du talk sur l’exécution de Ruby sur la JVM via JRuby et les avantages que ce projet a apportés à la JVM (« Personne ne pousse la JVM dans ses limites autant que le projet JRuby »), toute l’équipe était prête pour écouter le talk « Les prochaines étapes des Virtual Threads ».
Cette présentation, très attendue, exposait le travail actuellement en cours au sein du projet Loom concernant le support des Virtual Threads, sujet sur lequel vous trouverez une introduction détaillée dans cet article.
Bien que la fonctionnalité des Virtual Threads soit disponible en preview depuis Java 19 et supporté de manière permanente depuis Java 21, Alan Bateman (🇮🇪), un des architectes du JDK, nous a exposé les différents défis qu’il reste à résoudre :
- Threads pinning: Lorsqu’un virtual threads possède un lock (notamment en cas de monitoring), il est dans l’incapacité de libérer ses ressources pour un autre vitual thread. Le monitoring au sein de la JVM est trop étroitement couplé avec le thread porteur ("carrier thread") ce qui pose des problèmes quand ce dernier veut “libérer” des virtual threads. Ce problème se pose principalement avec les méthodes "synchronised". Pour résoudre ce problème, une nouvelle implémentation du mécanisme de locking utilisé par le monitoring est à réaliser.
- Actuellement, la gestion des requêtes IO est conçue de manière à ce que le gestionnaire principal soit supporté par un thread principal qui délègue le travail aux threads virtuels. Cette méthode entraîne un changement de contexte à chaque fois, causant ainsi une baisse de performance. L'idée en développement vise à faire du gestionnaire un thread virtuel lui-même, dans le but d'éliminer ces changements de contexte et, par conséquent, d'augmenter les performances.
Samedi 3 février 2024. 15h20.
S'ensuit un talk sur l'implémentation d'un environnement de bureau Wayland pour les JDK Linux. Actuellement, dans les systèmes d’exploitation de type Unix (Linux, BSD, etc.), le protocole de système de fenêtrage par défaut est toujours X (rien à voir avec Elon pour une fois). Ce protocole développé dans les années 80 possède certaines limitations :
- La notion de fenêtre racine, où toute fenêtre est contenue dans une autre jusqu’à la fenêtre racine, pose divers problèmes pour les configurations multi-écrans de résolutions (DPI) différentes;
- La gestion de la complexité des matériels, notamment les GPUs, est sous-optimale;
- Du point de vue sécurité, il est vulnérable au sniffing et au spoofing.
Le projet Wayland offre une alternative en proposant un protocole minimaliste, conçu pour faire le moins de suppositions possibles afin de rester flexible et évolutif. Avec Wayland, la notion de fenêtre racine disparaît, et certaines fonctionnalités comme le partage d'écran ne sont plus gérées nativement. À la place, Wayland permet l'implémentation de ces fonctionnalités à travers un système de « portals ».
Phil Race (🇬🇧), Aleksei Ushakov (🇷🇺) et Niels De Graef (🇧🇪) présentaient leurs efforts à l’intégration d’un support natif de Wayland au sein du JDK.
Ce projet, toujours en cours, s'inscrit dans le cadre du projet OpenJDK Wakefield."
Samedi 3 février 2024. 15h50.
Volker Simonis (🇷🇴) d'Amazon est venu nous présenter Firecracker dans le cadre de son talk "Zeroing and the semantic gap between host and guest".
Firecracker est un hyperviseur qui tire parti de la machine virtuelle du noyau Linux (KVM) pour créer et gérer des microVMs de façon efficiente. Il est conçu pour optimiser l'utilisation des ressources, permettant ainsi une exécution de microVMs en consommant moins de mémoire que les instances traditionnelles.
Cette efficacité est rendue possible, entre autres, par les facteurs suivants :
- Le code exécuté au démarrage, qui n'est plus nécessaire pendant la durée de vie de l'application, n'occupe plus de mémoire inutilement.
- La mémoire est systématiquement remise à zéro avant d'être libérée, contrairement à la pratique par défaut où elle n'est remise à zéro qu'avant d'être allouée à un nouveau processus.
Samedi 3 février 2024. 16h20.
Un dernier effort de concentration avant de s'accorder une petite pause bien méritée. Pour ce talk, c’est Jonathan Dowland (🇬🇧) qui nous présente « Bespoke containers with Jlink and OpenShift ».
Red Hat OpenShift, un orchestrateur de conteneurs basé sur Kubernetes, permet de produire des images de taille réduite, souvent la moitié de la taille standard, car il inclut uniquement les modules JVM réellement utilisés. Ainsi, certaines fonctionnalités comme le débogage, les paramètres régionaux et les données de fuseau horaire ne seront pas disponibles, étant donné qu'elles sont exclues de l’image compilée.
Samedi 3 février 2024. 18h10.
Après une longue file et une petite pause café, retour dans la devroom Free Java pour Mario.
Pile à temps pour la présentation “Java… to unlock GPU acceleration for Polyglot Language Runtimes” par Thanos Stratikopoulos (🇬🇷) !
Thanos nous présente TornadoVM. Un plugin du JDK qui permet aux programmes Java de bénéficier au mieux du matériel sous-jacent (tel que l’accélération GPU).
Un exemple donné est celui des boucles sans dépendances entre les itérations. Ces dernières sont optimales pour une parallélisation et l’ajout d’une simple annotation va indiqué à TornadoVM de tenter de paralléliser ce code.
Cependant, pour tirer profit de tout le potentiel de ce plugin, il est conseillé d’utiliser des types spéciaux de données afin d’indiquer ce qui est “safe” d’être exécuté en parallèle.
Samedi 3 février 2024. 18h40.
Alors que le campus de l’Université de Bruxelles commençait à se vider, la devroom Free Java accueillait son dernier talk de la journée : « Apache Maven 4.0.0 - Current State » par Karl Heinz Marbaise (🇩🇪)
Si Maven 2 a rompu la compatibilité avec Maven 1, et Maven 3 a maintenu celle avec sa version précédente, aujourd'hui, Maven est omniprésent :
- Plugins;
- Les outils CI/CD tels que Jenkins;
- Les IDE comme IntelliJ et Eclipse;
- Les outils de conteneurisation tels que Docker et Kubernetes;
- Les outils d'analyse et de qualité de code tels que SonarQube;
- Même Gradle supporte les projets Maven !
Face à ce succès, si Maven 4 se contentait d'offrir un nouveau standard sans garantir la rétrocompatibilité, il risquerait de ne pas être adopté. Cependant, maintenir indéfiniment le support pour la version 3 limiterait l'introduction de nouvelles améliorations. La solution ?
Maven 4 proposera un support pour les deux versions en parallèle : le traditionnel schéma 4.0 et un nouveau schéma 5.0 pour permettre des améliorations futures.
Alors, en bref, quoi de neuf avec Maven 4 ?
Distinction entre la version de build et la version de distribution, versionnage automatique du parent (seul le pom.xml racine est concerné), et améliorations pour un meilleur support CI/CD.
Après ce dernier talk, les portes de la devroom Java se fermeront à 19h.
Autres tracks
Samedi 3 février 2024, 15h10.
Après avoir laissé Mario dans la room Free Java et alors que Sébastien rejoignait la room Go, Renaud s'est rendu dans la devroom Community pour assister au talk 'How do you change the governance model of an established open source project?'. Basée sur l'expérience du projet 'Mautic', Ruth Cheesley (🇬🇧) a exposé les défis majeurs rencontrés lors du changement de gouvernance d'un projet open source suivi par des milliers de personnes. Les transformations ont touché de nombreux aspects, de la structure fiscale au modèle de gouvernance. Elle a abordé des questions telles que la structure organisationnelle, le modèle de prise de décision, le droit de vote et la gestion des discussions prolongées, mettant en avant l'importance de la communication et de la clarté des informations.
Samedi 3 février 2024, 16h00
Renaud a assisté à une présentation sur "Ingesting and analyzing millions of events per second in real-time using open source tools" par Javier Ramirez (🇪🇸), démontrant un déploiement efficace utilisant Kafka, QuestDB, et Grafana pour le monitoring graphique. L'orateur a souligné la capacité du système à traiter un million d'événements par seconde et a encouragé les contributions pour diversifier les formats de données et étendre l'utilisation de son modèle.
Samedi 3 février 2024, 17h00
Après avoir manqué le lightning talk 'The Orthanc ecosystem for medical imaging', Renaud a conclu sa journée par une visite au stand GNU Health, où il a échangé avec Sébastien Jodogne (🇧🇪), le créateur d'Orthanc et lauréat du prix de la Free Software Foundation en 2014Fin de journée et conclusion
Vous l’aurez compris, le FOSDEM propose une telle diversité de domaines et de sujets passionnants qu’il est souvent ardu de faire un choix. Et pourtant, malgré les décisions difficiles prises pour privilégier certains talks plutôt que d'autres, le programme est souvent ajusté au profit d’une rencontre inattendue, d’un débat de couloir enrichissant ou de questions posées à un intervenant bien après sa présentation.
À ce titre, nous éprouvons une certaine nostalgie pour ces conférences que nous n’avons finalement pas pu suivre. Désolés, Hedy, LEOS et tous les autres, la communauté du logiciel libre est si riche et variée qu'il est impossible de tout embrasser.
Aux projets que nous avons écoutés, à ceux que nous n'avons pas choisis et à ceux que nous n'avons pas suivis : longue vie libre à vous !