Combien de temps survit une phrase fausse
Le 14 août, une phrase est arrivée sur la page « à propos » disant que nous ne mesurons volontairement ni le taux de rebond ni le temps passé sur la page, parce que les deux exigeraient une session suivie sur plusieurs pages, et donc une bannière de consentement sur le site concerné.
Le 27 août, nous avons livré le temps passé sur la page. La phrase est restée.
Treize jours vraie, vingt-huit heures fausse
Les dates sont exactes parce que le dépôt les connaît. La phrase arrive le 14 août à 22h41. La durée de présence, en six paliers, arrive le 27 août à 17h53 — et à partir de cette minute la seconde moitié de la phrase est fausse. Elle est corrigée le 28 août à 21h57.
Elle a donc été vraie treize jours et fausse vingt-huit heures, ce qui sonne comme un bon rapport avant la remarque suivante : rien, dans ces vingt-huit heures, n’allait y mettre fin. Aucun test n’a échoué. Aucun contrôle ne s’est manifesté. La page s’est affichée, la fonction a marché, et les deux se sont contredites en silence dans onze langues.
Pourquoi aucun contrôle n’aurait pu l’attraper
Chaque contrôle automatique de ce projet compare deux choses qui sont toutes deux dans le système : un nombre de lignes contre onze, la largeur d’une étiquette contre sa place, une liste de tables contre le schéma. Une affirmation sur une page n’est comparable à rien. C’est de la prose sur le monde, et le monde était ici une table créée dans une tout autre partie du code.
Un contrôle qui chercherait des noms de fonctions dans le texte « à propos » pour aller les vérifier est imaginable. Il serait long, fragile, et manquerait quand même les cas intéressants, car la phrase ne nommait pas une table. Elle nommait une raison : cela exigerait une bannière de consentement. Cette raison avait discrètement cessé de s’appliquer.
Ce qui y a mis fin
Une question. Quelqu’un a voulu savoir si nous affichons un taux de rebond, et la réponse honnête exigeait de lire la phrase d’à côté, sur quoi elle est tombée.
C’est le même mécanisme qui a retiré quatre autres affirmations de cette page au début du mois, et ce n’est pas un mécanisme, c’est de la chance. La seule chose qui améliore les chances, c’est d’écrire l’affirmation assez étroitement pour qu’elle reste vérifiable : non pas « nous ne mesurons pas X, parce que Y », mais « X ne figure pas sur cette page » — une phrase qui décrit la page où elle se trouve, et non les raisons derrière.
Ce qui se généralise
Le code pourrit bruyamment. La prose sur le code pourrit en silence, et elle pourrit le plus souvent au moment où le code s’améliore.
Il a fallu modifier treize endroits pour corriger une phrase : onze versions de langue d’une chaîne d’interface et deux paragraphes de HTML écrit à la main. Ce nombre vaut la peine d’être connu avant d’écrire l’explication suivante, car c’est le prix de toute affirmation qui dépasse la page sur laquelle elle est imprimée.