16. ● Rob and Robert shared
same office.
● Actual swivel chairs
involved.
● Just like XKCD, but with
lightsabers instead of
swords.
00. YEAR 0: 2007-2009
GO’S
ORIGINS
Rob Pike is waiting 50 minutes for a C++ Program to
Compile
Rob
Pike
Robert
Griesemer
inventing a new programming language
17. 01. BACKGROUND
THE
REASON
FOR GO.
What changed
everything for us.
Goals for Go
Go was designed by and for people who write—and read and
debug and maintain—large software systems.
Go's purpose is not research into programming
language design.
Go's purpose is to make its designers'
programming lives better.
ELIMINATE
SLOWNESS
ELIMINATE
CLUMSINESS
IMPROVE
EFFECTIVENESS
IMPROVE
SCALE
18. BRIAN W. KERNIGHAN
“Debugging is twice as hard as writing the code in
the first place. Therefore, if you write the code as
cleverly as possible, you are, by definition, not
smart enough to debug it.”
19. 01. YEAR 0-
GO 1.0:
HELLO WORLD
2009 Happy Gopher Day
After 15 months, Go is open sourced on
November 10, 2009
2009/11/10 Go
open-sourced.
20. YEAR 1 - 2010
Spreading
the word
2010: The early years:
The days when Rob, Russ, et. al. would travel around to conferences
to talk about Go.
2010/03/18: Go Blog
2010/06/23: Go
course
2010/09/15: Go
Playground
21. YEAR 3- 2012
FOO
March 2012 - Go reaches 1.0
Significance and importance of a compatibility promise in modern
software development
2012/03/28: Go 1.0
22. YEAR 4 - 2013
Early
Adoption
Language
Go 1.1 release. Race Detector. Performance
improvements to GC. `map`. Scheduler has been
re-written.
● 6-month release cycle
● 1st Go conference held (Tokyo Japan)
- Docker release (written in Go)
2013/May Go 1.1
2013/Aug Docker
released.
23. YEAR 5 - 2014
Getting BIG
Language
Go 1.3 released. Stack improvements (now allocated
contiguous segments of memory), linker overhaul,
1.4 release. - Official support for Android
golang.org/x/mobile. DVCS moves from mercurial to
git. go generate introduced
April: Gophercon, held in Denver
Kuberenetes is open sourced
1st US & European conferences
● 500 contributors
Kuberrnetes open-sourced in June
2014/Jun Go 1.3
2014/Jun
Kubernetes
open-sourced.
2014/Dec Go 1.4
24. YEAR 6 - 2015
COMMUNITY
Go 1.5
● Go compiler rewritten in Go
○ If you want to build go after 1.5, you need to install
go 1.4.2 first.
● Garbage collector re-engineered concurrently
● Women Who Go & GoBridge born
● 1st Indian & Chinese conferences
● Experimental support for “vendoring” (using
GO15VENDOREXPERIMENT)
2015/Aug Go 1.5
25. YEAR 7 - 2016
HTTP2
2016/02/13 Go 1.6
2016/08/15 Go 1.7
Go 1.6
● HTTP/2 & Context introduced
● 1st Lat Am & Middle East conferences
● Top 5 most loved languages (SO)
● 1st Go user survey
● 1000 contributors
● Default “GO15VENDOREXPERIMENT” on
Go 1.7
● Context package
● Remove “GO15VENDOREXPERIMENT”
26. YEAR 8- 2017
1 MILLION
2017/02/16 Go 1.8
2017/08/24 Go 1.9
GO 1.8
● Plugin: Package loading at runtime.
● `go fix` support context issue
“golang.org/x/net/context” into standard library
“context”.
● GC < ms pauses
Go 1.9
● Type aliases
● #1 language developers want to use (1st time)
● 1 million (estimated) users
● 13 conferences
● 1st contributor summit
27. - 7.1% of developers use Go
in 2018 StackOverflow survey
- Up from 4.2% in 2017
- 76% YoY growth of Go users
- 700,000+ new users
YEAR 8-9: 2017-2018
GO’S
GROWTH
2017/02/16 Go 1.8
2017/08/24 Go 1.9
Go has ~1.6M users worldwide
28. YEAR 8-9: 2017-2018
GO’S
MOMENTUM
- #1 language to learn in 2018 on
HackerRank (38% of responses)
- #3 language for hiring posts on
Hacker News
- #1 Median Pay and #1 Future
Language (23% of responses) on
2017 O’Reilly Dev Salary Survey
2017/02/16 Go 1.8
2017/08/24 Go 1.9
Go is in demand
29. YEAR 9- 2018
Modules
2018/02/16: Go 1.10
2018/08/24: Go 1.11
Go 1.10
● Note: your need write “1.10” (not 1.10) in travis ci.
● Vgo paper, and vgo arrived.
Go 1.11
● Go modules introduced
● Port to WebAssembly
● More contributions from outside the Go team (1st time)
● 19 Go conferences
● Go new brand & logo
● Go #4 language by PR on github
● #1 lang devs intend to learn
30. YEAR 19- 2019
ARRIVAL
2019/Feb Go 1.12
2019/May
Playground 3rd party
import.
2019/July Go GDE
2019/Sep Go 1.13
Go 1.12
● Go vet re-written
● TLS 1.3 support (Enable by tls13=1)
● “GO111MODULE” default auto
Go 1.13
● “GO111MODULE” default auto
● TLS 1.3 by default
● Error Warpping
Others
● Go Developer network
● 28 Go conferences
● Major performance gains & memory reduction
● Go module mirror / checksum DB launched
● 2000 contributors (Double in 1 yr)
39. Map of the Go Community in 2017
Growth
● 76% YoY increase
● 700,000+ new Go developers
Inclusion: “I feel welcome in the Go community”
● 400% YoY improvement for women
● 300% YoY improvement for ethnically underrepresented
40. Reference
● Go timeline table from Google
● Go version changes from my blog
● The Why Of Go
● Slide template