# Go Turns 10
8 Nov 2019
Summary: Happy birthday, Go!

Russ Cox, for the Go team
rsc@golang.org

##

Happy birthday, Go!

This weekend we celebrate the 10th anniversary of
[the Go release](https://opensource.googleblog.com/2009/11/hey-ho-lets-go.html),
marking the 10th birthday of Go as an open-source programming language
and ecosystem for building modern networked software.

To mark the occasion,
[Renee French](https://twitter.com/reneefrench),
the creator of the
[Go gopher](https://blog.golang.org/gopher),
painted this delightful scene:

.html 10years/img1.html
.image 10years/gopher10th-small.jpg _ 850
.html 10years/img2.html

Celebrating 10 years of Go makes me think back to early November 2009,
when we were getting ready to share Go with the world.
We didn’t know what kind of reaction to expect,
whether anyone would care about this little language.
I hoped that even if no one ended up using Go,
we would at least have drawn attention to some good ideas,
especially Go’s approach to concurrency and interfaces,
that could influence follow-on languages.

Once it became clear that people were excited about Go,
I looked at the history of popular languages
like C, C++, Perl, Python, and Ruby,
examining how long each took to gain widespread adoption.
For example, Perl seemed to me to have appeared fully-formed
in the mid-to-late 1990s, with CGI scripts and the web,
but it was first released in 1987.
This pattern repeated for almost every language I looked at:
it seems to take roughly a decade of quiet, steady improvement
and dissemination before a new language really takes off.

I wondered: where would Go be after a decade?

Today, we can answer that question:
Go is everywhere, used by at least [a million developers worldwide](https://research.swtch.com/gophercount).

Go’s original target was networked system infrastructure,
what we now call cloud software.
Every major cloud provider today uses core cloud infrastructure written in Go,
such as Docker, Etcd, Istio, Kubernetes, Prometheus, and Terraform;
the majority of the
[Cloud Native Computing Foundation’s projects](https://www.cncf.io/projects/)
are written in Go.
Countless companies are using Go to move their own work to the cloud as well,
from startups building from scratch
to enterprises modernizing their software stack.
Go has also found adoption well beyond its original cloud target,
with uses ranging
from
controlling tiny embedded systems with
[GoBot](https://gobot.io) and [TinyGo](https://tinygo.org/)
to detecting cancer with
[massive big data analysis and machine learning at GRAIL](https://medium.com/grail-eng/bigslice-a-cluster-computing-system-for-go-7e03acd2419b),
and everything in between.

All this is to say that Go has succeeded beyond our wildest dreams.
And Go’s success isn’t just about the language.
It’s about the language, the ecosystem, and especially the community working together.

In 2009, the language was a good idea with a working sketch of an implementation.
The `go` command did not exist:
we ran commands like `6g` to compile and `6l` to link binaries,
automated with makefiles.
We typed semicolons at the ends of statements.
The entire program stopped during garbage collection,
which then struggled to make good use of two cores.
Go ran only on Linux and Mac, on 32- and 64-bit x86 and 32-bit ARM.

Over the last decade, with the help of Go developers all over the world,
we have evolved this idea and sketch into a productive language
with fantastic tooling,
a production-quality implementation,
a
[state-of-the-art garbage collector](https://blog.golang.org/ismmkeynote),
and [ports to 12 operating systems and 10 architectures](https://golang.org/doc/install/source#introduction).

Any programming language needs the support of a thriving ecosystem.
The open source release was the seed for that ecosystem,
but since then, many people have contributed their time and talent
to fill the Go ecosystem with great tutorials, books, courses, blog posts,
podcasts, tools, integrations, and of course reusable Go packages importable with `go` `get`.
Go could never have succeeded without the support of this ecosystem.

Of course, the ecosystem needs the support of a thriving community.
In 2019 there are dozens of Go conferences all over the world,
along with
[over 150 Go meetup groups with over 90,000 members](https://www.meetup.com/pro/go).
[GoBridge](https://golangbridge.org)
and
[Women Who Go](https://medium.com/@carolynvs/www-loves-gobridge-ccb26309f667)
help bring new voices into the Go community,
through mentoring, training, and conference scholarships.
This year alone, they have taught
hundreds of people from traditionally underrepresented groups
at workshops where community members teach and mentor those new to Go.

There are
[over a million Go developers](https://research.swtch.com/gophercount)
worldwide,
and companies all over the globe are looking to hire more.
In fact, people often tell us that learning Go
helped them get their first jobs in the tech industry.
In the end, what we’re most proud of about Go
is not a well-designed feature or a clever bit of code
but the positive impact Go has had in so many people’s lives.
We aimed to create a language that would help us be better developers,
and we are thrilled that Go has helped so many others.

As
[\#GoTurns10](https://twitter.com/search?q=%23GoTurns10),
I hope everyone will take a moment to celebrate
the Go community and all we have achieved.
On behalf of the entire Go team at Google,
thank you to everyone who has joined us over the past decade.
Let’s make the next one even more incredible!

.html 10years/pin1.html
.image 10years/gopher10th-pin-small.jpg _ 150
.html 10years/pin2.html
