swampUP 2019 has ended
Back To Schedule
Tuesday, June 18 • 1:15pm - 2:00pm
Improving Dependencies for Everyone with Go Modules and Module Repositories

Sign up or log in to save this to your schedule, view media, leave feedback and see who's attending!

Go is one of the hottest programming languages in modern DevOps. The vast majority of the cloud native ecosystem is powered by Go. The language is optimized for low-level "systems" programming, has excellent concurrency control, and compiles to a completely self-contained binary - all valuable properties for building tools to run in the cloud.

Open source tools such as Docker, Kubernetes, Hashicorp Terraform and Hashicorp Vault are all built in Go, and large scale companies from the New York Times to Google and Microsoft are all using Go internally.

Although it traditionally excels in the cloud, the developer experience for "Gophers" - engineers who write Go - is still difficult. The biggest friction point has traditionally been dependency management. When Go was first introduced, it came with no support for any dependency management - rare for most modern languages.

As Go evolved, several community-powered tools were built to help with dependencies. None completely solved for the most common use cases. Then, the Go version 1.11 release introduced an official solution - based on prior art in the community - that addresses almost every use case. This solution is called _modules_.

Importantly, the modules system comes with an HTTP download API that enables module repository servers so that Gophers can download module code from managed, reliable and fast artifact storage. These module repository server technologies are also brand new to Go. Essentially, Go supports a dependency management system roughly equivalent to Artifactory or federated NPM.

Leading the pack of these repository servers are three projects: GoCenter, Artifactory and the Athens project. GoCenter and Artifactory are JFrog's public and on-premise module repository solutions, and Athens is an open source on-premise solution.

These new repositories let the Go community treat dependencies as immutable artifacts for the first time - a familiar concept from other language ecosystems. Modules + repository servers represent a huge step forward for our community!

In this session, I’ll start with a brief history of dependencies in the Go ecosystem, including details on the dependency-related problems the community has encountered. Then, I'll show how module repositories help solve these problems today, where they're still lacking, and how they work. This talk includes live demos of GoCenter and Athens in action!

You’ll walk away understanding why Go modules and module repositories matter, where they're already being used, how they make the development experience easier for new and experienced Gophers alike, and how you can start using modules & proxies right now with very little work.

avatar for Aaron Schlesinger

Aaron Schlesinger

Sr. Cloud Advocate, Microsoft
Aaron is a developer advocate at Microsoft Azure and a core maintainer of the Athens Project. Before Athens, he was a core maintainer and chair of the Kubernetes SIG-Service-Catalog and a contributor to various other projects in the Kubernetes community. He has almost 15 years of... Read More →

Tuesday June 18, 2019 1:15pm - 2:00pm PDT
Seacliff A Hyatt Regency San Francisco (5 Embarcadero Center, San Francisco, CA 94111)