340

As we know, apt-get has Super Cow Powers and aptitude does not:

$ apt-get --help | grep -i cow
                       This APT has Super Cow Powers.
$ aptitude --help | grep -i cow
                  This aptitude does not have Super Cow Powers.

and of course, APT has an Easter egg to go with it:

$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...

I'm curious, is there are story behind this Easter egg? What's its history? I know it's been in apt for a long time—from a quick grep of apt sources in old Debian releases, it gained it sometime between Debian 2.2 (potato; apt 0.3.19) and Debian 3.0 (woody; apt 0.5.4).

edit: According to a message from Jacob Kuntz on the Debian-Devel mailing list, it was in apt 0.5.0 in Feb. 2001. A message from Matt Zimmerman on the Debian bug tracker makes it sound like 0.5.0 is when it was added.

derobert
  • 109,670

5 Answers5

263

Apt started its life around 1997 and entered Debian officially around 1999. During its early days, Jason Gunthorpe was its main maintainer/developer. Well, apparently Jason liked cows. I don't know if he still does. :-) Anyway, I think the apt-get moo thing was added by him as a joke. The corresponding aptitude easter eggs (see below) were added later by Daniel Burrows as a homage, I think.

If there is more to the story, Jason is probably the person to ask. He has (likely in response to this question) written a post on Google+. A small bit of it:

Once a long time ago a developer was known for announcing his presence on IRC with a simple, to the point 'Moo'. As with cows in pasture others would often Moo back in greeting. This led to a certain range of cow based jokes.

Also:

$ aptitude moo
There are no Easter Eggs in this program.
$ aptitude -v moo
There really are no Easter Eggs in this program.
$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
$ aptitude -vvv moo
Stop it!
$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
Codingale
  • 133
Faheem Mitha
  • 35,108
  • 2
    Perhaps he was influenced by Gary Larson comics? I don't know... – Keith Sep 24 '13 at 16:30
  • aptitude was being initially developed around when the apt Easter egg was developed, so its not surprising if it got its own Easter eggs in response. I haven't checked the history there. But I'm hoping there is something more to the story that Jason can (or already has) added. Or maybe a thread on debian-devel... – derobert Sep 24 '13 at 16:34
  • 128
    The aptitude easter egg refers to the begin of Antoine de Saint-Exupéry's novella "Little prince". – jofel Sep 24 '13 at 16:38
  • 16
    @jofel Maybe it is. Or maybe it is just a generic elephant being eaten by a snake. Only Daniel knows. – Faheem Mitha Sep 24 '13 at 16:40
  • Could you add the links for references? – Braiam Sep 24 '13 at 16:52
  • @Braiam Which links are you referring to? – Faheem Mitha Sep 24 '13 at 16:54
  • This debian-devel post is the only thing I've found—oddly, I can't find Jason Gunthorpe saying "moo" a lot. Only two messages... – derobert Sep 24 '13 at 17:24
  • 36
    Why should any one be frightened by a hat? – hexparrot Sep 24 '13 at 22:10
  • 4
    Jason Gunthorpe has the "super cow powers" even in his google plus: https://plus.google.com/113373031907493914258/about – woliveirajr Sep 25 '13 at 12:55
  • @woliveirajr He also wrote a post about it... https://plus.google.com/113373031907493914258/posts/jGBx4hA26nv ... about this question, apparently. – derobert Dec 16 '13 at 22:17
  • @derobert : huahuahua. I found him (offline, not sure) on the same day I wrote that comment. So I left hima question about the supercow powers, but didn't got any answer from him. Seems he answered it in that post! And it's on the same day... :) :) Thanks a lot, Jason Gunthorpe! – woliveirajr Dec 17 '13 at 11:11
  • @derobert could be a comment on the question, there I wrote about emailing him :) – woliveirajr Dec 17 '13 at 11:19
  • Huh, I always thought this had something to do with scp, somehow related to secure copying / transmitting files, I didn't realize it wasn't a conditional output (looking at the commit that Martin found in the question comments). – Jason C Apr 24 '15 at 18:13
  • I'm really glad someone clarified this; I thought I was just seeing things. Apparently not. – Jackson Walters Jun 26 '21 at 12:54
98

I always assumed that this feature derived from cowsay & cowthink. See the Wikipedia article on Cowsay. I've been using these for years on Fedora (I believe they predate 1999) and were used as a way to display fortunes in a more interesting way.

$ fortune | cowsay
 ________________________________________ 
/ It doesn't matter what you do, it only \
| matters what you say you've done and   |
\ what you're going to do.               /
 ---------------------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

You can also use either of these to pass your own strings:

$ cowthink 'I love Fedora, Debian? Not so much!'
 _____________________________________ 
( I love Fedora, Debian? Not so much! )
 ------------------------------------- 
        o   ^__^
         o  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

It also includes the ability to use alternate .cow files so you can swap other ones in, in place of the cow, such as tux.

$ cowthink -f tux 'mmmmm....Fedora!'
 __________________ 
( mmmmm....Fedora! )
 ------------------ 
   o
    o
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/
jlliagre
  • 61,204
