28

I'm a bit of a jester so the idea of an easter egg still appeals to me. I have added them in my code before but my group of friends has a running joke of using CTRL-FU to trigger the egg.

Now I'm also a bit paranoid about performance so I like removing excess whenever possible. This heavily contradicts with easter eggs as they are 100% superfluous code.

What arguments are there against easter eggs? Also, are there any arguments to even support easter eggs?

7 Answers7

11

As always the answer is "it depends".

Easter eggs are one way of encouraging exploration of the program "world". In a game it's rather obvious - you climb to the top of the highest mountain and you find it (for example), but for other applications you have to use hidden options as your Easter Egg. However, they are seen as frivolous by some people so if you are writing an ultra serious business application you don't want to upset your users by presenting them with a screen of singing hamsters (or what ever) when they find the magical key combination.

Having an Easter Egg in an application shouldn't have a detrimental impact on performance. So unless you are parsing keyboard input for the normal operation of your application having Ctrl+FU as the trigger is a bad idea. As long as the code is only be executed if found so there's no runtime penalty. The only penalty is the increase in program size - which may or may not be a problem. If the program size is an issue then definitely leave it out.

However, having the extra code there is a support issue. You still need to support the code and make sure that it works and doesn't cause problems when executed. The last thing you want is for your application to crash just as the user finds the Easter Egg!

ChrisF
  • 38,948
  • 11
  • 127
  • 168
7

I'd say that highly depends on the type of software you're developing.

Imho easter eggs are more likely to be accepted (or even appreciated) in games than in business software. Even Microsoft had put some Easter Eggs into their products, but pretty much completely stopped that now. The reason why Microsoft stopped putting Easter Eggs in is closely connected to the possible reasons against Easter Eggs: security concerns. As outlined in the relevant Wikipedia article, Easter Eggs are usually (at least for the user/client) undocumented parts of the code which may lead him to believe that the product was more open to attacks or in other ways untrustworthy. Further, not all Easter Egg code is tested and audited to the same degree "mission critical" code is. That may lead to undiscovered flaws or loop holes in the code base which may be the origin of a later attack or malware exploit.

However, not all Easter Eggs are "bad" and require tampering with the actual code of the product. There are lots of ways to present Easter Eggs, especially in games where the code is somewhat separated from the content (game/graphics/scripting engine vs. actual script or level files). These ways range from special textures/objects and audio comments of the protagonist (e.g. as used in DN3D: Doom, Terminator, Indiana Jones, Star Trek) to secret levels ("there is no cow level") to dialogs showing when a certain object/location in the user interface is clicked, and much more. Of course not each of these is suitable for every type of product.

A nice way of putting an Easter Egg into your product is to include yourself somehow (and not only in the credits section). Blizzard did this very nicely with StarCraft 2. One unit portrait is actually the face of one of the developers. Something not-so-obvious like that is usually appropriate for many different types of software because it doesn't rely on media knowledge or a certain kind of humor. For example, perhaps you could include yourself as a character in the product's context. Depending on the product, this may not even require a chance to the code or only a very simple one.

Easter Eggs are imho nice but not required. The implementation of an Easter Egg should never detract from the actual product and its presentation should be appropriate for the indented target audience of the final product. An Easter Egg in a "serious" application or a product targeted at non-adults should never include adult humor or sexual content, no matter how funny or harmless it appears to be. This could not only lead to legal consequences, but also affect the marketing range of the software (USK/PEGI/ESRB ratings, for example).

Baelnorn
  • 816
5

Easter eggs are little secrets left by the builders. Does it hurt the end users? No.

Many well known and popular pieces of software have included hidden easter eggs. Easter eggs have also been used to display a developers feelings on a particular touchy subject in a rather elegant way.

As for code optimization, as long as the easter eggs are not too intensive (hello flight simulator) it should not hurt performance in a meaningful way.

Josh K
  • 23,029
  • 10
  • 67
  • 100
5

Easter eggs were common even in major commercial software releases in the 80s and 90s. For the most part they were cute and relatively few people were bothered by them. I think they are less common today for three reasons:

  1. Like all practical jokes, they're funny until somebody gets an eye put out. If your easter egg has a bug that causes data loss or a performance problem then you may end up having to explain to a bunch of lawyers that you weren't actually distributing "malware".

  2. Humor is very, very, hard to do right, and if you do it wrong you'll offend paying customers who will then stop paying for your software and who will write many nasty letters to the press about what a terrible, immature company you work for. The example of an easter egg triggered by Ctrl-FU is a perfect example. This is probably hysterically funny for your 17 year old friends, but it's the 0th rule of marketing to never tell your customers "FU", even jokingly. Notice that the easter eggs in big commercial software NEVER made fun of the user, only the competitors.

  3. In the immortal words of Peter Tork of the Monkees in the movie Head: "Nobody loans money to a man with a sense of humor." If you are buying a critical piece of software infrastructure, a sense of humor in the author is not reassuring. Besides that, why were they spending time writing easter eggs when they could have been fixing their numerous security bugs?

Larry Osterman had a fairly famous blog post years ago discussing why the OS group at Microsoft no longer allows easter eggs.

Glorfindel
  • 3,167
2

While I like Easter Eggs in software, it is important to remember that the line between an egg left in a product for fun and a malicious backdoor can be very thin from a legal standpoint. For instance, is it needed to show harm? Does one need to prove intention to do harm?

Considering that the courts' understanding of computers and software is quite miserable (as evidenced by some software patents), debating such a case will buy several lawyers a nice vacation home in Aspen. When one considers the various legal environments (such as the DMCA) in which software is published and distributed around the world, it may also buy them vacation homes in the Alps.

As hired engineers, we vouch to do our company no harm. Litigation could become harm, and litigation is likely if we deliver software on contract to other clients, especially governments or large enterprises. Thus, I would personally choose to err on the safe side.

Remember, engineers exist to use logic to good ends, while lawyers exist to twist logic for evil. That's why they get paid so much more than us.

Uri
  • 4,856
0

Many have stated Easter Eggs are more suited to games, but I think they have a use in business applications. Too many people just create a series of recipes for using a business app that they never look at other areas of the application. I mean there are whole sections of an application they never look at if it wasn't part of their training and it could have been some use to them. Currently I worked on an application with 75 reports and users were asking for information and they never even ran a single report. They need some incentive to make up for their lack of curiosity (In their defense, some users are afraid of breaking something.).

JeffO
  • 36,956
-2

I use Easter eggs to help me for debug and coding. Therefore the Easter eggs I put in serve a purpose and are probably not considered to be Easter eggs.

Dave
  • 427