Gimme, Gimme, Gimme a man(1) after Midnight
Published:
Sometimes reality is so funny that you can’t make it up.
A tale of an Easter egg
The year was 2011. Linux’s man
command, a de jure standard used
for summoning a page from the manual, had existed for decades. Many
a late night of troubleshooting revolved around reading crusty
teletype-formatted “man pages.”
Then, one day a Twitter user suggested an idea to the maintainer of
man-db
.
@marnanel: Dear @colmmacuait , I think that if you type "man" at 0001 hours it should print "gimme gimme gimme". #abba
As silly an idea as it was, the maintainer actually implemented the
Easter egg. So, if you typed man
between the hours of 12 AM and 1
AM, man
would print
gimme gimme gimme
This is, of course, a reference to the ABBA song “Gimme, Gimme, Gimme a Man after Midnight.” Because of the maintainer’s excellent work, ABBA’s legacy was extended yet further into the 2010s, thus fulfilling an ancient pop culture prophecy that ABBA will never die.
The maintainer was extra careful to make sure that the message was printed only if no man page was requested. He certainly didn’t want to break anything or confuse anyone. He just wanted to add a fun feature.
However, six years later in 2017, someone’s automated test failed.
We've noticed that some of our automatic tests fail when they run at 00:30 but work fine the rest of the day. They fail with the message "gimme gimme gimme" in stderr, which wasn't expected. Why are we getting this output?
Thus, @marnanel made a public confession:
er, that was my fault, I suggested it. Sorry.
Pretty much the whole story is in the commit. The maintainer of man is a good friend of mine, and one day six years ago I jokingly said to him that if you invoke man after midnight it should print "gimme gimme gimme", because of the Abba song called "Gimme gimme gimme a man after midnight":
Well, he did actually put it in. A few people were amused to discover it, and we mostly forgot about it until today.
I can't speak for Col [the maintainer], obviously, but I didn't expect this to ever cause any problems: what sort of test would break on parsing the output of man with no page specified? I suppose I shouldn't be surprised that one turned up eventually, but it did take six years.
And the Easter egg was removed.
Morals of the story
- No matter how carefully you write a program, someone will break it.
- No matter how reliable your automation is, there will always be an edge case you never imagined.
- If you are going to add an Easter egg to a program, then make it count. The ABBA reference was so awesome that no one complained about the bug it accidentally introduced.