| # 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! |