Half a decade with Go
10 Nov 2014

Andrew Gerrand
adg@golang.org

* Introduction

Five years ago we launched the Go project. It seems like only yesterday that we
were preparing the initial public release: our
[[https://web.archive.org/web/20091112094121/http://golang.org/][website]] was
a lovely shade of yellow, we were calling Go a "systems language", and you had
to terminate statements with a semicolon and write Makefiles to build your
code. We had no idea how Go would be received. Would people share our vision
and goals? Would people find Go useful?

At launch, there was a flurry of attention. Google had produced a new
programming language, and everyone was eager to check it out. Some programmers
were turned off by Go's conservative feature set—at first glance they saw
"nothing to see here"—but a smaller group saw the beginnings of an ecosystem
tailored to their needs as working software engineers. These few would form the
kernel of the Go community.

.image 5years/gophers5th.jpg _ 850

[[/gopher][_Gopher_]] _illustration_by_ [[http://reneefrench.blogspot.com.au/][_Renee_French_]]

After the initial release, it took us a while to properly communicate the
goals and design ethos behind Go. Rob Pike did so eloquently in his 2012 essay
[[https://talks.golang.org/2012/splash.article][_Go_at_Google:_Language_Design_in_the_Service_of_Software_Engineering_]] and
more personally in his blog post
[[https://commandcenter.blogspot.com.au/2012/06/less-is-exponentially-more.html][_Less_is_exponentially_more_]].
Andrew Gerrand's
[[http://vimeo.com/53221560][_Code_that_grows_with_grace_]]
([[https://talks.golang.org/2012/chat.slide][slides]]) and
[[https://www.youtube.com/watch?v=dKGmK_Z1Zl0][_Go_for_Gophers_]]
([[https://talks.golang.org/2014/go4gophers.slide][slides]]) give a
more in-depth, technical take on Go's design philosophy.

Over time, the few became many. The turning point for the project was the
release of Go 1 in March 2012, which provided a stable language and standard
library that developers could trust. By 2014, the project had hundreds of core
contributors, the ecosystem had countless [[https://godoc.org/][libraries and tools]]
maintained by thousands of developers, and the greater community had
many passionate members (or, as we call them, "gophers"). Today, by our current
metrics, the Go community is growing faster than we believed possible.

Where can those gophers be found? They are at the many Go events that are
popping up around the world. This year we saw several dedicated Go conferences:
the inaugural [[https://blog.golang.org/gophercon][GopherCon]] and
[[http://www.dotgo.eu/][dotGo]] conferences in Denver and Paris, the
[[https://blog.golang.org/fosdem14][Go DevRoom at FOSDEM]] and two more
instances of the biannual [[https://github.com/GoCon/GoCon][GoCon]] conference
in Tokyo. At each event, gophers from around the globe eagerly presented their
Go projects. For the Go team, it is very satisfying to meet so many programmers
that share our vision and excitement.

.image 5years/conferences.jpg

_More_than_1,200_gophers_attended_GopherCon_in_Denver_and_dotGo_in_Paris._

There are also dozens of community-run
[[https://golang.org/wiki/GoUserGroups][Go User Groups]] spread across cities
worldwide. If you haven't visited your local group, consider going along. And
if there isn't a group in your area, maybe you should
[[https://blog.golang.org/getthee-to-go-meetup][start one]]?

Today, Go has found a home in the cloud. Go arrived as the industry underwent a
tectonic shift toward cloud computing, and we were thrilled to see it quickly
become an important part of that movement. Its simplicity, efficiency, built-in
concurrency primitives, and modern standard library make it a great fit for
cloud software development (after all, that's what it was designed for).
Significant open source cloud projects like
[[https://www.docker.com/][Docker]] and
[[https://github.com/GoogleCloudPlatform/kubernetes][Kubernetes]] have been
written in Go, and infrastructure companies like Google, CloudFlare, Canonical,
Digital Ocean, GitHub, Heroku, and Microsoft are now using Go to do some heavy
lifting.

So, what does the future hold? We think that 2015 will be Go's biggest year yet.

Go 1.4—in addition to its [[http://tip.golang.org/doc/go1.4][new features and fixes]]—lays
the groundwork for a new low-latency garbage collector and support for running
Go on mobile devices. It is due to be released on December 1st 2014.
We expect the new GC to be available in Go 1.5, due June 1st 2015, which will
make Go appealing for a broader range of applications.
We can't wait to see where people take it.

And there will be more great events, with [[http://gothamgo.com/][GothamGo]] in
New York (15 Nov), another Go DevRoom at FOSDEM in Brussels (Jan 31 and Feb 1;
[[https://groups.google.com/d/msg/golang-nuts/1xgBazQzs1I/hwrZ5ni8cTEJ][get involved!]]),
[[http://www.gophercon.in/][GopherCon India]] in Bengaluru (19-21 Feb),
the original [[http://gophercon.com/][GopherCon]] back at Denver in July, and
[[http://www.dotgo.eu/][dotGo]] on again at Paris in November.

The Go team would like to extend its thanks to all the gophers out there.
Here's to the next five years.

_To_celebrate_5_years_of_Go,_over_the_coming_month_the_
[[http://blog.gopheracademy.com/][_Gopher_Academy_]]
_will_publish_a_series_of_articles_by_prominent_Go_users._Be_sure_to_check_out_
[[http://blog.gopheracademy.com/][_their_blog_]]
_for_more_Go_action._
