liksi logo

Être bénévole à la KotlinConf 2025

Yoann Breton - Publié le 10/06/2025
Être bénévole à la KotlinConf 2025

J’ai, pour la deuxième année consécutive, eu la chance de participer à la KotlinConf, organisée par JetBrains. Mais pas en tant que simple participant : j’y ai pris part en tant que bénévole, pour aider au bon déroulement de l’événement.

Être bénévole à la KotlinConf

Application

Pour devenir bénévole, il suffit de répondre à un appel à candidatures lancé par JetBrains, généralement quelques mois avant la conférence.

Il faut notamment y indiquer sa motivation et son intérêt pour l’écosystème Kotlin.

Tâches

Un bénévole peut être amené à remplir quatre types de missions :

  • l’accueil et l’enregistrement des participants à l’entrée, pour leur remettre leur badge,
  • la navigation pendant l’événement, pour fluidifier les déplacements et aider chacun à trouver son chemin,
  • la permanence à la “SWAG Station”, où les participants peuvent récupérer leurs goodies gratuits ou acheter du merchandising JetBrains,
  • le “speaker support”, c’est-à-dire l’accompagnement des conférenciers lors de leurs présentations.

Bonus :

  • Enfiler le costume de Kodee, la mascotte de Kotlin, pour amuser la galerie et poser pour des photos (j’ai eu la chance cette année de proposer une performance de danse pendant la soirée du jeudi).
Mascotte Kodee qui danse

Rien de bien complexe côté missions, d’autant plus que l’équipe JetBrains reste très disponible tout au long de l’événement.

Retour sur la KotlinConf

Cette année, je me suis occupé de l’enregistrement des participants et de l’accompagnement des conférenciers. J’ai donc pu, en parallèle, assister à plusieurs conférences. Voici quelques éléments qui m’ont particulièrement marqué.

JSpecify

JSpecify est un ensemble de spécifications visant à standardiser les annotations pour améliorer l’analyse statique des langages de la JVM (Java, Kotlin). La version 1.0.0 permet notamment d’introduire un standard pour rendre le code Java “Null-Safe”.

Ce projet est porté par un groupe de travail regroupant des membres de Google, JetBrains, Oracle, Meta, Uber, Broadcom, Microsoft, Sonar, Square et EISOP.

Mais il existe déjà des annotations pour gérer la nullabilité en Java !

En effet, on trouve de nombreuses annotations comme jakarta.annotation.Nullable, celles fournies par les IDE (org.jetbrains.annotations.Nullable, org.eclipse.jdt.annotation.Nullable), ou encore la JSR-305 (javax.annotation.Nullable), une ancienne spécification aujourd’hui abandonnée.

Problème : toutes ces annotations ne suivent pas la même spécification.

JSpecify, c’est 4 annotations accompagnées d’une spécification claire, pour permettre aux outils d’analyse de les interpréter correctement.

Pourquoi parler d’annotations Java à une conférence Kotlin ?

Parce que Kotlin, bien qu’étant un langage à part entière, repose souvent sur la JVM et utilise de nombreuses bibliothèques Java. Résultat : un programme Kotlin utilisant une bibliothèque Java non annotée correctement peut perdre sa sécurité face au null.

JSpecify est déjà utilisé par des bibliothèques populaires comme Guava, Spring Framework 7.0, Apache Log4J, ainsi que par des outils comme IntelliJ IDEA, Android Studio, Eclipse, EISOP ou encore NullAway.

Koog

JetBrains a annoncé la publication en open source de Koog, un framework Kotlin permettant de créer des agents qui interagissent à travers des workflows. Koog propose une API élégante, 100 % Kotlin.

Il serait déjà utilisé en interne par JetBrains pour des applications intégrant des agents IA.

Le projet est disponible ici : https://github.com/JetBrains/koog.

Futures nouveautés Kotlin

Déstructuration nommée

Aujourd’hui, on peut déjà déstructurer une data class en Kotlin. Mais le mapping se fait en fonction de l’ordre de définition des propriétés de la classe.

data class Octopus(val name: String, val nbOfTentacles: Int)

// correct
val (name, nbOfTentacles) = Octopus("Poulpi", 8)

// compile aussi mais incohérent nbOfTentacles="Pilpou" et name=5
val (nbOfTentacles, name) = Octopus("Pilpou", 5)

Cela pose plusieurs problèmes :

  • Il faut connaître ou aller voir la définition de la classe pour bien déstructurer
  • Si la définition change, cela peut casser silencieusement votre code (pas idéal pour le refactoring)

Une nouvelle notation a été présentée pour permettre une déstructuration basée sur les noms :

// l'ordre n'a plus d'importance, seul le nom de la variable compte
// on a donc name="Pilpou" et nbOfTentacles=5
val (val nbOfTentacles, val name) = Octopus("Pilpou", 5)

// ne compile pas, car la classe Octopus n'a pas de propriété `color`
val (val color, val name) = Octopus("Pilpou", 5)

Rich Errors

Déjà évoquée l’an dernier, cette nouveauté vise à résoudre le problème des erreurs non gérées. Beaucoup utilisent des classes Result issues de bibliothèques diverses (à l’image du Result en Rust).

Dans le futur, une fonction pourra retourner soit le résultat attendu, soit un type d’erreur spécifique. Le type de retour sera une union de types :

error class PoulpiNotFound

fun fetchPoulpi(): Octopus | PoulpiNotFound { /* ... */ }

fun someFunction() {
	when(val poulpi = fetchPoulpi()) {
		is Octopus -> /* tout va bien */
		is PoulpiNotFound -> /* Poulpi est introuvable :( */
	}
}

Cette syntaxe oblige à gérer l’erreur (ou à la propager). Il sera même possible d’utiliser l’opérateur elvis (?:) pour propager automatiquement l’erreur :

val poulpiColor: Octopus | PoulpiNotFound = fetchPoulpi()?.let { computeColor(it) }

Ces deux nouveautés devraient arriver en Kotlin 2.4, en expérimental.

Kotlin Language Server Protocol (LSP)

Je me souviens, l’an dernier, de quelqu’un qui demandait si JetBrains proposerait un jour un LSP officiel.

La réponse était alors floue, mais un LSP open source permettrait une adoption plus large de Kotlin, notamment en dehors des IDE JetBrains.

C’est désormais chose faite : JetBrains a dévoilé le dépôt open source du Language Server Protocol Kotlin.

Mot de la fin

Ce fut une KotlinConf intense et passionnante. L’événement confirme que l’écosystème Kotlin est en constante évolution, et a déjà atteint une belle maturité (bien au-delà du développement mobile).

Être bénévole ne permet peut-être pas de profiter autant des conférences qu’une participation classique, mais c’est une expérience unique et enrichissante à tous les niveaux.

Derniers articles