Quels sont les arguments contre les œufs de Pâques? Y a-t-il des arguments pour soutenir même les œufs de Pâques? [fermé]

28

Je suis un peu bouffon donc l'idée d'un œuf de Pâques me plaît toujours. Je les ai déjà ajoutés dans mon code, mais mon groupe d'amis a une blague courante d'utiliser CTRL-FU pour déclencher l'œuf.

Maintenant, je suis aussi un peu paranoïaque à propos des performances, donc j'aime supprimer les excès chaque fois que possible. Cela contredit fortement les œufs de Pâques car ils sont 100% superflus.

Quels sont les arguments contre les œufs de Pâques? Y a-t-il également des arguments pour soutenir même les œufs de Pâques?


la source
5
À mon humble avis, cette question ne mérite pas du tout d'être rejetée, certainement pas non motivée. Je suis moi-même très intéressé par le sujet. Surtout en sachant comment il est perçu par les utilisateurs finaux, les vrais patrons.
Ceci est primordial pour un @Mark Trapp classique "nous sommes là pour résoudre les vrais problèmes que vous pourriez rencontrer."
Gratzy
1
@ChrisF wow si ma question programmers.stackexchange.com/questions/38810/… obtient la réponse "vraie question" et que vous me dites que non, alors je suis vraiment confus quant à l'objectif de ce site.
Gratzy
1
Grande question, à mon humble avis.
Uri
1
@Mark C Aye, je suis juste paranoïaque au sujet du gaspillage des ressources.

Réponses:

11

Comme toujours, la réponse est "cela dépend".

Les œufs de Pâques sont un moyen d'encourager l'exploration du programme "monde". Dans un jeu, c'est assez évident - vous grimpez au sommet de la plus haute montagne et vous la trouvez (par exemple), mais pour d'autres applications, vous devez utiliser des options cachées comme votre œuf de Pâques. Cependant, ils sont considérés comme futiles par certaines personnes, donc si vous écrivez une application commerciale ultra sérieuse, vous ne voulez pas déranger vos utilisateurs en leur présentant un écran de hamsters chantants (ou quoi que ce soit) quand ils trouvent la combinaison de touches magique .

La présence d'un œuf de Pâques dans une application ne devrait pas avoir d'impact négatif sur les performances. Donc, à moins que vous n'analysiez les entrées au clavier pour le fonctionnement normal de votre application, avoir Ctrl+ FUcomme déclencheur est une mauvaise idée. Tant que le code n'est exécuté que s'il est trouvé, il n'y a donc aucune pénalité d'exécution. La seule pénalité est l'augmentation de la taille du programme - qui peut ou non être un problème. Si la taille du programme est un problème, laissez-le définitivement.

Cependant, avoir le code supplémentaire pose un problème de support. Vous devez toujours prendre en charge le code et vous assurer qu'il fonctionne et ne cause pas de problèmes lors de son exécution. La dernière chose que vous voulez, c'est que votre application plante, tout comme l'utilisateur trouve l'œuf de Pâques!

ChrisF
la source
"La présence d'un œuf de Pâques dans une application ne devrait pas avoir d'impact négatif sur les performances. Il ne sera exécuté que s'il est trouvé, il n'y a donc aucune pénalité d'exécution." Vraiment? Si elle est déclenchée par un CTRL-FU comme les états OP, alors ne capturez-vous pas chaque coup de clé?
Gratzy
2
@Gratzy - En fait, c'est un bon point - à moins que vous ne trappiez les touches pour le fonctionnement normal, alors c'est un exemple d'un mauvais œuf de Pâques.
ChrisF
7

Je dirais que cela dépend fortement du type de logiciel que vous développez.

Les œufs de Pâques à mon humble avis sont plus susceptibles d'être acceptés (ou même appréciés) dans les jeux que dans les logiciels d'entreprise. Même Microsoft avait mis des oeufs de Pâques dans ses produits, mais a presque complètement arrêté cela maintenant. La raison pour laquelle Microsoft a cessé de mettre des œufs de Pâques est étroitement liée aux raisons possibles contre les œufs de Pâques: problèmes de sécurité. Comme indiqué dans l'article Wikipedia pertinent, Les oeufs de Pâques sont généralement (au moins pour l'utilisateur / client) des parties non documentées du code, ce qui peut le faire croire que le produit était plus ouvert aux attaques ou, à d'autres égards, non fiable. De plus, tout le code d'oeufs de Pâques n'est pas testé et audité au même degré que le code "mission critique". Cela peut entraîner des failles non découvertes ou des trous de boucle dans la base de code qui peuvent être à l'origine d'une attaque ultérieure ou d'un exploit de logiciel malveillant.

