2015: add "State of Go" talk

Change-Id: I3c8eb6a6f16f0d01776d0ac50f8ba7577178f5af
Reviewed-on: https://go-review.googlesource.com/3702
Reviewed-by: Rob Pike <r@golang.org>
diff --git a/2015/state-of-go.slide b/2015/state-of-go.slide
new file mode 100644
index 0000000..2dfac6a
--- /dev/null
+++ b/2015/state-of-go.slide
@@ -0,0 +1,281 @@
+The State of Go
+Where we're at in February 2015
+1 Feb 2015
+
+Andrew Gerrand
+adg@golang.org
+
+
+* Go 1.4
+
+Released in December 2014.
+
+A few important things:
+
+- Android support.
+- Canonical import paths.
+- The `go`generate` command.
+
+Lots of behind-the-scenes work:
+
+- Prep work for new garbage collector.
+- Prep work for C to Go tool chain conversion.
+- Source tree re-organization.
+
+.link https://golang.org/doc/go1.4
+
+
+* Transition to Git
+
+* Transition to Git
+
+In December we migrated the Go repositories from Mercurial to Git.
+
+Also moved to new development infrastructure:
+
+- googlesource.com replaces Google Code for repository hosting.
+- Gerrit replaces Rietveld for code review.
+- GitHub replaces Google Code for issue tracking and wiki.
+
+A big deal for Go contributors, but not important to Go users.
+
+.link https://go.googlesource.com
+.link https://go-review.googlesource.com
+.link https://github.com/golang/go
+
+
+* Why Git?
+
+- Gerrit and GitHub use Git.
+
+Why Gerrit?
+
+- Rietveld was unmaintained.
+- Gerrit is actively maintained; used by Android and Chrome, among others.
+
+Why GitHub?
+
+- Puts us closer to our community.
+- Other GitHub repos can more easily link to Go issues and commits.
+
+
+* Transition pros and cons
+
+Pros:
+
+- More people understand Git than Mercurial.
+- Contributors can use their own Git workflows.
+- Good integration between Git and Gerrit. (Rietveld and Mercurial are separate.)
+- Automated CLA checking.
+
+Cons:
+
+- Git has a steep learning curve.
+- No way to disable pull requests.
+- No way to "star" or +1 issues.
+- The standard of issue reports has gone down. (No issue templates. Different culture.)
+- The transition was a ton of work.
+
+
+* Why not accept pull requests?
+
+Coming from Gerrit, Rietveld, or Google's internal code review systems,
+GitHub's pull request system is lacking.
+
+- Can only view diffs on a single page (can be *very* slow).
+- Comments are sent as they are written; you cannot "draft" comments.
+- Cannot compare differences between patch sets.
+- To create a patch one must fork the repository publicly (weird and unnecessary).
+- Accepting a patch creates a "merge commit" (ugly repo history).
+- In general, pull request culture is not about code review.
+
+
+* Go 1.5
+
+
+* Change to release cycle
+
+Go 1.5 is scheduled for release in August 2015 (was June).
+
+(Previous cycle clashed with holidays and other calendrical events.)
+
+
+* From C to Go
+
+The `gc` tool chain is being converted from C to Go.
+
+An ongoing process, started early 2014.
+Russ Cox says "It'll be done by March [2015]."
+
+New `link` tool to replace `6l`, `8l`, etc.
+New `asm` tool to replace `6a`, `8a`, etc.
+Machine-translated `gc` to replace `6g`, `8g`, etc.
+
+Design doc:
+
+.link https://golang.org/s/go13compiler
+
+Go 1.5 will have *no* C code in the tool chain or runtime.
+
+
+* Compiling Go 1.5
+
+You will need Go 1.4 to build Go 1.5 and above.
+
+(But you will not need a C compiler!)
+
+As a user, put Go 1.4 in `$HOME/go1.4` (or set `$GOROOT_BOOTSTRAP`).
+
+New OS or architecture ports will need to cross-compile.
+
+Design doc:
+
+.link https://golang.org/s/go15bootstrap
+
+If you use a binary distribution of Go, you don't need to do anything.
+
+
+* Concurrent Garbage Collector
+
+Work began on a new, concurrent GC during the Go 1.4 dev cycle.
+
+Goal:
+
+- Limit GC latency to less than 10 milliseconds.
+- Run Go application code for at least 40ms out of every 50ms.
+
+On track for Go 1.5.
+
+.link https://golang.org/s/go14gc
+
+
+* HTTP/2
+
+Brad Fitzpatrick has implemented an `HTTP/2` server for Go.
+
+Will be in the standard library by Go 1.soon.
+
+Go servers that use `net/http` will get `HTTP/2` for free.
+
+Currently in Brad's GitHub:
+
+.link https://github.com/bradfitz/http2
+
+See it in action:
+
+.link https://http2.golang.org
+
+
+* Mobile
+
+David Crawshaw, Hana Kim, Minux, and Burcu Dogan have been working on Go for
+mobile devices.
+
+Can build Android apps with Go 1.4
+(if you can work out the Android build system).
+
+For Go 1.5:
+
+- Simpler build story for Android.
+- More NDK library support.
+- Better bindings for calling Go from Java.
+- Beginnings of iOS support. (New `darwin/arm` build target.)
+
+
+* New architectures
+
+Go 1.5 will support PowerPC 64 and (maybe) ARM64.
+
+PowerPC 64 is basically done; builder running, passes tests.
+
+ARM64 development ongoing.
+Hope to have a dev.arm64 branch in the main repo for Go 1.5.
+Stretch goal is merging it into master.
+
+See work in progress for ARM64 here:
+
+.link https://github.com/4ad/go
+
+
+* Execution tracing
+
+Dmitry Vyukov has implemented a `trace` tool.
+It collects data to produce diagrams of process execution.
+
+.image state-of-go/trace.png 350 _
+
+Front end is the Android/Chrome trace-viewer. ([[https://github.com/google/trace-viewer][github.com/google/trace-viewer]])
+
+.link http://golang.org/s/go15trace
+
+
+* Analysis and Refactoring Tools
+
+Alan Donovan and others have been working on a tools for analyzing and
+manipulating Go source code.
+
+Available in the `tools` repo:
+
+- `callgraph`: display the call graph of a Go program.
+- `gomvpkg`: moves go packages, updating import declarations.
+- `gorename`: type-safe renaming of identifiers in Go source code.
+
+Coming soon:
+
+- `sockdrawer`: a tool for automatically splitting packages.
+
+
+* Builder infrastructure
+
+Brad Fitzpatrick and Andrew Gerrand have been hacking away at our continuous
+build infrastructure.
+
+Now running Linux, FreeBSD, OpenBSD, and Plan 9 builders
+on Google Compute Engine. (OS X, Windows coming soon.)
+
+Spin up builders to do work, spin up many in parallel.
+Gives us results much faster.
+
+Up next: trybots to test pending changes.
+
+Also: gomote! (Demo)
+
+
+* The Go Community
+
+
+* Conferences in 2015
+
+- FOSDEM, Brussels, now!
+- GopherCon India, Bengaluru, February
+- GoCon, Tokyo, Spring and Autumn
+- GopherCon, Denver, July
+- dotGo, Paris, November
+
+More to be announced.
+
+
+* Gopher Gala
+
+A global Go hackathon, in January 2015 (last week).
+
+.image state-of-go/gala.jpg 200 _
+
+Teams compete to produce Go apps, judged by "usefulness, creativity, completeness, and how well they showcase Go's strengths."
+
+Also physical hackathons around the world: from San Francisco to Stockholm to Tokyo.
+
+Cool prizes, including a Chromebook Pixel, a Raspberry Pi, and a trip to Colima, Mexico.
+
+The [[http://gophergala.com/blog/gopher/gala/2015/02/03/winners/][winners have been announced]].
+
+
+
+* Go user groups
+
+Lots of Go meetups popping up all over the world.
+
+Find one near you:
+
+.link https://go-meetups.appspot.com
+
diff --git a/2015/state-of-go/gala.jpg b/2015/state-of-go/gala.jpg
new file mode 100644
index 0000000..d60a7c0
--- /dev/null
+++ b/2015/state-of-go/gala.jpg
Binary files differ
diff --git a/2015/state-of-go/trace.png b/2015/state-of-go/trace.png
new file mode 100644
index 0000000..46006e2
--- /dev/null
+++ b/2015/state-of-go/trace.png
Binary files differ