Un bibliothèque complète cachée dans le code source des dépôts Debian
Tiens, alors ça c’est rigolo ! Le projet deb-books vient de mettre en lumière une pratique assez fascinante, à savoir l’utilisation d’œuvres littéraires complètes comme données de test dans des dépôts Debian.
En général, quand je pense “dépôt Debian”, j’imagine des lignes de code impénétrables et des commentaires cryptiques et chelous qui feraient chialer un intégrateur HTML, mais certainement pas les œuvres complètes de William Shakespeare ou les aventures d’Alice au pays des merveilles.
Et pourtant !
Le codeur Jakub Wilk a découvert que les sources Debian sont une sorte de bibliothèque d’Alexandrie numérique, où se cachent des classiques littéraires vieux de plusieurs siècles. Une sorte de Room of Requirement version geek qui n’attendait que le bon incantateur pour révéler ses trésors.
Mais alors… pourquoi cacher des bouquins dans du code source ??? C’est quoi encore ce délire ?
Et bien c’est là que cet article devient intéressant ^^ !
Ces textes ne sont pas là par hasard ou par fantaisie littéraire de la part des devs Debian. Non, non, non, ils servent de données de test standardisées pour divers algorithmes et outils.
Par exemple, quand vous développez un algorithme de compression comme bzip3, vous avez besoin de textes avec des patterns naturels pour tester l’efficacité de votre algo. Et quoi de mieux que “Les Œuvres Complètes de William Shakespeare” pour ça ? Ce bon vieux Will offre en effet un corpus textuel varié, avec répétitions, richesse linguistique et motifs suffisamment complexes pour mettre votre algo à l’épreuve.
De même, les textes comme “Les Aventures d’Alice au pays des merveilles” de Lewis Carroll se retrouvent dans les tests du projet snappy (compression) et des packages Golang.
C’est top pour tester tout ce qui est :
• Compression sans perte (les patterns naturels du langage humain) • Algorithmes de recherche textuelle (xapian-core) • Outils d’encodage de caractères (icu4j) • Implémentations de structures de données (rust-radix-trie)
Et c’est quand même plus classe de tester son code avec du Shakespeare qu’avec un bon vieux “Lorem ipsum dolor sit amet” répété 10 000 fois !
Voici donc un petit tour d’horizon complet des pépites littéraires triées par années, que Jakub a pu repérer dans cette bibliothèque clandestine :
- 1610 : La Bible Douay-Rheims (tome 2) - La Seconde Partie de l’Ancien Testament - nichée dans icu4j pour tester l’encodage de textes anciens
- 1623 : Les Œuvres Complètes de William Shakespeare - utilisées par bzip3 pour les tests de compression
- 1623 : William Shakespeare : Comme il vous plaira - un autre classique shakespearien présent dans snappy
- 1667 : John Milton : Le Paradis perdu - dans snappy, encore pour la compression
- 1730 : Isaac Newton : Optique - pour tester les fonctionnalités de Golang 1.15
- 1851 : Herman Melville : Moby Dick ou le Cachalot - trouvé dans golang-github-colinmarc-hdfs
- 1862 : Thomas Carlyle : Histoire de Frédéric II de Prusse. Livre XIII - utilisé dans les tests de xapian-core
- 1865 : Lewis Carroll : Les Aventures d’Alice au pays des merveilles - le chouchou des développeurs, présent dans plusieurs projets
- 1869 : Léon Tolstoï : Guerre et Paix - dans les exemples de NVIDIA CUDA (oui, même NVIDIA s’y met !)
- 1874 : Thomas Hardy : Loin de la foule déchaînée - caché dans ghc pour les tests de performance
- 1876 : Mark Twain : Les Aventures de Tom Sawyer - utilisé par Golang pour tester la compression
- 1890 : Oscar Wilde : Le Portrait de Dorian Gray - présent dans libwebsockets pour les tests de recherche
- 1892 : Arthur Conan Doyle : Les Aventures de Sherlock Holmes - utilisé par Firefox pour ses regex tests
- 1897 : H.G. Wells : L’Homme invisible - dans icu4j pour la collation de textes
- 1915 : Arthur Conan Doyle : La Vallée de la peur - encore dans icu4j
- 1922 : James Joyce : Ulysse - également dans icu4j pour la collation
- 1949 : George Orwell : 1984 - dans rust-radix-trie, parce que Big Brother is watching your data structures
- 1992 : James Daly : Workshop on electronic text - dans snappy, le petit nouveau de cette collection
Maintenant, si vous voulez explorer vous-même cette étrange collection littéraire, rien de plus simple.
D’abord, installez les outils nécessaires :
sudo apt install apt-source devscripts
Configurez les sources Debian (si ce n’est pas déjà fait) :
echo "deb-src http://deb.debian.org/debian/ stable main" | sudo tee -a /etc/apt/sources.list
sudo apt update
Puis téléchargeons les sources d’un package contenant un texte intéressant, comme snappy qui héberge Alice au pays des merveilles :
apt-get source snappy
cd snappy-*
find . -name "*.txt"
Et voilà ! Vous devriez trouver plusieurs fichiers .txt, dont certains sont des fameux classiques littéraires. Et pour lire Alice :
less testdata/alice29.txt
Ce qui est fascinant, c’est que ces fichiers servent finalement de corpus standard dans l’industrie du dev. En utilisant toujours les mêmes textes, les développeurs peuvent facilement comparer les performances de leurs algorithmes avec ceux des autres. Comme une sorte de benchmark littéraire informel qui s’est imposé naturellement au fil du temps.
Ces textes ont aussi l’avantage d’être principalement dans le domaine public, ce qui évite les problèmes de licence et ils offrent une variété de styles, d’époques et de complexités linguistiques capables de mettre à l’épreuve différents aspects des programmes open source. Certains diraient que c’est une forme moderne de préservation culturelle, d’autres y verraient simplement une solution pratique à un problème technique. Moi, j’y vois surtout une preuve que les plus barbus des barbus adorent aussi la littérature !
Donc, voilà si vous cherchez des livres gratuits en anglais, y’a quelques trucs ici. loool. Et si vous voulez planquer certains de mes articles dans vos codes sources, n’hésitez pas hein :)