• Développement
  • Tool in action
  • 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


Les sessions futures sur le même thème

    • 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
    • Développement
    • Quicky

    Le hasard fait bien les tests

    > Le hasard fait bien les choses. Si on applique cette idée aux tests unitaires ou aux tests d'intégration, on peut rendre nos tests beaucoup plus imprévisibles et du coup trouver des problèmes que notre esprit n'aurait jamais osé imaginer ! Par exemple, récemment, j'ai découvert dans une bibliothèque de gestion de configuration, [un bug](https://github.com/gestalt-config/gestalt/issues/242) qui se produit lorsque la `Locale` est configuré en `AZ`. 🤦🏼‍♂️ Un autre exemple encore plus simple : ```java int input = generateInteger(Integer.MIN_VALUE, Integer.MAX_VALUE); int output = Math.abs(input); ``` Peut générer `-2147483648`... Ce qui est assez inattendu pour une valeur absolue ! 😉 Les tests aléatoires peuvent découvrir ces cas tordus... C'est ce que l'équipe elasticsearch a mis en place depuis plusieurs années à l'aide du framework [RandomizedTesting](https://labs.carrotsearch.com/randomizedtesting.html) pour tester tout le code Java. Ajoutez à ça de vrais tests d'intégration à l'aide de [TestContainers](https://java.testcontainers.org/modules/elasticsearch/) et vous aurez une approche complète pour des tests qui échouent régulièrement ! Après cette conférence, vous ne verrez plus jamais la fonction `random()` comme avant et découvrirez comment la (mal)chance peut vous aider ! 🍀

    Vendredi 10h45 à 11h00 - Amphi E