Les meilleurs easter eggs cachés dans vos langages et outils de développeurs
La chasse aux oeufs, version git blame — Dimanche de Pâques oblige, j'ai trouvé mieux que les oeufs en chocolat (quoique). On a tous croisé un commentaire suspect dans un codebase, une réponse inattendue d'un compilateur ou une commande qui n'avait rien à faire là.
Derrière ces curiosités se cachent des décennies d'easter eggs semés par des développeurs qui avaient visiblement du temps de compile à tuer.
Un développeur rancunier et un pixel
L'histoire commence en 1979. Warren Robinett développe Adventure pour l'Atari 2600, qui sortira en 1980. Le jeu se vend à plus d'un million d'exemplaires à 25 dollars pièce.
Le salaire de Robinett ? 22 000 dollars par an, zéro royalty, et son nom n'apparaît nulle part sur la boîte — Atari refusait de créditer ses développeurs, de peur que la concurrence ne vienne les débaucher.
Robinett décide alors de se faire justice lui-même. Il planque un pixel invisible dans les murs des catacombes du jeu. Un joueur assez obstiné pour le dénicher et le transporter au bon endroit verrait un mur se mettre à clignoter, révélant une salle secrète avec le message "Created by Warren Robinett". Puis Robinett quitte Atari, sans révéler son secret à quiconque.
C'est un ado de 15 ans de Salt Lake City, Adam Clayton, qui finit par trouver la fameuse salle et envoie une lettre à Atari. L'entreprise dépêche ses développeurs pour localiser le code responsable.
Steve Wright, directeur du développement logiciel, décide non seulement de garder le message, mais compare la trouvaille à une chasse aux oeufs de Pâques et baptise le concept "easter egg". Il ira même jusqu'à exiger que tous les futurs jeux Atari en contiennent un. La rébellion d'un développeur sous-payé venait de devenir une politique d'entreprise.
Et Robinett n'était même pas le premier. En 1973, Moonlander planquait un McDonald's sur la Lune si le joueur volait assez loin horizontalement. Et entre 1967 et 1968, la commande make love sur les PDP-6 du Stanford AI Lab répondait déjà not war?.
1885 à Hill Valley, 1977 dans une galaxie lointaine
Certains easter eggs ne se trouvent qu'en lisant le code source.
Dans la stdlib de Go, le package time fixe son époque interne à l'année 1885. Russ Cox, l'un des mainteneurs du langage, a confirmé que c'était "le choix évident en raison de son importance historique pour Hill Valley, Californie", la ville fictive de Retour vers le Futur.