Cependant, tous les œufs de Pâques ne sont pas «mauvais» et nécessitent une falsification du code réel du produit. Il existe de nombreuses façons de présenter les oeufs de Pâques, en particulier dans les jeux où le code est quelque peu séparé du contenu (jeu / graphiques / moteur de script vs script réel ou fichiers de niveau). Ces méthodes vont des textures / objets spéciaux et des commentaires audio du protagoniste (par exemple, tels qu'utilisés dans DN3D: Doom , Terminator , Indiana Jones , Star Trek ) aux niveaux secrets ( "il n'y a pas de niveau de vache" ) aux dialogues indiquant quand un certain objet / emplacement dans l'interface utilisateur est cliqué, et bien plus encore. Bien sûr, chacun d'eux ne convient pas à chaque type de produit.

Une bonne façon de mettre un œuf de Pâques dans votre produit est de vous inclure en quelque sorte (et pas seulement dans la section crédits). Blizzard a très bien fait cela avec StarCraft 2 . Un portrait d'unité est en fait le visage de l'un des développeurs. Quelque chose de pas si évident comme ça est généralement approprié pour de nombreux types de logiciels, car il ne repose pas sur la connaissance des médias ou un certain type d'humour. Par exemple, vous pourriez peut-être vous inclure en tant que personnage dans le contexte du produit. Selon le produit, cela peut même ne pas nécessiter une chance au code ou seulement très simple.

Les oeufs de Pâques sont à mon humble avis mais pas obligatoires. La mise en œuvre d'un œuf de Pâques ne doit jamais nuire au produit réel et sa présentation doit être adaptée au public cible en retrait du produit final. Un œuf de Pâques dans une application "sérieuse" ou un produit destiné aux non-adultes ne devrait jamais inclure de l'humour adulte ou du contenu sexuel, aussi drôle ou inoffensif qu'il puisse paraître. Cela pourrait non seulement entraîner des conséquences juridiques, mais également affecter la gamme de commercialisation du logiciel ( notations USK / PEGI / ESRB , par exemple).

Baelnorn
la source
1
Vous devez vraiment voir pourquoi Microsoft a cessé de mettre des œufs de Pâques dans son code. Un œuf de Pâques est un chemin de code qui n'est pas entièrement testé (si vous avez eu la possibilité de faire un contrôle qualité complet sur un œuf de Pâques, pourquoi n'avez-vous pas pris le temps d'inclure une fonctionnalité différente et utile à la place?), Ce qui signifie c'est une source potentielle de failles de sécurité.
Anon.
@Anon: D'après l'article de Wikipédia que j'ai mentionné dans ma réponse: "Microsoft, qui dans le passé a créé certains des œufs de Pâques les plus grands et les plus élaborés tels que ceux de Microsoft Office, n'autorise plus les œufs de Pâques dans leur logiciel dans le cadre de leur initiative Trustworthy Computing. " La source de cette déclaration est l'article de blog MSDN lié dans la réponse de Charles. Je ne vois aucune contradiction avec ma déclaration. Pourriez-vous s'il vous plaît expliquer où je me suis trompé? :)
Baelnorn
La première partie de la réponse se lit comme "hé, Microsoft faisait ça, n'est-ce pas génial", mais alors les raisons réelles pour lesquelles ils ne le font plus sont enterrées à mi-chemin de la réponse. Un lecteur occasionnel ne le verra pas et il est déconnecté du contexte pertinent. Idéalement, j'aimerais un remaniement des paragraphes pour placer le paragraphe contre un peu plus en évidence.
Anon.
@Anon: Merci pour l'avertissement. J'ai édité ma réponse et réorganisé les paragraphes, détaillant les raisons contre EE dans la première partie.
Baelnorn
5

Les œufs de Pâques étaient courants même dans les principales versions de logiciels commerciaux des années 80 et 90. Pour la plupart, ils étaient mignons et relativement peu de gens les dérangeaient. Je pense qu'ils sont moins courants aujourd'hui pour trois raisons:

  1. Comme toutes les blagues pratiques, elles sont drôles jusqu'à ce que quelqu'un fasse sortir un œil. Si votre œuf de Pâques a un bogue qui entraîne une perte de données ou un problème de performances, vous devrez peut-être expliquer à un groupe d'avocats que vous ne distribuiez pas réellement de "logiciels malveillants".

  2. L'humour est très, très, difficile à faire correctement, et si vous le faites mal, vous offenserez les clients payants qui cesseront alors de payer pour votre logiciel et qui écriront de nombreuses lettres désagréables à la presse au sujet de la terrible entreprise immature dans laquelle vous travaillez. pour. L'exemple d'un œuf de Pâques déclenché par Ctrl-FU en est un parfait exemple. C'est probablement hystériquement drôle pour vos amis de 17 ans, mais c'est la règle 0 du marketing de ne jamais dire à vos clients "FU", même en plaisantant. Notez que les œufs de Pâques dans les gros logiciels commerciaux ne se sont jamais moqués de l'utilisateur, seulement des concurrents.

  3. Dans les mots immortels de Peter Tork des singes dans le film Head : "Personne ne prête de l'argent à un homme avec un sens de l'humour." Si vous achetez une infrastructure logicielle critique, le sens de l'humour de l'auteur n'est pas rassurant. En plus de cela, pourquoi passaient-ils du temps à écrire des œufs de Pâques alors qu'ils auraient pu corriger leurs nombreux bugs de sécurité?

Larry Osterman avait un blog assez célèbre il y a des années expliquant pourquoi le groupe OS de Microsoft n'autorise plus les œufs de Pâques .

Charles E. Grant
la source
1
Aujourd'hui encore, Google a un œuf de Pâques , ce qui signifie qu'ils vérifient l'entrée pour déclencher l'œuf de Pâques à chaque recherche. Ce n'est probablement pas beaucoup de traitement, mais compte tenu des centaines de millions de recherches qu'ils traitent chaque jour ... Je ne sais pas.
Charles Salvia
Je dois avouer que je lis le CTRL-FU comme une sorte de KUNG-FU.
Christopher Creutzig,
@Christopher, c'est une interprétation parfaitement raisonnable. L'humour est souvent sujet à de multiples interprétations, ce qui explique pourquoi il est difficile de mettre votre logiciel sans courir le risque d'offenser quelqu'un.
Charles E. Grant
@CharlesSalvia Selon la façon dont ils traitent les recherches pour déterminer les résultats "Vouliez-vous dire", cela peut ne pas ajouter de frais généraux en plus de ce qui existe déjà pour ce comportement.
JAB
4

Les œufs de Pâques sont de petits secrets laissés par les constructeurs. Cela nuit-il aux utilisateurs finaux? Non.

De nombreux logiciels bien connus et populaires ont inclus des œufs de Pâques cachés . Les œufs de Pâques ont également été utilisés pour afficher les sentiments d' un développeur sur un sujet délicat particulier d' une manière plutôt élégante.

Quant à l'optimisation du code, tant que les œufs de Pâques ne sont pas trop intensifs (bonjour simulateur de vol ), cela ne devrait pas nuire aux performances de manière significative.

Josh K
la source
Je ne suis pas d'accord. Un œuf de Pâques augmente le risque qu'un événement se produise qui puisse nuire aux utilisateurs. Au mieux, ces "fonctionnalités ajoutées" sont testées et utilisent simplement le temps des développeurs et du contrôle qualité. Au pire, personne d'autre que le réalisateur ne le sait. L'implémenteur quitte l'entreprise plus tard, et après une mise à jour du logiciel, involontairement, l'oeuf de Pâques devient malveillant avec des actions telles que la suppression des événements du clavier, la consommation de toute la mémoire RAM disponible, ou dans un cas extrême ... l'effacement du contenu de l'utilisateur disque dur. Sur le dessus? Peut être. Cependant, j'ai vu chacun de ces problèmes se produire comme des bogues normaux.
mummey
@mummey: Je pense que c'est un événement très peu probable.
Josh K
Ne feriez-vous pas tout votre possible pour atténuer ces risques?
StuperUser
@Stuper: Avez-vous déjà entendu parler d'un œuf de Pâques écrasant le programme?
Josh K
Pas entendu parler, mais les plantages pendant les oeufs de Pâques ne sont pas suffisamment critiques pour justifier la publication de problèmes dans la plupart des cas. Souvent, les utilisateurs ne renvoient pas d'informations pour la plupart des plantages de programmes MS pendant le fonctionnement normal .
StuperUser
2

Bien que j'aime les œufs de Pâques dans les logiciels, il est important de se rappeler que la ligne entre un œuf laissé dans un produit pour le plaisir et une porte dérobée malveillante peut être très mince d'un point de vue juridique. Par exemple, faut-il montrer le mal? Faut-il prouver son intention de nuire?

Considérant que la compréhension des tribunaux des ordinateurs et des logiciels est assez misérable (comme en témoignent certains brevets logiciels), débattre d'une telle affaire permettra à plusieurs avocats d'acheter une belle maison de vacances à Aspen. Si l'on considère les différents environnements juridiques (tels que le DMCA) dans lesquels les logiciels sont publiés et distribués dans le monde, il peut également leur acheter des maisons de vacances dans les Alpes.

En tant qu'ingénieurs embauchés, nous nous engageons à ne faire aucun mal à notre entreprise. Un litige pourrait devenir préjudiciable, et un litige est probable si nous livrons des logiciels sous contrat à d'autres clients, en particulier les gouvernements ou les grandes entreprises. Ainsi, je choisirais personnellement d'errer du bon côté.

Rappelez-vous, les ingénieurs existent pour utiliser la logique à de bonnes fins, tandis que les avocats existent pour tordre la logique du mal. C'est pourquoi ils sont payés beaucoup plus que nous.

Uri
la source
0

Beaucoup ont déclaré que les œufs de Pâques sont plus adaptés aux jeux, mais je pense qu'ils ont une utilisation dans les applications commerciales. Trop de gens créent simplement une série de recettes pour utiliser une application métier qu'ils ne regardent jamais dans d'autres domaines de l'application. Je veux dire qu'il y a des sections entières d'une application qu'ils ne regardent jamais si cela ne faisait pas partie de leur formation et cela aurait pu leur être utile. Actuellement, je travaillais sur une application avec 75 rapports et les utilisateurs demandaient des informations et ils n'ont même jamais exécuté un seul rapport. Ils ont besoin d'une incitation pour compenser leur manque de curiosité (Pour leur défense, certains utilisateurs ont peur de casser quelque chose.).

JeffO
la source
-2

J'utilise des œufs de Pâques pour m'aider à déboguer et à coder. Par conséquent, les œufs de Pâques que j'ai mis en place ont une fonction et ne sont probablement pas considérés comme des œufs de Pâques.

Dave
la source
Qu'entendez-vous exactement par «œuf de Pâques» dans votre utilisation? Peux-tu me donner un exemple?
Ce n'est pas un œuf de Pâques mais une porte dérobée alors. Nous faisons quelque chose de spécial pour les tests GUI lorsque l'outil double-clique sur un bouton central de la souris à l'emplacement de l'écran (0,0), puis entre le mot de passe correct. Ceci est fait pour que les outils d'automatisation GUI puissent le gérer. Les utilisateurs pourraient également le faire en théorie, mais en pratique, ils n'y arriveront pas. De plus, il y a des panneaux d'avertissement partout.
Job
1
@Glenn, un bon exemple serait ... si vous expédiez une application GUI de bureau. Lorsque l'utilisateur clique sur un bouton, il obtient une nouvelle boîte de dialogue. Lorsque l'utilisateur clique sur ce bouton tout en maintenant une touche Maj enfoncée, il en obtient une ancienne. Ce serait un bon moyen de comparer les anciennes et les nouvelles fonctionnalités, lorsque vous essayez de corriger des bugs causés par le nouveau widget. Si vous êtes prudent, vous pouvez laisser le code double mais commenter la porte dérobée. Ensuite, comme vous devez déboguer des choses, décommenter, reconstruire, et maintenant vous pouvez comparer deux choses côte à côte. Dave, désolé d'avoir essayé de voler ton tonnerre.
Job