10 Years of Go�
Carmen Andoh
@carmatrocity
30 October, 2009
10 November, 2009
#GoTurns10
2009
2019
2009
2019
1960
2007
2020
20??
2009
2019
1960
2007
2020
20??
2009
2019
1960
2007
Foundations
Reflections
Predictions
Paying homage to
Foundations
1960
2007
Programming Languages 1960-2007
January 1960
ALGOL
January 1960
ALGOL
The meetings were exhausting, interminable, and exhilarating.
One became aggravated when one’s good ideas were discarded along with the bad ones of others. Nevertheless, diligence persisted during the entire period. The chemistry of the 13 was excellent.
Alan Perlis
Oberon
Pascal
C
C++
C#
Java
Perl
Python
PHP
JS
Obj C
AWK
Modula
Ruby
Shell
Algol
Concurrency 1964-2007
Concurrency 1964
Douglas Mcilroy�Unix Pipes
Concurrency 1978
Tony Hoare�CSP
CSP
Erlang
Alef
Occam
Newsqueak
Limbo
2020
20??
2009
2019
1960
2007
Foundations
Reflections
Predictions
Creation
Creation
2007
2009
They looked up and and down streets, looked em over with care. About some they said, I don’t choose to Go there.
During a 45 minute C++ build…
2007
Rob Pike
Google, circa 2007
In the span of an hour at that new
C++ standards talk we heard about something like 35 new features that were being planned. …
At this point I asked myself a question:
Did the C++ committee really believe that was wrong with C++ was that it didn't have enough features? Surely..., it would be a greater achievement to simplify the language rather than to add to it.
2007
Rob Pike
Robert Griesemer
inventing a new programming language
Algol
CSP
Algol
C
Pascal
Simula
CSP
Newsqueak
Algol
Oberon
C
Pascal
Simula
Smalltalk
CSP
Newsqueak
Algol
Oberon
C
Pascal
Simula
Smalltalk
CSP
Newsqueak
Algol -> consolidation of Tower of Babel language proliferation based on experiences on computer scientists and advances of hardware
Algol -> consolidation of Tower of Babel language proliferation based on experiences on computer scientists and advances of hardware
Go -> Consolidation of feature creep language proliferation (A newer version of the Tower of Babel) within languages and build toolchains based on experiences of computer scientists and advances of hardware
Creation Proliferation Complexity Consolidation
Creation Proliferation Complexity Consolidation
Creation Proliferation Complexity Consolidation
Waiting for Good design. �No is Temporary, Yes is Forever
implementing
generics
do them.
Ian Lance Taylor
Creation Proliferation Complexity Consolidation
Waiting for Good design. �No is Temporary, Yes is Forever
Everything should be made as simple as possible, but no simpler.
Reflections
2009
2014
You'll be on your way up!
You'll be seeing great sights!
You'll join the high fliers
who soar to high heights.
Language & Tooling
2009
2010
2011
2012
2013
Language & Tooling
Ecosystem
2009
2010
2011
2012
2013
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Open Source (IaaS)
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Open Source (IaaS)
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Open Source (IaaS)
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Open Source (IaaS)
Go 1 compatibility promise
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Open Source (IaaS)
Go 1 compatibility promise
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Open Source (IaaS)
Go 1 compatibility promise
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Open Source (IaaS)
Go 1 compatibility promise
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
GitHub
gofmt
(PaaS)
Open Source (IaaS)
Go 1 compatibility promise
Language & Tooling
Cloud
Ecosystem
2009
2010
2011
2012
2013
Go 1 compatibility promise
10²
GitHub
10⁵
Users Worldwide
Contributors
(PaaS)
Open Source (IaaS)
Reflections
2014
2018
So be sure when you step.
Step with care and great tact
and remember that Life's
a Great Balancing Act.
Language & Tooling
Ecosystem
2014
2015
2016
2017
2018
First Gophercon,� Denver, Colorado
Cloud
First Two Gophercon ticket purchasers? ��
First Two Gophercon ticket purchasers? ��Organizers risk and reward
Language & Tooling
Ecosystem
2014
2015
2016
2017
2018
First Gophercon,� Denver, Colorado
Cloud
Language & Tooling
Ecosystem
2014
2015
2016
2017
2018
First Gophercon,� Denver, Colorado
Cloud
Language & Tooling
Ecosystem
2014
2015
2016
2017
2018
First Gophercon,� Denver, Colorado
Cloud
Language & Tooling
Ecosystem
2014
2015
2016
2017
2018
First Gophercon,� Denver, Colorado
Cloud
Language & Tooling
Ecosystem
2014
2015
2016
2017
2018
First Gophercon,� Denver, Colorado
Cloud
1.5 Compiler tool chain in Go, GC
CoC, WWG, GoBrige
Language & Tooling
Ecosystem
2014
2015
2016
2017
2018
First Gophercon,� Denver, Colorado
Cloud
CoC, WWG, GoBrige
Context
1.8 GC improvements
1.5 Compiler tool chain in Go, GC
You won't lag behind, because
you'll have the speed.
You'll pass the whole gang and
you'll soon take the lead.
Wherever you fly, you'll be the
best of the best.
Wherever you go, you will
top all the rest.
Language & Tooling
Ecosystem
2014
2015
2016
2017
2018
First Gophercon,� Denver, Colorado
Cloud
CoC, WWG, GoBrige
Context
1.8 GC improvements
1.5 Comiler tool chain in Go, GC
Vgo papers
Language & Tooling
Ecosystem
2014
2015
2016
2017
2018
First Gophercon,� Denver, Colorado
1600
10¹
Contributors
Go
Confs
Cloud
1.5 Compiler tool chain in Go, GC
CoC, WWG, GoBrige
Context
1.8 GC improvements
Community
2014
2015
2016
2017
2018
Contributors: 1600
Users: Over 1 - 1.6 MM
Conferences: 19
10⁵
10³
10¹
This Year
2018
2019
2018
2019
Contributors: 2100 (increase 30%)
Users: Over 1.6-2MM (25%)
Conferences: 28 (45%)
2019
1.12 Go vet re-written.
2019
14 March: GDN (Go Developer Network) launches.
1.12 Go vet re-written
2019
14 March: GDN (Go Developer Network) launches.
1.12 Go vet re-written
1.13 release. Go modules beta with mirror, index, and checksum DB.
RAM consumption decreases ~20% across the board.
First Go 2 language changes land (improved number literals and signed shifts).
2019
14 March: GDN (Go Developer Network) launches.
1.12 Go vet re-written
1.13 release. Go modules beta with mirror, index, and checksum DB.
RAM consumption decreases ~20% across the board.
First Go 2 language changes land (improved number literals and signed shifts).
18 -> 28 Go Conferences
2009
2019
1960
2007
Foundations
Reflections
Creation
2020
20??
2009
2019
1960
2007
Foundations
Reflections
Predictions
Creation
On and on you will hike,
And I know you'll hike far
and face up to your problems
whatever they are.
Language & Tooling
Cloud
Ecosystem
2019
2020
2021
2022
2023
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Go Learning Platform
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Go Learning Platform
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Go Learning Platform
Paths to +2
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Go Learning Platform
Paths to +2
Go is the language used to teach Computer Science in schools
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Go Learning Platform
Paths to +2
Go is the language used to teach Computer Science in schools
Modules toolchain
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Go Learning Platform
Paths to +2
Go is the language used to teach Computer Science in schools
Modules toolchain
“Go 2”
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Go Learning Platform
Paths to +2
Go is the language used to teach Computer Science in schools
Modules toolchain
“Go 2”
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Go Learning Platform
Paths to +2
Go is the language used to teach Computer Science in schools
Modules toolchain
“Go 2”
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Go Developer Network
Go Learning Platform
Paths to +2
Go is the language used to teach Computer Science in schools
Modules toolchain
“Go 2”
Gio
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Modules toolchain
“Go 2”
Go Developer Network
Go Learning Platform
Paths to +2
Go is the language used to teach Computer Science in schools
Gio
Open Source Best Practices - will continue to evaluate what is right for Go
Language & Tooling
Community
Ecosystem
2019
2020
2021
2022
2023
Modules toolchain
“Go 2”
Edge Computing
Go Developer Network
Go Learning Platform
Open Source Best Practices - will continue to evaluate what is right for Go
Paths to +2
Go is the language used to teach Computer Science in schools
Gio
If you want to know the future, create it. ��
2020
20??
2009
2019
1960
2007
Foundations
Reflections
Predictions
Creation
2020
20??
2009
2019
1960
2007
Foundations
Reflections
Predictions
Creation
Heritage
Heritage
Something transmitted from the past.
Valued enough today.
To leave for the current generation.
To build upon it collectively for tomorrow.
You have brains in your head.
You have feet in your shoes.
You can steer yourself
any direction you choose.
You're on your own. And you know what you know.
And YOU are the gophers who'll decide where to go.
Together
Thank you