slm
  • 369,824
  • 16
    Holy cow! (No pun intended...) Where do I find the "cowthink" binary? I'm not able to find it in CentOS 6.x. :/ – Suman Sep 24 '13 at 18:12
  • 1
    EL6 - http://pkgs.org/centos-6-rhel-6/epel-i386/cowsay-3.03-8.el6.noarch.rpm.html – slm Sep 24 '13 at 18:15
  • 49
    You know, cowsay is an excellent program for getting people, especially children, introduced to command lines. It takes in piped input, and has options for customizing the cow, so users can practice all these kinds of conventions. Oh, and .cow files which are here-docs with substituted variables. – Kaz Sep 24 '13 at 21:44
  • 14
    And it pipes well with -n. E.g., apt-get moo | cowthink -n -e"♥♥" | cowthink -n | cowthink -nt – dr jimbob Sep 25 '13 at 04:30
  • 17
    LinuxMint used to have this run fortunes by default every time you opened a new terminal. It was funny the first time, cute the second and extremely annoying from then on. They eventually removed it :). – terdon Sep 25 '13 at 15:15
  • I've got this as the 1st program that runs after login on my term, so that at each login i get a new fortune. Aboout 2/10 i get the ascii snake eating the cow. – eyoung100 Sep 15 '14 at 18:44
  • @ECarterYoung - Bye bye cow 8-) – slm Sep 15 '14 at 19:09
  • @jlliagre but there was no Fedora back in 1999, I remember it pretty clearly; and here's a much later evidence of its early days: http://www.redhat.com/archives/fedora-devel-list/2004-May/msg00104.html – Michael Shigorin Nov 29 '15 at 10:07
  • @MichaelShigorin You are correct about Fedora but the main point of this answer is cowsay/cowthink, not Fedora. Note too that this is not my answer but slm's, I only edited it to fix some typos. – jlliagre Nov 29 '15 at 10:32
  • @MichaelShigorin - see jilagre's comment, I wasn't saying that they first showed up in Fedora, I was highlighting cowsay & cowthink apps. – slm Nov 29 '15 at 14:44
  • I was curious... The current stable version of cowsay claims it was released in May 1999. Here's the archived changelog: http://web.archive.org/web/20000830124039/http://www.nog.net/~tony/warez/cowsay-3.03/ChangeLog

    It looks like 3.03 was released before 3.01 and 3.02. In later version of his website the Changlog was only accessible by downloading the *.tar.gz archive, but it seems these conflicting dates were never fixed. I'm guessing 3.03 was actually released in May 2000? Regardless, there's a strong possibility that Cowsay 1.x and 2.x predate 1999, but probably not by much.

    – bobpaul Feb 21 '17 at 20:42
  • See also ponysay for another take on the subject. – MayeulC Sep 15 '17 at 21:34
  • 1
    @terdon. I have fortune | cowsay -f $(ls /usr/share/cowsay/cows/ | shuf -n1) in my ~/.bash_profile; not everyone finds it tedious. – TRiG Feb 01 '18 at 16:48
  • @TRiG that's profile though, not ~/.bashrc. That won't run every single time you open a new terminal. But, anyway, to each their own! – terdon Feb 01 '18 at 16:56
  • 2
    I've amended that now to add | lolcat at the end. @terdon – TRiG Feb 04 '20 at 14:37
27

I believe this comes a long way, from the "pre-http" era. Either Usenet, or even BBSs. Maybe as early as around 1987?...

I remember that there was tons of ascii-art circulating in the early days of Usenet. And IIRC in one of them it started to feature a cow, then some other posts featured more cows, then a post was entirely dedicated to several cows ascii-arts. I believe this easter-egg comes from someone reading those at that time...

I did a few seaches and found out a geocities page talking about it. That page states (excerpt:)

Besides digrams and charts, probably the earliest ASCII art from the Internet
are the "Spy at the Wall" collection and the "Silly Cows" collection.
David Bader, an ASCII art enthusiast and editor of the 'Cows",  recently sent
me the COMPLETE, UNCUT, ORIGINAL, and OFFICIAL Silly Cow collection!
These cows can be seen all over the Internet and are truly considered to be
"classic" ASCII art.. 

with "Silly cows" linking to : http://www.geocities.com/spunk1111/cows.htm (also available on the Internet Wayback Machine at : https://web.archive.org/web/20131225210911/http://www.geocities.com/spunk1111/cows.htm , or go rather to https://web.archive.org/web/*/http://www.geocities.com/spunk1111/cows.htm and click in the agenda below on the day of the Snapshot you want to see...)

Of course a true reference lies in usenet archives, but I don't have much time yet to do proper research (I may update this post in the near future)

At some point there was even a alt.cows.moo.moo.moo newsgroup created (probably quite a bit after cows started to invade ascii arts? But maybe before, I lack time to research properly) (see for example : http://www.418-teapot.com/topics/usenet/ )

To prove how popular it was in Usenet, the first question mentionned on the Internet Oracle wikipedia page: http://en.wikipedia.org/wiki/Internet_Oracle is about cow(s).

  • 7
    So the usenet group you mentioned might be called more of a moosgroup? – Chris Jan 13 '15 at 02:25
  • Unfortunately, those geocities links are gone now. Any chance we could get archived versions? (They point to some random company's homepage. Go figure Yahoo would steal that domain to try to make some cash) –  Jan 13 '16 at 17:14
  • @QPaysTaxes thx for the update, I dig it via the Internet Wayback Machine and I will put some erxerpt in my answer as well... – Olivier Dulac Jan 13 '16 at 17:37
8

If Apt started life 1997 and entered production 1999, isn't that "Super Cow" coming from the Cow and Chicken cartoon running exactly that time frame?

chx
  • 850
1

Hmm I always assumed (perhaps wrongly, and they both stem from the same source) that it had something to do with the then insanely popular RC5 Challenge which involved Distributed.net's client: http://www.distributed.net/RC5 Which coincidentally was in 1997 as well...

Ronald
  • 11