< Previous
The Fifth RepublicFreedom >

The Easter Egg And I: Every once in a while someone puts an Easter egg into an open source application and people find out. If it ever gets mentioned on a web discussion board, then watch out. People will use the board to complain about it. Other people will pile on those people saying that they have no right to try to allocate other people's voluntary labor. It goes back and forth until the article scrolls off the front page of the web discussion board, at which point it abruptly stops.

This happened with the "kitchen sink" Mozilla example I linked to earlier, and I don't think that's even really an Easter egg; it's an interesting example of what you can do with Mozilla. It just looks like an Easter egg because it's not boring like the other Mozilla examples. Other cases of this I can think of: there was a rather lame Easter egg in the xclock application of Red Hat 4.2 or something, which caused a similar rash of complaints. A later version of Red Hat offered "Redneck" as a localization option, and I'm sure the same people complained about that. [0]

This is the point at which I cast aspersions on the amount of code the people who complain have committed to open source projects, but that's an ad hominem argument which doesn't address their actual argument, which is that open source programmers should optimize their actions to devote their energies to the next most important thing. Sure, if open source programmers were perfect utilitarians (and their idea of what is important were the same as yours), that's what they'd do. But they're not. They have the same desires as real people, and they have an additional weakness for cool-looking things like sinks implemented in XHTML and Javascript, and you have no right to try to allocate other people's voluntary labor, blah blah blah.

At the same time, I don't think putting Easter eggs into an open source application fulfills any psychological need. Most of the time I've seen this it's been a parody of feature catch-up ("Windows has Easter eggs, Red Hat 4.2 must have them too!"), or of an application's reknownedly robust feature set ("{Mozilla,Emacs,Nethack} has everything but the kitchen sink!").

Proprietary software programmers create Easter eggs are because it gives them an outlet for creativity they feel they're not expressing, or because it's the only way they can get their name into the software they wrote. If an open source programmer feels like they have leftover creativity, they can switch projects or work on a side project for a while. And of course open source programmers get their names all over their software. So the same dynamics don't apply.

I personally don't put Easter eggs in my code (except for my text adventures, which I sort of see as a command line interface to an enormous number of Easter eggs). In general, I'd rather implement the Easter egg idea as a separate program, or just write a NYCB entry about it. In lieu of Easter eggs, I give my projects silly names, and sometimes I put in silly comments where only other programmers will see them.

The silly project names make people who like catchy names remember the project, and where my software is in danger of being used by humorless people who think "catchy name = crappy software", there's invariably a marketing department conveniently placed between me and them, who will create boring aliases for my projects no matter what I call them.

I have no data to back this up, but I imagine most open source programmers who have the urge to Easter egg fritter away that energy in separate, more whimsical applications. The Unix philosophy, after all, is no friend to Easter eggs, and thanks to the Internet, your cool little program doesn't need to piggyback on your big boring program with an established delivery mechanism.

[0] Adding "Redneck" or some other bastardized version of your native language as a supported language is actually useful when you're adding localization support to an application, because it allows developers who only speak one language to use a "foreign" localization bundle that they can understand. That's probably not why Red Hat put it in, but I'm just saying.

PS: I left the Mozilla sink running in another tab while I wrote this entry, and when I switched back to the tab and noticed this, I momentarily panicked.

PPS: I forgot to mention that the whole reason I wrote this entry was to mention the following Easter Egg comment in Java Cracklib; it looks to be taken from the original C source:

 /* 
  * alternative use for a boomerang, number 1: a standard throwing 
  * boomerang is an ideal thing to use to tuck the sheets under 
  * the mattress when making your bed. The streamlined shape of 
  * the boomerang allows it to slip easily 'twixt mattress and 
  * bedframe, and it's curve makes it very easy to hook sheets 
  * into the gap.
  */
Filed under:


[Main]

Unless otherwise noted, all content licensed by Leonard Richardson
under a Creative Commons License.