Plus loin, dans le package net, une variable nommée aLongTimeAgo était initialisée au 25 mai 1977 : la date de sortie de Star Wars: Episode IV. Le nom combiné à cette date formait un hommage discret à "A long time ago in a galaxy far, far away..." La référence Star Wars a depuis été remplacée par un prosaïque time.Unix(1, 0) dans Go 1.14. Hill Valley, en revanche, tient bon : minWall est toujours calé en 1885.
Dans les premières versions de GCC (fin des années 80), le compilateur avait une approche assez personnelle de #pragma (la directive C qui permet de donner des instructions spécifiques au compilateur) : quand le préprocesseur en rencontrait une qu'il ne connaissait pas, il tentait de lancer Hack (l'ancêtre de NetHack). En cas d'échec, il essayait Rogue. Puis la Tour de Hanoï dans Emacs.
Et si absolument rien ne fonctionnait : "You are in a maze of twisty compiler features, all different". L'easter egg a fini entre les murs d'un #if 0, avec un commentaire laconique dans le source : "c'était marrant, mais #pragma commence à servir à quelque chose".
Entre 2013 et 2015, chaque binaire compilé en Rust embarquait une citation de H.P. Lovecraft, affichée en cas de panic. Ce comportement a été retiré quand les puristes de la performance ont fait remarquer que ça gonflait le Hello World.
Linus Torvalds, de son côté, a donné le ton dès le premier jour : le tout premier commit de Git, le 7 avril 2005, porte le message "Initial revision of 'git', the information manager from hell".
import épique
Le langage Python n'est pas en reste. import antigravity ouvre votre navigateur sur le comic xkcd #353, et le module contient en bonus une implémentation de l'algorithme de geohashing du xkcd #426 : un easter egg dans l'easter egg.
from __future__ import braces répond SyntaxError: not a chance. Et from __future__ import barry_as_FLUFL réactive l'opérateur <> (l'ancêtre de !=, supprimé depuis Python 3) en hommage à Barry Warsaw, contributeur historique de CPython et ancien release manager, dont le titre officiel auto-décerné est "Friendly Language Uncle For Life" (issu de la proposition d'amélioration 401, publiée un 1er avril).
Vim a également ses propres easter eggs : :help 42 affiche la réponse à la Grande Question du Guide du voyageur galactique, :Ni! vous demande un arbuste (Sacré Graal), et :help bar vous offre un "Ceci n'est pas une pipe" digne de Magritte.

Emacs pousse le concept encore plus loin avec M-x butterfly, qui prétend utiliser des papillons pour flipper un bit sur votre disque dur (en référence au xkcd #378).
Côté GitHub, visitez github.com/π pour découvrir Pi en ASCII jusqu'à 336 décimales, et essayez gh repo garden dans la CLI pour transformer n'importe quel dépôt en petit jardin zen en ASCII art où chaque fleur représente un contributeur.
Et impossible de ne pas mentionner le code HTTP 418 : "I'm a teapot", défini dans la RFC 2324 du 1er avril 1998 pour le "Hyper Text Coffee Pot Control Protocol". Google l'implémente toujours sur google.com/teapot avec une théière animée qui verse du thé quand vous inclinez votre téléphone.
Et quand l'IETF a recodifié toute la spec HTTP en 2022 avec la RFC 9110, ils auraient pu récupérer le 418 pour un vrai usage. Au lieu de ça, ils l'ont marqué comme réservé : la blague est désormais protégée par un standard. Que voulez-vous, en programmation, les easter eggs, c'est sacré.
À propos de l'auteur
Nicolas Lecointre
Chief Happiness Officer des développeurs, ceinture noire de sudo. Pour rire, j'ai créé Les Joies du Code. J'utilise Vim depuis 10 ans parce que je sais pas comment le quitter.
À lire également
Passbolt : le gestionnaire de mots de passe open source que votre équipe mérite vraiment
Je connais l’histoire, vous la connaissez, on la connaît tous. Le stagiaire qui est resté six mois, qui a fini par avoir accès à un peu (beaucoup) plus de choses...
Articles similaires
13 ans plus tard, la Xbox One réputée imprenable se fait hacker
TypeScript 6.0 est sorti : la dernière version en JavaScript avant le grand saut vers Go
Insolite : il crée un langage de programmation avec des M&M's
13 ans plus tard, la Xbox One réputée imprenable se fait hacker
TypeScript 6.0 est sorti : la dernière version en JavaScript avant le grand saut vers Go
OpenAI acquiert Astral, le créateur de uv et Ruff
Plus de contenu
Quand le testeur sort du scénario pour pousser mon dev dans ses retranchements
Quand notre merge passe à la perfection
Ah ! Saleté de clavier !
Quand le client me dit que sa base de données est sous Excel
Quand on n'est pas fait pour le pair programming
Quand le code que je dois maintenir a des variables, classes, fonctions et commentaires en allemand
Quand on me donne "les specs mises à jour" juste après mon passage en prod
Quand je rassure le client sur un bug majeur en production
Quand le testeur sort du scénario pour pousser mon dev dans ses retranchements
Quand notre merge passe à la perfection
Ah ! Saleté de clavier !
Quand le client me dit que sa base de données est sous Excel
Quand on n'est pas fait pour le pair programming