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