• DĂ©veloppement
  • Tool in action
  • Standard
  • 25 min

Développer une file d'opérations asynchrone en Rust pour Thunderbird

  • Date jeudi
  • Horaire 15h00 Ă  15h25
  • Salle Amphi D

Description

L'annĂ©e derniĂšre, Thunderbird a officiellement annoncĂ© le support natif de Microsoft Exchange, une premiĂšre en plus de 20 ans pour l'oiseau bleu. Une grosse partie de l'effort qui nous a menĂ© ici s'est centrĂ© autour de l'utilisation de Rust. Au fur et Ă  mesure que le projet Ă©voluait d'un prototype vers une fonctionnalitĂ© utilisable, nous nous sommes penchĂ©s sur un enjeu de taille : amĂ©liorer l'organisation et la planification des requĂȘtes. Au cours de ce talk, j'introduirai briĂšvement l'utilisation de Rust dans Thunderbird, et je prĂ©senterai les tenants et les aboutissants de ce mini projet, ses diffĂ©rentes itĂ©rations, ainsi que les dĂ©fis rencontrĂ©s en chemin (dont quelques disputes avec le systĂšme de typage de Rust).

Orateur·ices

Brendan Abolivier

Je suis ingénieur logiciel staff à MZLA Technologies, la filiale de la fondation Mozilla en charge du développement de Thunderbird. Entre 2023 et 2025, j'ai dirigé l'implémentation du support natif de Microsoft Exchange dans Thunderbird, projet dans lequel je suis toujours trÚs impliqué aujourd'hui.

Actions rapides

Voir la vidéo

Les sessions futures sur le mĂȘme thĂšme

    • DĂ©veloppement
    • Tool in action

    On touche pas son pĂšre : sortir de l’hĂ©ritage avec la dĂ©lĂ©gation Kotlin

    Quand on jouait au loup dans la cour d’école, il y avait une rĂšgle tacite : “on touche pas son pĂšre” — on ne retouche pas celui qui vient de nous toucher, sinon la partie tourne en boucle. En code, beaucoup d’équipes finissent par appliquer la mĂȘme rĂšgle Ă  la classe mĂšre : “ne touche pas au parent, tu vas tout casser”. Et c’est souvent le signe de bugs dans la Matrice : couplages implicites, effets de bord, overrides surprenants
 et, au passage, des glissements progressifs vers des violations des principes SOLID. Dans cette session, je propose une autre approche : remplacer l’hĂ©ritage utilisĂ© pour partager du comportement par de la composition et de la dĂ©lĂ©gation en Kotlin (by). L’idĂ©e est simple : au lieu d’empiler des responsabilitĂ©s dans une hiĂ©rarchie de classes, on construit des services “en couches” (wrappers / dĂ©corateurs) qui ajoutent chacun un comportement prĂ©cis, tout en dĂ©lĂ©guant le reste. À travers quelques refactorings “avant / aprĂšs”, on verra comment cette approche rend les responsabilitĂ©s plus explicites, facilite les tests, et permet d’évoluer sans crĂ©er de nouvelles classes de base ni de hooks implicites — avec une mĂ©thode de migration progressive, applicable sur une base existante.

    Jeudi 15h35 Ă  16h00 - Amphi B
    • DĂ©veloppement
    • Tool in action

    Des nulls visibles avant la prod : JSpecify en action

    Tous les dĂ©veloppeurs Java se sont un jour ou l’autre cassĂ© les dents sur une NullPointerException en production. Il y a eu beaucoup de tentatives pour attĂ©nuer ce problĂšme (annotations, Optional, 
), couronnĂ©es de plus ou moins de succĂšs. Dans ce Tool-in-Action, nous verrons comment JSpecify s’attaque au problĂšme et ce qu’il apporte de plus par rapport aux autres annotations de null safety : analyse statique, intĂ©gration Ă  Spring Boot 4 et interopĂ©rabilitĂ© avec Kotlin.

    Jeudi 15h35 Ă  16h00 - Amphi E
    • DĂ©veloppement
    • Tool in action

    Le plus dur, c'est de commencer...

    En attente de mission, je lance mon side-project : serendipitech.fr J'avais l'idĂ©e gĂ©nĂ©rale : rĂ©pertorier les conf' en France et proposer une alerte email Ă  ceux qui le souhaite pour ĂȘtre prĂ©venu des nouvelles dates, ouverture des billetteries ou CFP. OK. La stack je l'avais aussi, je voulais continuer d'avancer sur mes acquis : du Spring Boot avec Kotlin et Vue.js en front. Pour l'infra, je voulais mettre mon appli en Docker bien sĂ»r, et un voisin avait un vieux serveur dans un placard, autant que ça serve. Installation d'Ubuntu. Hop, c'est bon. And now what ?! Goutte de sueur sur le front... je commence par quoi ? Le front ? Le back ? Installer Docker ? Acheter mon nom de domaine ? C'est quoi mon premier commit ? C'est quoi ma premiĂšre feature ? Ahhh. Panique. Mais promis, ça n'a pas durĂ©. J'ai rĂ©ussi Ă  me lancer. Envie d'en savoir plus ? De savoir si mon serveur Ă  cassĂ© et j'ai plutĂŽt dĂ©ployĂ© proprement dans le cloud (spoiler : oui) ? Rex dĂ©complexĂ© d'un side project. Pour oser se lancer, prendre du recul sur les diffĂ©rentes briques d'une application et se poser les bonnes questions.

    Vendredi 8h30 Ă  9h25 - Amphi C