Aller au contenu principal
Illustration du système d'experiments Discord

Comment Discord déploie ses nouveautés : les experiments

· 8 minutes de lecture
Zallom
Rédacteur
Chaussette
Dataminer

Un nouveau bouton chez un ami, un menu inédit sur le serveur d'à côté… et rien chez vous. Redémarrer l'application ? Aucun effet. La réinstaller ? Pas davantage. Le système de candidatures, les plaques nominatives et les tags de serveur sont tous arrivés ainsi, par petites vagues. Avec toujours la même question : « Pourquoi lui et pas moi ? » Chaque nouveauté passe d'abord par une phase de test, invisible pour la plupart d'entre nous. Et le choix de ceux qui la reçoivent en premier obéit à des règles précises.

C'est quoi une experiment ?​

YouTube teste plusieurs miniatures sur une même vidéo pour voir laquelle attire le plus de clics. Discord fait pareil avec ses fonctionnalités : il en montre différentes versions à une petite partie des utilisateurs ou des serveurs, puis compare. C'est ce qu'on appelle l'A/B testing, et chacun de ces tests est une experiment.

Chaque experiment porte un nom interne, généralement de la forme ANNEE-MOIS_nom. Par exemple, 2025-02_skill_trees désigne la nouvelle gestion des boosts, dont font partie les tags de serveur.

Suivi de l'experiment 2025-02_skill_trees par un tracker : les serveurs internes de Discord en traitement 1, et une partie des autres serveurs répartie entre 70 % sans la fonctionnalité, 15 % de groupe de contrôle et 15 % de traitement 1

Les comptes ou serveurs ciblés sont répartis entre plusieurs traitements, autrement dit des variantes de la fonctionnalité. Un bouton rouge pour les uns, par exemple, le même bouton en vert pour les autres. Le plus souvent, un groupe de contrôle garde l'application telle quelle jusqu'à la fin du test. C'est lui qui donne du sens aux chiffres : si ceux qui ont la nouveauté utilisent moins Discord que lui, c'est qu'elle déplaît.

