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.
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?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:
| Date | The cow says |
|---|---|
| 16 August | Three moos for Debian! |
| 25 December | Happy package management day! |
| 7 November | Whoever needs milk, bows to the animal. |
| 18 February | It’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?
/( (_)-(_) /
,---------' \_
//( ',__,' \ (' ')
// ) '----'
'' ; \ .--. ,/
| )',_,'----( ;
||| ''' '||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.
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.
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.
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. 🐄