- L’API publique d’Android cache des méthodes et constantes humoristiques
- Parmi les plus connues, des méthodes comme isUserAMonkey() et isUserAGoat() mêlent usage réel et clin d’œil humoristique
- DISALLOW_FUN, Log.wtf() et d’autres incluent dans l’API officielle des descriptions facétieuses ou des comportements amusants
- Des noms inventifs ou des parodies (par ex.
TWEET_TRANSACTION,GRAVITY_DEATH_STAR_I) apparaissent fréquemment dans la documentation officielle ou dans le code - Ces éléments offrent aux développeurs un peu de plaisir et de petites découvertes
Les blagues et éléments humoristiques dans l’API publique d’Android
L’API ouverte d’Android contient, en plus de ses fonctions réelles, divers traits d’esprit, blagues et easter eggs destinés aux développeurs.
ActivityManager.isUserAMonkey()
- Méthode permettant de détecter si l’outil de développement UI Exerciser Monkey est en cours d’exécution
- Elle a été conçue pour permettre de limiter certains comportements dans un environnement de test de charge où l’UI simule des entrées aléatoires
- Elle a été introduite pour restreindre certaines fonctions importantes (par ex. les appels d’urgence) lorsque c’est un monkey, et non un véritable utilisateur, qui manipule l’application
- Ajoutée à l’API publique avec Android 2.2 (Froyo, API 8)
- Son implémentation remonte aux débuts d’Android pour résoudre de vrais problèmes survenus par accident
UserManager.isUserAGoat()
- La documentation officielle indique en plaisantant qu’elle sert à vérifier si l’utilisateur peut être téléporté
- Au départ, elle renvoyait toujours
false, puis a été modifiée après la sortie de Goat Simulator pour renvoyertruesi le jeu était installé - À partir d’Android 11 (API 30), elle renvoie toujours
falsepour des raisons de protection de la vie privée - Il existait une logique de détection de l’application Goat Simulator, mais elle a été modifiée afin d’éviter les fuites d’information avec l’évolution des règles d’accès à la liste des applications
- Elle s’inspire d’un easter egg du gestionnaire des tâches de Google Chrome
UserManager.DISALLOW_FUN
- Politique de restriction du fun ajoutée dans Android 6 Marshmallow (API 23)
- La documentation officielle explique avec humour qu’elle peut empêcher l’utilisateur de ressentir de la joie ou du plaisir
- En pratique, il s’agit d’une politique permettant au propriétaire de l’appareil de bloquer certaines fonctions utilisateur
- Certaines applications ou le système lui-même peuvent détecter cette politique pour désactiver des fonctions “amusantes”, comme des easter eggs
- Elle peut être utilisée dans des établissements scolaires pour désactiver des fonctions distrayantes
Chronometer.isTheFinalCountdown()
- La méthode isTheFinalCountdown a été ajoutée dans Android 8 Oreo (API 26)
- Lorsqu’elle est appelée, elle lance automatiquement la vidéo YouTube de “The Final Countdown” du groupe Europe
- Elle n’a pas d’utilité pratique directe et constitue clairement une blague ou une référence
- Cela apparaît explicitement dans le code via une instruction
Intent - Elle apporte un petit moment ludique aux développeurs
PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND
- Constante indiquant la prise en charge du multitouch ajoutée dans Android 2.3 Gingerbread (API 8)
- Son nom est une parodie de jazz hands (geste de performance musicale)
- Elle correspond à la reconnaissance simultanée de jusqu’à cinq doigts
Log.wtf()
- Acronyme de What a Terrible Failure, utilisé pour journaliser une situation qui ne devrait jamais se produire
- Classé comme log très grave, de niveau assertion
- C’est l’une des API humoristiques les plus connues chez les développeurs
AdapterViewFlipper.fyiWillBeAdvancedByHostKThx()
- Ajoutée dans Android 3.0 Honeycomb (API 11)
- Son nom officieux et joyeusement absurde est utilisé lorsque la vue est avancée par l’hôte
- Il semble provenir d’un élan comique au moment du nommage
- C’est une manière spirituelle d’illustrer l’un des problèmes chroniques de l’informatique : la difficulté de nommer correctement les choses
IBinder.TWEET_TRANSACTION
- Type de transaction introduit dans Android 3.2 Honeycomb (API 13)
- Il suggère l’envoi d’un tweet, mais en pratique ne fait rien, et sa limite de 130 caractères renvoie à une ancienne règle de Twitter
- Le nom lui-même est une pure parodie
IBinder.LIKE_TRANSACTION
- Transaction LIKE ajoutée dans Android 4.0.3 ICS (API 15)
- Elle sert à signaler que l’appelant apprécie l’application, sans qu’aucun enregistrement ni compteur réel n’existe
- Une description humoristique explique qu’elle aide à remonter l’estime de soi de l’application
SensorManager.SENSOR_TRICORDER
- Constante dont le nom vient du Tricorder de Star Trek
- Présente depuis Android 1.0, puis marquée comme obsolète
- Le Tricorder est un appareil de science-fiction inexistant, ce qui amuse les développeurs
SensorManager.GRAVITY_*
SensorManagercontient plusieurs constantes de gravité pour différents corps célestes (le Soleil, Pluton, etc.)- Parmi elles, GRAVITY_DEATH_STAR_I (l’Étoile de la mort de Star Wars) et GRAVITY_THE_ISLAND (l’île de la série LOST) sont des blagues
- Certaines ont davantage une valeur parodique qu’un véritable usage pratique
<blink> balise
- Le système de layout de vues d’Android contient une balise cachée
<blink> - Elle fait clignoter les vues enfants comme l’ancien
<blink>du HTML - Elle n’est pas documentée officiellement, mais a été ajoutée dans un commit de 2011 et reste présente dans l’AOSP
- Son utilisation réelle fait débat
Conclusion
Dans toute l’API officielle d’Android, on trouve volontairement des blagues, des parodies et des éléments façon easter egg
Ces détails offrent aux développeurs de petites joies et le plaisir de la découverte, tout en donnant un aperçu de la culture communautaire et de la bonne humeur qui entourent Android.
2 commentaires
Avis sur Hacker News
Chez FB, pendant plusieurs années, il y avait la convention d’ajouter un suffixe comme
_DO_NOT_USE_OR_YOU_WILL_BE_FIREDaux tokens dangereux ou déjà obsolètes. Tout le monde connaissait cette blague, mais après la pandémie, avec une proportion plus élevée de nouvelles recrues et un onboarding à distance insuffisant, certaines plaintes sont apparues disant que ce genre de blagues internes provoquait de la peur ou de l’incertitude. Cela dit, je ne parle que de ce que j’ai personnellement observéJe me souviens avoir toujours trouvé amusants les noms joyeux et excessivement longs comme
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIREDdans React. Mais malheureusement, ce type d’« humour » disparaît peu à peu ces derniers temps PR associéeAutrefois chez Google, il y avait quelque part dans la stack réseau un énorme bloc de code difficile à comprendre et encore plus difficile à modifier, qui ne cessait de grossir. Notre équipe l’a rebaptisé « [Foo]Sorcery ». Comme ce nom était à la fois un peu effrayant et étrange, plus personne n’essayait d’y ajouter quoi que ce soit, et de temps en temps quelqu’un en profitait pour nettoyer et supprimer une partie du code. Je pense que ce naming amusant a vraiment eu un effet
Dans le code source d’Android, la fonction maligne que je préfère est
android.os.Handler.runWithScissors(), mais malheureusement elle ne fait pas partie de l’API publique lien vers le code sourceLe commentaire de cette fonction contient la phrase « @hide This method is prone to abuse and should probably not be in the API. If we ever do add it, we should probably give it a more reasonable name, like runUnsafe() » et ça m’a bien fait rire
Je suis un peu déçu que cette fonction ne figure pas dans l’article. C’est l’une de mes préférées
L’exemple qui me vient immédiatement à l’esprit pour X11, c’est la variable globale
party_like_its_1989lien vers le code, et le changelog de l’extension DRI2 est rempli d’expressions comme « Awesomeness! », « True excellence » et « Enlightenment attained » lien vers le changelogDans BeOS (et Haiku), il existe des fonctions
is_computer_on()etis_computer_on_fire(), avec une description absolument excellente lien de référenceDans Delphi, il existe aussi une exception
EProgrammerNotFound, et la documentation officielle a un humour très sec et très sérieux lien vers la docBien sûr, je comprends que ce type de naming ait été fait pour être drôle, mais sur les ordinateurs modernes avec gestion avancée de l’alimentation, ce genre d’état est en réalité assez courant. Un système d’exploitation doit naturellement gérer aussi bien un réveil depuis un mode de veille profonde qu’une carte mère à 200 degrés
is_computer_on_fire()aurait été encore plus drôle comme déclencheur asynchrone basé sur des événementsPour les curieux, voici aussi le lien vers le code source correspondant lien vers le code
J’aime le fait que ce sens de l’humour survive encore dans les codebases des grandes entreprises. Quand on n’utilise que l’API, on ne le voit pas, mais en lisant directement le code source, ces petits easter eggs qu’on croise parfois donnent vraiment le sentiment qu’un humain a écrit ce code. Les logiciels d’aujourd’hui sont si froids que c’est justement ce contraste qui leur donne un peu de chaleur. Franchement, j’aimerais qu’il y en ait davantage
Si vous voulez tester vous-même des choses comme isUserAGoat ou isUserAMonkey sur Android, j’ai mis en ligne une petite app qui propose ce genre de fonctions lien vers l’app. J’aimerais y ajouter encore plus d’easter eggs plus tard
Ajouter aussi quelque chose comme un contrôle de politique
DISALLOW_FUNpourrait être assez amusant. J’ai cherché le code correspondant sur GitHub, mais en général il n’est utilisé que pour masquer l’easter egg de version dans l’app système Settings. Je serai peut-être le premier développeur tiers à en faire un usage réelPar contre, l’app ne s’installe pas sur Android 15. Ce serait bien de la mettre à jour, puisque Google impose désormais de respecter un minimum compileSdk
Le gestionnaire des tâches de Chrome avait autrefois une colonne cachée qui affichait « le nombre de chèvres téléportées par le processus du navigateur ». Cette fonctionnalité a disparu aujourd’hui, mais on peut la voir sur une ancienne capture d’écran. Il y avait autrefois jusqu’à 234 colonnes, contre seulement 16 aujourd’hui, et c’est un peu dommage
L’époque où les produits tech débordaient d’easter eggs me manque. J’ai l’impression que cette culture a disparu à mesure que tout s’est corporatisé
J’aimerais faire de la réponse à ce fil une question obligatoire en entretien. Moi aussi, quand on m’interviewe. C’est vraiment un moment « il y a deux sortes de personnes dans le monde »
Donc oui, il est question d’humour et de blagues dans la documentation technique. C’est souvent vu négativement, mais moi j’adore quand la documentation contient de l’humour. J’en ai déjà parlé ici
Le terme « humour » a été traduit par une IA...? 😨😨