Welche Argumente gibt es gegen Ostereier? Gibt es irgendwelche Argumente, um Ostereier überhaupt zu unterstützen? [geschlossen]

28

Ich bin ein bisschen ein Spaßvogel, also gefällt mir die Idee eines Ostereies immer noch. Ich habe sie schon einmal in meinen Code eingefügt, aber meine Gruppe von Freunden hat einen Scherz damit, STRG-FU zu verwenden, um das Ei auszulösen.

Jetzt bin ich auch ein bisschen paranoid in Bezug auf die Leistung, so dass ich gerne Überschüsse entferne, wann immer dies möglich ist. Dies steht in starkem Widerspruch zu Ostereiern, da sie zu 100% überflüssigen Code darstellen.

Welche Argumente gibt es gegen Ostereier? Gibt es auch Argumente, um Ostereier überhaupt zu unterstützen?


quelle
5
IMHO verdient diese Frage überhaupt keine Gegenstimme, schon gar nicht eine nicht motivierte. Ich selbst interessiere mich sehr für das Thema. Besonders zu wissen, wie es von den Endanwendern, den echten Chefs, wahrgenommen wird.
Dies ist das A und O für einen klassischen @Mark Trapp. "Wir sind hier, um echte Probleme zu lösen, mit denen Sie möglicherweise konfrontiert sind."
Gratzy
1
@ChrisF Wow, wenn meine Frage programmers.stackexchange.com/questions/38810/… die Antwort "echte Frage" erhält und Sie mir sagen, dass dies nicht der Fall ist, bin ich hinsichtlich des Zwecks dieser Website wirklich ziemlich verwirrt.
Gratzy
1
Tolle Frage, IMHO.
Uri
1
@ Mark C Aye, ich bin einfach übertrieben paranoid, wenn es darum geht, Ressourcen zu verschwenden.

Antworten:

11

Wie immer lautet die Antwort "es kommt darauf an".

Ostereier sind eine Möglichkeit, die Erforschung des Programms "Welt" zu fördern. In einem Spiel ist es ziemlich offensichtlich - Sie klettern auf den höchsten Berg und finden ihn (zum Beispiel), aber für andere Anwendungen müssen Sie versteckte Optionen als Osterei verwenden. Einige Leute halten sie jedoch für leichtfertig. Wenn Sie also eine äußerst seriöse Geschäftsanwendung schreiben, möchten Sie Ihre Benutzer nicht verärgern, indem Sie ihnen einen Bildschirm mit singenden Hamstern (oder was auch immer) präsentieren, wenn sie die magische Tastenkombination finden .

Ein Osterei in einer Anwendung sollte die Leistung nicht beeinträchtigen. Wenn Sie also keine Tastatureingaben für den normalen Betrieb Ihrer Anwendung analysieren, ist Ctrl+ FUals Auslöser keine gute Idee. Solange der Code nur ausgeführt wird, wenn er gefunden wird, gibt es keine Laufzeitstrafe. Die einzige Strafe ist die Erhöhung der Programmgröße - was ein Problem sein kann oder auch nicht. Wenn die Programmgröße ein Problem ist, lassen Sie es auf jeden Fall aus.

Mit dem zusätzlichen Code gibt es jedoch ein Support-Problem. Sie müssen den Code weiterhin unterstützen und sicherstellen, dass er funktioniert und bei der Ausführung keine Probleme verursacht. Das Letzte, was Sie möchten, ist, dass Ihre Anwendung abstürzt, sobald der Benutzer das Osterei findet!

ChrisF
quelle
"Ein Osterei in einer Anwendung sollte sich nicht nachteilig auf die Leistung auswirken. Es wird nur ausgeführt, wenn es gefunden wird, sodass es keine Laufzeitstrafe gibt." "Ja wirklich?" Wenn es durch eine STRG-FU ausgelöst wird, wie es das OP angibt, fangen Sie dann nicht jeden Tastendruck ein?
Gratzy
2
@Gratzy - Eigentlich ist das ein guter Punkt - wenn Sie keine Tastatureingaben für den normalen Betrieb machen, dann ist das ein Beispiel für ein schlechtes Osterei.
ChrisF
7

Ich würde sagen, das hängt stark von der Art der Software ab, die Sie entwickeln.

Imho-Ostereier werden in Spielen eher akzeptiert (oder sogar geschätzt) als in Unternehmenssoftware. Sogar Microsoft hatte ein paar Ostereier in ihre Produkte gesteckt, aber das hat jetzt so ziemlich ganz aufgehört. Der Grund, warum Microsoft das Einfügen von Ostereiern eingestellt hat, hängt eng mit den möglichen Gründen gegen Ostereier zusammen: Sicherheitsbedenken. Wie im entsprechenden Wikipedia-Artikel beschrieben, Ostereier sind normalerweise (zumindest für den Benutzer / Kunden) undokumentierte Teile des Codes, was ihn zu der Annahme veranlassen kann, dass das Produkt anfälliger für Angriffe oder auf andere Weise nicht vertrauenswürdig war. Darüber hinaus wird nicht der gesamte Osterei-Code in gleichem Maße getestet und auditiert, wie es der „missionskritische“ Code ist. Dies kann zu unentdeckten Fehlern oder Lücken in der Codebasis führen, die der Grund für einen späteren Angriff oder eine spätere Malware-Exploit sein können.

