Go: A Documentary | https://golang.design/history
_by Changkun Ou _ (and many inputs from contributors)
This document collects many interesting (publicly observable) issues, discussions, proposals, CLs, and talks from the Go development process, which intends to offer a comprehensive reference of the Go history.
Table of Contents
There are many sources for digging the documents that relate to Go's historical design, and here are some of the official sources:
Go is a big project driven by a tiny group of people and the crowd of wisdom from the language user community. Here are some core committers to the project if you are interested in following their excellent work.
Go's origin is attractive without doubts. By listening to the talks held by these people, you could learn more about their oral history and fun stories behind the great work.
For instance, here are some exciting talks regarding the historical feats
in Go might be your starting points (as a subjective recommendation):
talk/rob2007, talk/rob2009, talk/rob2010b, talk/rob2010d,
talk/rob2011a, talk/rob2013a, talk/rob2019, talk/robert2015,
talk/russ2014, steve2019b, etc.
The Go language was created by Rob, Robert, and Ken initially because Rob was bothered by slow C++ compiling times, talked to Robert, and luckily Ken was in the next office. Later, Ian joined the project after showing interest, and wrote the gccgo. Rob and Ken are retired. Robert and Ian currently work on adding generics to Go. Russ is also one of the core authors of the project in the early stage. Back then, he was a newcomer at Google, and Rob invited Russ for joining the Go team since he knew Russ from way back because of the Plan 9 project. Russ worked on the early Go compiler, runtime, as well as the leap of Go 1.5 bootstrap. Now, Russ is the tech leader of the Go team.
Alma mater: University of Toronto (BS), California Institute of Technology
talk/rob2007 Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak. May 9, 2007
talk/rob2009 The Go Programming Language. Nov 27, 2009.
talk/rob2010a Go Programming. Google I/O 2010. May 20, 2010
talk/rob2010b Origins of Go Concurrency style. Emerging Languages Camp 2010. July 21, 2010.
talk/rob2010c Public Static Void. OSCON 2010. Jul 22, 2010.
talk/rob2010d Another Go at Language Design. Aug 27, 2010.
talk/rob2011a Parallelism and Concurrency in Programming Languages. Feb 17, 2011.
talk/rob2011b Google Go: Concurrency, Type System, Memory Management and GC. Feb 25, 2011.
talk/rob2011c Lexical Scanning in Go. Aug 30, 2011.
talk/rob2012a Go Concurrency Patterns. Google I/O 2012. Jul 2, 2012.
talk/rob2012b Why Learn Go?. Sep 12, 2012.
talk/rob2013a The path to Go 1. Mar 14, 2013.
talk/rob2013b Go at Google. Apr 13, 2013.
talk/rob2013c Go Programming with Rob Pike and Andrew Gerrand. Aug 14, 2013.
talk/rob2013d Concurrency Is Not Parallelism. Oct 20, 2013.
talk/rob2014a Hello Gophers! Gophercon Opening Keynote. GopherCon 2014. Apr 24, 2014.
talk/rob2014b Implementing a bignum calculator. Sydney Go meeup. Nov, 19 2014.
talk/rob2015a The move from C to Go in the toolchain. GopherFest 2015. Jun 10, 2015.
talk/rob2015b Go Proverbs. Gopherfest. Nov 18, 2015.
talk/rob2015c Simplicity is Complicated. dotGo 2015. Dec 2, 2015.
talk/rob2016a The Design of the Go Assembler. GopherCon 2016. Aug 18, 2016.
talk/rob2016b Stacks of Tokens: A study in interfaces. Sydney Go Meetup. September 19, 2016.
talk/rob2017 Upspin. Gopherfest 2017. Jun 22, 2017.
talk/rob2018a The History of Unix. Nov 7, 2018.
talk/rob2018b Go 2 Draft Specifications. Sydney Golang Meetup. Nov 13, 2018.
talk/rob2019a Creating the Go programming language with Rob Pike & Robert Griesemer. Sep 10, 2019.
talk/rob2019b Rob Pike. A Brief History of Go. Dec 12, 2019.
talk/rob2020 A Rob Pike Interview. (Date Unclear) Apr 30, 2020.
talk/rob2021 The Go Programming Language and Environment. John Lions Distinguished Lecture, UNSW, May 27, 2021.
[talk/rob2023] What We Got Right, What We Got Wrong. GopherCon Australia 2023. Nov 10, 2023.
No open issues yet, or sync has not completed.