# The Go Gopher
24 Mar 2014
Tags: gopher
Summary: The Go gopher is an iconic mascot and one of the most distinctive features of the Go project. In this post we'll talk about its origins, evolution, and behavior.

Rob Pike

Andrew Gerrand

##

.image gopher/header.jpg

The Go gopher is an iconic mascot and one of the most distinctive features of the Go project.
In this post we'll talk about its origins,
evolution, and behavior.

About 15 years ago—long before the Go project—the gopher first appeared as
a promotion for the [WFMU radio station](https://wfmu.org/) in New Jersey.
[Renee French](http://reneefrench.blogspot.com) was commissioned to
design a T-shirt for an annual fundraiser and out came the gopher.

.image gopher/wfmu.jpg

The gopher next made an appearance at Bell Labs,
as Bob Flandrena's [avatar](https://research.swtch.com/face) in the Bell Labs mail system.
Other Renee drawings became avatars for ken, r, rsc, and others.
(Of course, Peter Weinberger's was his own [iconic face](http://spinroot.com/pico/pjw.html).)

.image gopher/avatars.png

Another Bell Labs activity led to Renee creating [Glenda](https://9p.io/plan9/glenda.html),
the Plan 9 mascot, a distant cousin of the WFMU gopher.

.image gopher/glenda.png

When we started the Go project we needed a logo,
and Renee volunteered to draw it.
It was featured on the first Go T-shirt and the Google Code site.

.image gopher/logo.png

For the open source launch in 2009, Renee suggested adapting the WFMU gopher as a mascot. And the Go gopher was born:

.image gopher/gopher.png

(The gopher has no name, and is called just the "Go gopher".)

For the [launch](https://www.youtube.com/watch?v=-i0hat7pdpk#t=24m40s)
of the [Go App Engine runtime](https://developers.google.com/appengine/docs/go) at
Google I/O 2011 we engaged [Squishable](http://squishable.com) to manufacture the plush gophers.
This was the first time the gopher was colored blue and appeared in three dimensions.
The first prototype was kinda hairy:

.image gopher/prototype.jpg

But the second one was just right:

.image gopher/plush.jpg

Around the same time, Renee roughed out a gopher in clay.
This inspired a refined sculpture that became a vinyl figurine made by [Kidrobot](http://www.kidrobot.com/).
The vinyls were first distributed at OSCON 2011.

.image gopher/vinyl.jpg

The gopher therefore exists in many forms,
but has always been Renee's creation.
It stands for the Go project and Go programmers everywhere,
and is one of the most popular things in the Go world.

The Go gopher is a character; a unique creation. Not any old gopher, just as Snoopy is not any old cartoon dog.

The [gopher images](https://golang.org/doc/gopher/) are Creative Commons
Attribution 3.0 licensed.
That means you can play with the images but you must give credit to their
creator (Renee French) wherever they are used.

Here are a few gopher adaptations that people have used as mascots for user group mascots and similar organizations.

.image gopher/usergroups.png

They're cute and we like them, but by the Creative Commons rules the groups
should give Renee credit,
perhaps as a mention on the user group web site.

The vinyl and plush gophers are copyrighted designs;
accept no substitutes!
But how can you get one? Their natural habitat is near high concentrations of Go programmers,
and their worldwide population is growing.
They may be purchased from the [Google Store](https://www.googlemerchandisestore.com/Google+Redesign/Fun/Go+Gopher+Blue+Squishable.axd?cid=1399),
although the supply can be irregular.
(These elusive creatures have been spotted in all [kinds](http://www.flickr.com/photos/pinkhamsters/sets/72157627910426064/) [of](https://plus.google.com/107966629974328136037/posts/TcFA9zHzQB8) [places](https://twitter.com/goroutine).)

Perhaps the best way to get a gopher is to catch one in the wild at a Go conference.
There are two big chances this year: [GopherCon](http://gophercon.com/) (Denver,
April 24-26) and [dotGo](http://dotgo.eu) (Paris, October 10).

.image gopher/portrait.jpg

_(Photo by_ [_Noah Lorang_](https://twitter.com/noahhlo/status/437395572081688576)_.)_