Allerdings sind nicht alle Ostereier "schlecht" und müssen mit dem tatsächlichen Produktcode manipuliert werden. Es gibt viele Möglichkeiten, Ostereier zu präsentieren, insbesondere in Spielen, bei denen der Code etwas vom Inhalt getrennt ist (Spiel / Grafik / Skript-Engine im Vergleich zu tatsächlichen Skript- oder Level-Dateien). Diese Möglichkeiten reichen von speziellen Texturen / Objekten und Audiokommentaren des Protagonisten (z. B. wie in DN3D verwendet: Doom , Terminator , Indiana Jones , Star Trek ) über geheime Ebenen ( "es gibt keine Kuhebene" ) bis hin zu Dialogen, die bei einem bestimmten Objekt angezeigt werden Auf / location in der Benutzeroberfläche wird geklickt und vieles mehr. Natürlich ist nicht jede für jeden Produkttyp geeignet.

Eine gute Möglichkeit, ein Osterei in Ihr Produkt einzufügen, besteht darin, sich irgendwie einzubeziehen (und nicht nur im Abschnitt "Credits"). Blizzard hat dies mit StarCraft 2 sehr gut gemacht . Ein Unit-Portrait ist eigentlich das Gesicht eines Entwicklers. So etwas nicht so offensichtliches ist normalerweise für viele verschiedene Arten von Software geeignet, da es nicht auf Medienkenntnissen oder einer bestimmten Art von Humor beruht. Zum Beispiel könnten Sie sich selbst als Charakter in den Kontext des Produkts einbeziehen. Je nach Produkt ist hierfür möglicherweise keine oder nur eine sehr einfache Chance auf den Code erforderlich.

Ostereier sind imho nett, aber nicht erforderlich. Die Implementierung eines Ostereies sollte niemals das eigentliche Produkt beeinträchtigen, und seine Präsentation sollte für die eingerückte Zielgruppe des Endprodukts geeignet sein. Ein Osterei in einer "ernsthaften" Anwendung oder ein Produkt, das sich an Nicht-Erwachsene richtet, sollte niemals erwachsenen Humor oder sexuellen Inhalt enthalten, egal wie lustig oder harmlos es erscheint. Dies könnte nicht nur zu rechtlichen Konsequenzen führen, sondern auch die Vermarktungsbreite der Software beeinflussen ( z. B. USK / PEGI / ESRB- Ratings).

Baelnorn
quelle
1
Sie müssen sich wirklich ansehen, warum Microsoft aufgehört hat, Ostereier in den Code einzufügen. Ein Osterei ist ein Codepfad, der nicht vollständig getestet wurde (wenn Sie die Möglichkeit hatten, eine vollständige Qualitätssicherung für ein Osterei durchzuführen, warum haben Sie sich dann nicht die Zeit genommen, stattdessen eine andere nützliche Funktion einzuschließen?) Es ist eine potenzielle Quelle für Sicherheitslücken.
Anon.
@Anon: Aus dem Wikipedia - Artikel, den ich in meiner Antwort erwähnte: "Microsoft, das in der Vergangenheit einige der größten und aufwändigsten Ostereier wie die in Microsoft Office erstellt hat, lässt Ostereier in seiner Software als Teil von nicht mehr zu ihre Trustworthy Computing-Initiative. " Die Quelle für diese Aussage ist der MSDN-Blogartikel, der in Charles 'Antwort verlinkt ist. Ich sehe keinen Widerspruch zu meiner Aussage. Können Sie mir bitte erklären, wo ich etwas falsch gemacht habe? :)
Baelnorn
Der erste Teil der Antwort lautet: "Hey, früher hat Microsoft das gemacht, ist das nicht großartig?", Aber die eigentlichen Gründe, warum sie das nicht mehr machen, sind in der Mitte der Antwort begraben. Ein Gelegenheitsleser wird es nicht sehen und es ist nicht mit dem relevanten Kontext verbunden. Idealerweise möchte ich, dass die Absätze neu gemischt werden, um die Nachteile etwas hervorzuheben.
Anon.
@Anon: Danke für die Köpfe hoch. Ich habe meine Antwort bearbeitet und die Absätze neu angeordnet, wobei ich im ersten Teil die Gründe gegen EE dargelegt habe.
Baelnorn
5

