# Four years of Go
10 Nov 2013
Tags: community, birthday
Summary: Happy 4th birthday, Go!

Andrew Gerrand

##

Today marks the fourth anniversary of Go as an open source project.

.image 4years/4years-gopher.png

Rather than talk about our technical progress (there'll be much to talk about
when we release Go 1.2 in a couple of weeks) we thought we would instead take
this occasion to look at how the Go community has grown.

Let's start with a chart:

.image 4years/4years-graph.png

This chart shows the growth of Google searches for the term
"[golang](http://www.google.com/trends/explore?hl=en-US#q=golang&date=10/2009+50m&cmpt=q)"
over the past four years.
Notice the knee in the curve around March 2012, when Go 1.0 was released.
If these searches are a decent proxy for interest, then it's clear that
interest in Go has grown remarkably since launch, and particularly so in the
last 2 years.

But where is the interest coming from?

The open source community has embraced Go,
with our community wiki listing [hundreds of Go projects](https://golang.org/wiki/Projects). Some popular ones:

  - [Docker](http://docker.io) is a tool for packaging and running applications
    in lightweight containers.
    Docker makes it easy to isolate, package,
    and deploy applications, and is beloved by system administrators.
    Its creator Solomon Hykes cited Go's standard library,
    concurrency primitives, and ease of deployment as key factors,
    and said "To put it simply, if Docker had not been written in Go,
    it would not have been as successful."

  - [Packer](http://packer.io) is a tool for automating the creation of
    machine images for deployment to virtual machines or cloud services.
    Its author, Mitchell Hashimoto, is now working on another Go project,
    [serf](http://www.serfdom.io/), a decentralized discovery service.
    Like Docker, these projects help with management of large-scale,
    cluster-based services.

  - [Bitly](http://bit.ly)'s [NSQ](http://bitly.github.io/nsq/) is a realtime
    distributed messaging platform designed for fault-tolerance and high-availability,
    and is used in production at bitly and a bunch of other companies.

  - [Canonical](http://canonical.com/)'s [JuJu](https://juju.ubuntu.com/)
    infrastructure automation system was rewritten in Go.
    Project lead Gustavo Niemeyer said "It's not a single aspect of Go that
    makes it a compelling choice,
    but rather the careful organization of well-crafted small pieces."

  - The [raft](https://github.com/goraft/raft) package provides an implementation
    of the [Raft](https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf)
    distributed consensus protocol.
    It is the basis of Go projects like [etcd](https://github.com/coreos/etcd)
    and [SkyDNS](https://github.com/skynetservices/skydns).

  - Other popular projects include [biogo](https://github.com/biogo/biogo),
    the [Gorilla Web Toolkit](http://www.gorillatoolkit.org/),
    [groupcache](https://github.com/golang/groupcache),
    Mozilla's [heka](https://github.com/mozilla-services/heka),
    the [kv](https://github.com/cznic/kv) and [ql](https://github.com/cznic/ql)
    lightweight storage systems,
    and the [Sky](http://skydb.io/) behavioral database.

But this is just the tip of the iceberg. The number of high-quality open
source Go projects is phenomenal.
Prolific Go hacker [Keith Rarick](http://xph.us/software/) put it well:
"The state of the Go ecosystem after only four years is astounding.
Compare Go in 2013 to Python in 1995 or Java in 1999. Or C++ in 1987!"

Businesses are enjoying Go, too. The [Go Users wiki page](https://golang.org/wiki/GoUsers)
lists dozens of success stories (and if you use Go,
please add yourself to it). Some examples:

  - [CloudFlare](https://blog.cloudflare.com/go-at-cloudflare) built their
    distributed DNS service entirely with Go,
    and are in the process of migrating their gigabytes-per-minute logging infrastructure to the language.
    Programmer John Graham-Cumming said "We've found Go to be the perfect match for our needs:
    the combination of familiar syntax, a powerful type system,
    a strong network library and built-in concurrency means that more and more
    projects are being built here in Go."

  - [SoundCloud](http://soundcloud.com) is an audio distribution service
    that has "dozens of [systems in Go](http://backstage.soundcloud.com/2012/07/go-at-soundcloud/),
    touching almost every part of the site, and in many cases powering features
    from top to bottom." Engineer Peter Bourgon said "Go demonstrates that the
    cruft that burdens other languages and ecosystems—stuff that developers
    have learned to deal with,
    often in anger—is simply not a necessary part of modern programming.
    With Go, I have a straightforward and non-adversarial relationship with my tools,
    from development to production."

  - The [ngrok](https://ngrok.com/) service allows web developers to provide
    remote access to their development environments.
    Its author Alan Shreve said that "ngrok's success as a project is due in
    no small part to choosing Go as the implementation language," citing Go's HTTP libraries,
    efficiency, cross-platform compatibility,
    and ease of deployment as the major benefits.

  - [Poptip](http://poptip.com) provides social analytics services,
    and product engineer Andy Bonventre said "What started as an experiment
    in writing a single service in Go turned into moving almost our entire infrastructure over to it.
    What I love about Go the most is not necessarily the features of the language,
    but the focus on tooling, testing, and other elements that make writing
    large applications much more manageable."

  - Music collaboration startup [Splice](http://splice.com) chose to build
    their service with Go.
    Co-founder Matt Aimonetti said "We seriously studied and considered many
    programming languages,
    but Go's simplicity, efficiency, philosophy and community won us over."

  - And, of course, engineering teams across Google are moving to Go.
    Engineer Matt Welsh recently [shared his experience](http://matt-welsh.blogspot.com.au/2013/08/rewriting-large-production-system-in-go.html)
    rewriting a large production service in Go.
    Other notable public examples include YouTube's [vitess project](https://github.com/youtube/vitess)
    and [dl.google.com](https://talks.golang.org/2013/oscon-dl.slide).
    We hope to share more stories like these soon.

In September 2012, [Apcera](http://apcera.com/) CEO Derek Collison [predicted](https://twitter.com/derekcollison/status/245522124666716160)
that "Go will become the dominant language for systems work in [Infastructure-as-a-Service],
Orchestration, and [Platform-as-a-Service] in 24 months." Looking at the list above,
it's easy to believe that prediction.

So how can you get involved? Whether you're a seasoned Go programmer or just Go-curious,
there are many ways to get started in the Go community:

  - [Join your nearest Go User Group](https://blog.golang.org/getthee-to-go-meetup),
    where your local gophers meet to share their knowledge and experience.
    These groups are popping up all over the world.
    I have personally spoken at Go groups in Amsterdam,
    Berlin, Gothenburg, London, Moscow, Munich,
    New York City, Paris, San Francisco, Seoul,
    Stockholm, Sydney, Tokyo, and Warsaw;
    but there are [many more](https://golang.org/wiki/GoUserGroups)!

  - Create or contribute to an open source Go project (or [to Go itself](https://golang.org/doc/contribute.html)).
    (And if you're building something, we'd love to hear from you on the [Go mailing list](http://groups.google.com/group/golang-nuts).)

  - If you're in Europe in February 2014, come along to the [Go Devroom](https://code.google.com/p/go-wiki/wiki/Fosdem2014)
    at [FOSDEM 2014](https://fosdem.org/2014/).

  - Attend [GopherCon](http://gophercon.com),
    the first major Go conference, in Denver in April 2014.
    The event is organized by the [Gopher Academy](http://www.gopheracademy.com),
    who also run a [Go job board](http://www.gopheracademy.com/jobs).

The Go team has been amazed by the growth of the Go community over the past
four years. We are thrilled to see so many great things being built with Go,
and deeply grateful to work with our wonderful and dedicated contributors.
Thank you, everyone.

Here's to four more years!