Le mode A/A (non, ce n'est pas une faute de frappe)

Parfois, une experiment ne change rien du tout : tous les groupes reçoivent la même version. Elle permet de vérifier que la répartition est équilibrée et que les mesures ne sont pas faussées. Autrement dit, Discord teste son propre système de test.

Le parcours d'une fonctionnalité​

Une nouveauté passe en principe par cinq étapes :

  1. Développement interne par les équipes de Discord.
  2. Lancement de l'experiment sur un petit groupe, souvent quelques pour cent des utilisateurs ou des serveurs.
  3. Analyse et corrections : les chiffres sont étudiés, les bugs corrigés.
  4. Élargissement progressif : si les résultats sont bons, l'accès s'étend par paliers (par exemple 1 %, 5 %, 25 %…).
  5. Déploiement général : tout le monde y a accès.

Rien n'oblige une experiment à aller jusqu'au bout. Si les résultats déçoivent, Discord peut l'arrêter : les guildes, testées sur quelques serveurs, n'ont jamais été déployées dans leur état initial.

Frise des cinq étapes d'une fonctionnalité : développement interne, lancement de l'experiment, analyse et corrections, élargissement progressif, déploiement général. Des étapes 2 à 4, deux comptes voisins peuvent ne pas voir la même application. Depuis l'étape 3, l'experiment peut être arrêtée si les résultats déçoivent, comme pour les guildes

C'est entre les étapes 2 et 4 que tout se joue : deux comptes voisins peuvent alors ne pas voir la même application.

Pourquoi lui et pas moi ?​

Comment est-on assigné à un traitement ?​

Discord utilise une fonction de hachage, MurmurHash, qui transforme un texte en un nombre, toujours le même pour un même texte. À partir du nom de l'experiment et de l'identifiant de votre compte ou de votre serveur, elle calcule une position entre 0 et 9999.

Imaginez une salle de 10 000 places numérotées. Chaque experiment a la sienne, et vous y avez un siège attitré, différent d'une salle à l'autre. Les traitements se partagent la salle par plages : selon celle où vous êtes assis, vous voyez l'une ou l'autre version. Dans une même salle, votre siège ne bouge jamais : pour élargir le déploiement, Discord agrandit les plages. Voilà pourquoi on peut recevoir une nouveauté parmi les premiers, puis attendre des semaines la suivante.

Pour les curieux : le calcul exact

La clé est le nom de l'experiment suivi de l'identifiant du sujet, séparés par :. On lui applique MurmurHash3 (32 bits), puis un modulo 10 000 :

position = murmurhash3("2025-02_skill_trees:123456789012345678") % 10000

Avec les plages 0 - 4999 pour le traitement 1 et 5000 - 9999 pour le contrôle, une position de 3120 donne la nouveauté. Dans les données, le contrôle porte le numéro 0, et -1 signifie « aucun traitement », hors de l'experiment.

Ce calcul se fait dans l'application pour les experiments de serveur. Pour les experiments utilisateur, Discord attribue le traitement de son côté.

Serveurs ou utilisateurs​

Certaines experiments visent des serveurs (guild experiments), d'autres des utilisateurs (user experiments). La nouvelle gestion des boosts a été ouverte serveur par serveur, les plaques nominatives compte par compte. Il arrive qu'il faille être dans les deux : l'experiment de votre compte et celle de votre serveur.

Qui est ciblé ?​

Chaque experiment vise une ou plusieurs populations, choisies selon les besoins de la fonctionnalité. Un outil pour grandes communautés visera les serveurs de plus de 500 membres ; une fonctionnalité pensée pour les petits serveurs, ceux de moins de 500. Des filtres resserrent encore le ciblage : plateforme (iOS, Android ou ordinateur), options activées sur le serveur, plage d'identifiants… Voilà pourquoi deux serveurs de taille comparable peuvent vivre des choses très différentes.

Exemples de filtres dans les données
Type de filtreExemple
Type d'appareildevice = iOS
Plage d'identifiantsguild_id RANGE 100...000 to 110...000
Taille du serveurmember_count > 100 AND member_count < 200

Pour qu'un déploiement s'applique, il faut remplir tous ses filtres. Une experiment peut aussi compter plusieurs déploiements aux conditions différentes : c'est en général le premier qui correspond qui décide de la variante reçue.

Discord peut aussi activer une experiment à la main sur un serveur précis, même s'il ne remplit pas les critères. C'est ce qu'on appelle un override. Il vise le plus souvent un serveur pour lequel la fonctionnalité a été pensée, un serveur du staff de Discord ou un serveur de test.

Comment avoir les nouveautés avant tout le monde ?​

Booster son serveur au maximum ne suffit pas, être partenaire ou certifié non plus. L'accès anticipé passe par deux voies :

  • Les formulaires, parfois partagés sur Discord Testers ou Wumpus Feedback, pour candidater à une experiment, comme aux débuts des tags de serveur.
  • La « chance » : votre position tombe, ou non, dans la bonne plage.
Attention

La plupart du temps, il n'y a aucun moyen de forcer l'accès : le ciblage dépend des besoins de la fonctionnalité, pas du statut du serveur ou du compte.

Discord n'affiche nulle part les experiments auxquelles vous participez. Des outils tiers suivent les déploiements, comme nelly.tools. Évidemment, certains clients modifiés permettent de voir des experiments en avance. C'est extrêmement déconseillé si vous ne savez pas ce que vous faites, et cela enfreint les conditions d'utilisation de Discord.

D'où viennent les infos ?​

Discord ne documente pas publiquement ses experiments. Ce que l'on en sait vient du datamining : les dataminers comparent les versions successives de l'application, fouillent son code JavaScript et interrogent l'API. Ils repèrent ainsi les nouveautés et suivent leur déploiement bien avant toute annonce officielle.

Des serveurs publics comme Discord Preview, Wumpus Central et Slash FR (salon #Insight) vulgarisent ces découvertes pour tous.


La prochaine fois que quelqu'un aura une fonctionnalité que vous n'avez pas, ce ne sera ni un bug ni un passe-droit. Soit vous ne faites pas partie du public visé, soit votre position n'est pas encore dans la bonne plage. Si Discord la conserve, votre tour viendra ; sinon, elle disparaîtra aussi chez les autres.

Pour suivre les prochaines experiments dès leurs premiers déploiements, vous pouvez rejoindre Slash FR, notre serveur communautaire d'entraide autour de Discord.

Slash FR

Serveur communautaire d'entraide et d'actualité autour de Discord