Ostereier waren bereits in den 80er und 90er Jahren in großen kommerziellen Softwareversionen verbreitet. Zum größten Teil waren sie süß und relativ wenige Leute wurden von ihnen gestört. Ich denke, sie sind heute aus drei Gründen weniger verbreitet:

  1. Wie alle praktischen Witze sind sie lustig, bis jemand ein Auge auslässt. Wenn Ihr Osterei einen Fehler hat, der zu Datenverlust oder Leistungsproblemen führt, müssen Sie möglicherweise einer Reihe von Anwälten erklären, dass Sie tatsächlich keine "Malware" verteilt haben.

  2. Humor ist sehr, sehr schwer richtig zu machen, und wenn Sie ihn falsch machen, beleidigen Sie zahlende Kunden, die dann nicht mehr für Ihre Software zahlen und der Presse viele unangenehme Briefe darüber schreiben, was für eine schreckliche, unreife Firma Sie arbeiten zum. Das Beispiel eines durch Ctrl-FU ausgelösten Ostereies ist ein perfektes Beispiel. Dies ist wahrscheinlich hysterisch lustig für Ihre 17-jährigen Freunde, aber es ist die 0-te Regel des Marketings, Ihren Kunden niemals "FU" zu sagen, auch nicht im Scherz. Beachten Sie, dass sich die Ostereier in der großen kommerziellen Software NIE über den Benutzer lustig gemacht haben, nur über die Konkurrenten.

  3. In den unsterblichen Worten von Peter Tork von den Monkees im Film Head : "Niemand leiht einem Mann mit Sinn für Humor Geld." Wenn Sie ein kritisches Stück Software-Infrastruktur kaufen, ist ein Sinn für Humor des Autors nicht beruhigend. Außerdem, warum verbrachten sie Zeit damit, Ostereier zu schreiben, wenn sie ihre zahlreichen Sicherheitslücken hätten reparieren können?

Larry Osterman hatte vor Jahren einen ziemlich berühmten Blogbeitrag darüber verfasst, warum die OS-Gruppe bei Microsoft keine Ostereier mehr zulässt .

Charles E. Grant
quelle
1
Noch heute hat Google ein Osterei - das heißt, sie prüfen bei jeder Suche, ob die Eingabe das Osterei auslöst. Es ist wahrscheinlich nicht viel Verarbeitung, aber angesichts der Hunderte von Millionen Suchanfragen, die sie jeden Tag verarbeiten ... Ich weiß es nicht.
Charles Salvia
Ich muss gestehen, dass ich CTRL-FU als eine Art KUNG-FU gelesen habe.
Christopher Creutzig
@ Christopher, das ist eine völlig vernünftige Interpretation. Humor unterliegt häufig mehreren Interpretationen, weshalb es schwierig ist, Ihre Software einzubinden, ohne das Risiko einzugehen, jemanden zu beleidigen.
Charles E. Grant
@CharlesSalvia Abhängig davon, wie Suchvorgänge verarbeitet werden, um die Ergebnisse für "Meinten Sie" zu ermitteln, wird möglicherweise kein zusätzlicher Aufwand zusätzlich zu den bereits vorhandenen Ergebnissen für dieses Verhalten hinzugefügt.
JAB
4

Ostereier sind kleine Geheimnisse, die die Erbauer hinterlassen haben. Tut es den Endbenutzern weh? Nein.

Viele bekannte und beliebte Softwareprodukte enthalten versteckte Ostereier . Ostereier wurden auch verwendet, um die Gefühle eines Entwicklers in Bezug auf ein bestimmtes heikles Thema auf elegante Weise darzustellen.

Was die Codeoptimierung betrifft , sollte sie die Leistung nicht in bedeutender Weise beeinträchtigen, solange die Ostereier nicht zu intensiv sind (Hallo Flugsimulator ).

Josh K
quelle
Ich stimme dir nicht zu. Ein Osterei erhöht das Risiko eines Ereignisses, das Benutzern Schaden zufügen kann. Bestenfalls werden diese "hinzugefügten Funktionen" getestet und verbrauchen nur die Zeit der Entwickler und der Qualitätssicherung. Im schlimmsten Fall weiß niemand außer dem Implementierer davon. Später verlässt der Implementierer das Unternehmen und ein Update der Software führt dazu, dass das Osterei versehentlich bösartig wird, beispielsweise durch das Ausschneiden von Tastaturereignissen, das Aufzehren des gesamten verfügbaren Arbeitsspeichers oder im Extremfall ... das Löschen des Inhalts des Benutzers Festplatte. Übertrieben? Vielleicht. Ich habe jedoch gesehen, dass diese Fehler alle als normale Fehler auftreten.
Mumie
@mummey: Ich denke, das ist höchst unwahrscheinlich.
Josh K
Würden Sie nicht Ihr Möglichstes tun, um diese Risiken zu mindern?
StuperUser
@Stuper: Hast du jemals von einem Osterei gehört, das das Programm zum Absturz gebracht hat?
Josh K
Keine, aber Abstürze während Ostereiern sind nicht kritisch genug, um die Veröffentlichung von Ausgaben größtenteils zu rechtfertigen. Benutzer senden häufig keine Informationen für die meisten MS-Programmabstürze während des normalen Betriebs zurück.
StuperUser
2

