Linux

apt-get moo: where the cow comes from

Skimmed light, goes down easy

Type apt-get moo and a cow appears. The true story of the Super Cow hiding in Debian’s package manager, her calendar, her cousins, and why this blog has a cow in charge.

cowsay

Open a terminal on any Debian or Ubuntu machine and type the least professional command in the history of system administration:

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

That’s it. No packages installed, no repositories refreshed, no dependency hell. Just a cow, and a question nobody has ever answered honestly. Welcome to cowsayso: this is where our cow comes from.

A cow hiding in the package manager

APT, the tool that installs software on Debian, arrived with Debian 2.1 in March 1999. It is serious, battle-tested software that keeps Debian systems up to date. And at the very bottom of its help page, after all the serious options, there is this:

$ apt-get help | tail -1
                                        This APT has Super Cow Powers.

In the source code the cow has a comment of her own: “our trustworthy super cow since 2001”. It also works with the newer apt command: apt moo gives you the same cow.

🐄
The cow says: every serious tool deserves one unserious corner. It reminds you that people wrote it.

More moos, more cow

The cow is not alone. Every extra moo on the command line summons a different relative:

$ apt-get moo moo
                 (__)
         _______~(..)~
           ,----\(oo)
          /|____|,'
         * /"\ /\
           ~ ~ ~ ~
..."Have you mooed today?"...
$ apt-get moo moo moo
                     \_/
   m00h  (__)       -(_)-
      \  ~Oo~___     / \
         (..)  |\
___________|_|_|_____________
..."Have you mooed today?"...

According to the source, the second cow was contributed by Fernando Ribeiro and the third by Robert Millan, each through a bug report. With more than three moos, APT picks one of the cows based on the clock. And if you ask it to be very quiet with -qq, the cow stays home and only the question comes out:

$ apt-get -qq moo
Have you mooed today?
🐄
Reading the source code to find out how an easter egg works. Right. That’s how half of all programmers started.

The cow has a calendar

The moo line is not always the same. The source code checks the date, and on a few days of the year the cow says something else. We checked every one of them by faking the clock:

DateThe cow says
16 AugustThree moos for Debian!
25 DecemberHappy package management day!
7 NovemberWhoever needs milk, bows to the animal.
18 FebruaryIt’s a Bird ... It’s a Plane ... It’s Super Cow!

16 August is Debian’s birthday: the project was founded by Ian Murdock on 16 August 1993. For the other dates the code gives no explanation, and neither does the cow.

# the cow's calendar, without waiting a year
$ sudo apt-get install faketime
$ faketime '2025-08-16 12:00' apt-get -qq moo
Three moos for Debian!

On 1 April, though, the cow takes the day off and sends someone else. The source credits this one to Christopher Allan Webber, proposed by Paul Tagliamonte:

               _     _
              (_\___( \,
                )___   _  Have you smashed some milk today?
               /( (_)-(_)    /
    ,---------'         \_
  //(  ',__,'      \  (' ')
 //  )              '----'
 '' ; \     .--.  ,/
    | )',_,'----( ;
    ||| '''     '||
🐄
Why 7 November and 18 February? It depends. The code doesn’t say, and the cow doesn’t take questions.

Meanwhile, aptitude denies everything

Debian has another package manager, aptitude. Ask it to moo and it plays dumb. Ask again, more verbosely, and it slowly cracks:

$ 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.

That is not a hat. It’s the boa constrictor that swallowed an elephant, the first drawing in The Little Prince, the one every grown-up mistakes for a hat.

🐄
Denying the existence of an easter egg five times in a row. Wrong. Lying to users is never acceptable. That said, at level six it confesses everything, so the cow grants parole.

And then came cowsay

The cow of this blog is a different animal, from a different program. cowsay was written in Perl by Tony Monroe in 1999, and it does one thing: it makes a cow say whatever you type. On Debian it lives in /usr/games/cowsay, which tells you exactly how seriously it takes itself:

$ cowsay "Hello, world"
 ______________
< Hello, world >
 --------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

For more than twenty-five years this cow has repeated other people’s words. She has seen everything: failed deploys, expired certificates, Friday-afternoon releases. At some point, she decided she had opinions of her own.

🐄
Putting a cow in a serious tool. Right. If a terminal can make you smile at three in the morning, it’s doing more than its job.

Why a blog with a cow in charge

This is the deal. Here we tell the stories behind the technology you use every day, with all the technical detail and none of the solemnity. Every post tells you up front how heavy it is: skimmed, semi-skimmed or whole milk. This one is skimmed: you could read it to your grandmother.

And in every post the cow steps in and tells you what’s right and what’s wrong. You’ve already met her verdicts. Get used to them: what the cow says is law.

🐄
Moral: even the most serious software has room for a cow. Type apt-get moo once a day, read the source when you’re curious, and never trust a program that swears it has no easter eggs. The cow has spoken, and the cow is law.

Moo. 🐄

Enjoyed it? Follow the RSS feed and never miss a post. No email, no spam: cow’s honour.

RSS feed