I had the chance to attend once more the big main annual Go conference: Gophercon 2019. For the first time this year, location changed from Denver to San Diego. Ocean, mild climate and extraordinary venue for the party (on the USS Midway) contributed to a relax and friendly atmosphere.
GopherCon is a social event
Gophercon is a social event and the very nice organization made the experience very enjoyable.
Still, this is a tech event and the program is usually packed with great talks that are influential for the Go community for the coming year. Last year talk on Go 2 shaped the discussions of the community during the past year.
I have attended many great talks as well this year. As it is a multitrack conference, I could not see them all and I will have to catch up on video. That said, here is a quick overview of the one I found inspiring, elegant or thoughts-provoking.
Note: I will next focus on the two main conference days, but there is a lot more at GopherCon, from pre-conference workshops to the more informal community day, with lightning talks and hacking sessions with peers.
Russ Cox has been setting the tone with an update on Go 2. It was less a surprise than last year, as it was more a recap of what happened on Go 2 since his last-year talk. The important things to note are that error changes are over for now, some of the experiments (like wrapper) getting added to Go, some being abandoned (like check then try experiment). Go dependency management has been progressing nicely, go modules becoming the standard in Go 1.13, along with the main Go module proxy. He finally let the generic discussion apart, to let Ian Lance Taylor present the new proposal on the second day.
You can read the companion blog post: Experiment, Simplify, Ship.
Google speakers were generally quite involved at the conference, presenting upcoming major improvements to the language, environment or tooling. I have generally found those talks to be very interesting. Rebecca Stambler talk on gopls, the official upcoming Go language server was promising.
gopls should help provide high quality go support in all major text editors.
Regarding tooling, I really enjoyed Katie Hockman (also from Google) talk about Go Module Proxy. She described in great details the proxy protocol, but also the checksum database, that should increase the safety of the Go ecosystem. The checksum database is designed as a Merkle tree, so that it cannot be tempered with and is auditable.
This was not all about tooling. Elias Naur (independent programmer) introduced his work on Gio, a framework to write cross-platform UI in Go. This is a follow-up on his work on Go Mobile. He has done a tremendous job on the framework, but still a lot of work is remaining. The approach reminds me of Flutter, with Go replacing Dart as a core language. Still, given the size of the Flutter team, and that the Flutter project is back by Google. It will be a challenge to turn Gio into a mainstream framework. You can check his slides: Simple, Portable and Efficient Graphical Interfaces in Go
If you want to catch up on video, I recommend also recommend Eric Chiang talk “PKI for Gophers”. This is a nice how-to session on everything certificate-related in Go, packed with lots of examples. You can check out his slides here: PKI for Gophers
Day 1 session ended with the story of a new Go contributor, Oliver Stenbom (student), detailing his road from a quick fix to a real official patch.
We finally all gathered on the USS Midway, for a wonderful party.
Highlight of day 2 was Ian Lance Taylor (Google) talk on Generics in Go. It was an overview of the new proposal for contract in Go, going from “Why” to “How”. I recommend watching the talk as a nice recap of the story of Go and generic. You can also read the companion blog post: Why Generics?. Finally, if you have some time to help with your feedback, you can read the full updated proposal by Ian Lance Taylor and Robert Griesemer: Contracts — Draft Design. I like the update proposal better. It is simpler and easier to understand than the previous one. While I am sure many small issues will be found during the implementation and testing phase, it now really feels the approach is close to what will end up being implemented in Go. I look forward to watching the iterations.
The day provided more interesting practical talks. I recommend watching Chris Hines (Comcast) talk on how they optimized their Go soft-real time streaming video service.
Jonathan Amsterdam (Google) introduced his work on upcoming Go tooling to help you make decision on major version changes, based on automatic analysis of API breaking changes.
Mat Ryer talk on Go best practices was very interesting, very practical. I recommend it, as most of his advices are common sense when you know about Go, but requires quite some time to discover on your own. You can watch the talk Mat gave on this topic at Gophercon EU: How I Write HTTP Web Services After 8 Years
I could not attend to Gabbi Fisher (Cloudflare) talk on sockets, but I heard good things about it and will definitely watch it when it is released in video.
To close my comments on the tech talks, if you are trying to have a large team adopting Go, you can check out the talks from Elena Morozova (Uber) and Jessica Lucci (Github). They shared two different points of view on how to make Go work at scale in large organisations.
The final highlight of the day was Johnny Boursiquot talk about Go community and how to keep a strong focus on diversity. It was a very personal and strong talk. This is an important topic. I am looking at getting involved into GoBrige and I wish more programming community would promote Bridge Foundry principles.
This was a great GopherCon. The community is managing to grow while keeping a friendly and welcoming vibe. The speakers were very good. It is a good sign for the Go language and I expect it will keep on rising in popularity as a tool to write maintainable and scalable server applications, microservices and API.
Are you a startup or a company that needs an efficient expert team to develop scalable, robust backend for your projects – fast?
We can help. We develop highly maintainable and scalable code in impressively short timeframes. Please contact us and we will help to accelerate your projects.