Während ich Ostereier in Software mag, ist es wichtig zu bedenken, dass die Grenze zwischen einem Ei, das aus Spaß in einem Produkt verbleibt, und einer böswilligen Hintertür aus rechtlicher Sicht sehr dünn sein kann. Zum Beispiel muss es Schaden zeigen? Muss man die Absicht beweisen, Schaden zuzufügen?

In Anbetracht der Tatsache, dass das Verständnis der Gerichte für Computer und Software ziemlich miserabel ist (wie einige Softwarepatente belegen), wird die Debatte über einen solchen Fall mehreren Anwälten ein schönes Ferienhaus in Aspen verschaffen. Berücksichtigt man die verschiedenen rechtlichen Rahmenbedingungen (wie das DMCA), in denen Software veröffentlicht und auf der ganzen Welt vertrieben wird, kann es sein, dass sie auch Ferienhäuser in den Alpen kauft.

Als angestellte Ingenieure bürgen wir dafür, unserem Unternehmen keinen Schaden zuzufügen. Rechtsstreitigkeiten können Schaden anrichten, und Rechtsstreitigkeiten sind wahrscheinlich, wenn wir Software auf Vertragsbasis an andere Kunden liefern, insbesondere an Regierungen oder große Unternehmen. Daher würde ich mich persönlich dafür entscheiden, auf der sicheren Seite zu sein.

Denken Sie daran, es gibt Ingenieure, die Logik zu guten Zwecken einsetzen, während es Anwälte gibt, die die Logik für das Böse verdrehen. Deshalb werden sie so viel mehr bezahlt als wir.

Uri
quelle
0

Viele haben angegeben, dass Ostereier besser für Spiele geeignet sind, aber ich denke, sie können in Geschäftsanwendungen eingesetzt werden. Zu viele Benutzer erstellen lediglich eine Reihe von Rezepten für die Verwendung einer Geschäftsanwendung, ohne sich mit anderen Bereichen der Anwendung zu befassen. Ich meine, es gibt ganze Abschnitte einer Anwendung, die sie nie sehen, wenn sie nicht Teil ihres Trainings waren und die für sie von Nutzen sein könnten. Derzeit habe ich an einer Anwendung mit 75 Berichten gearbeitet und Benutzer haben nach Informationen gefragt und sie haben nicht einmal einen einzigen Bericht erstellt. Sie brauchen einen Anreiz, um ihre mangelnde Neugier auszugleichen (Einige Benutzer haben zu ihrer Verteidigung Angst, etwas zu zerbrechen.).

JeffO
quelle
-2

Ich benutze Ostereier, um beim Debuggen und Codieren zu helfen. Deshalb haben die Ostereier, die ich hineingelegt habe, einen Zweck und werden wahrscheinlich nicht als Ostereier angesehen.

Dave
quelle
Was genau meinst du mit "Osterei" in deiner Verwendung? Kannst du mir ein Beispiel geben?
Dies ist kein Osterei, sondern eine Hintertür. Wir machen etwas Besonderes für GUI-Tests, wenn das Tool eine mittlere Maustaste an der Bildschirmposition (0,0) doppelt anklickt und dann das richtige Passwort eingibt. Dies geschieht, damit GUI-Automatisierungstools damit umgehen können. Benutzer könnten dies theoretisch auch tun, aber in der Praxis werden sie es nicht schaffen. Außerdem gibt es überall Warnschilder.
Job
1
@Glenn, ein gutes Beispiel wäre ... wenn Sie eine Desktop-GUI-Anwendung ausliefern. Wenn der Benutzer auf eine Schaltfläche klickt, wird ein neuer Dialog angezeigt. Wenn der Benutzer mit gedrückter Umschalttaste auf diese Schaltfläche klickt, wird eine alte angezeigt. Dies ist eine gute Möglichkeit, um alte und neue Funktionen zu vergleichen, wenn Sie versuchen, Fehler zu beheben, die durch das neue Widget verursacht werden. Wenn Sie vorsichtig sind, können Sie den Dual-Code beibehalten, aber die Hintertür auskommentieren. Wenn Sie dann das Debuggen, das Entfernen von Kommentaren und das Neuerstellen durchführen müssen, können Sie jetzt zwei Dinge nebeneinander vergleichen. Dave, entschuldige, dass du versucht hast, deinen Donner zu stehlen.
Job