33. GopherCon 2019 Spotlight, Part 2
Hosted by Chris Castle, with guests Aaron Schlesinger, Beyang Liu, Liz Rice, and Johnny Boursiquot.
GopherCon is the conference for all things golang, where Go community members congregate to discuss best practices, upcoming language changes, cool implementations, and more. Chris Castle caught up with several attendees to talk about what they're excited about. In this second half of a two-part episode, you'll hear open source project maintainers and developers share what they love about the Go language and its community.
Aaron Schlesinger is the core maintainer on Athens, an open source on-prem module proxy. He walks through the history of packages and modules in Go, and introduces how Athens satisfies the needs of developers. Go modules allow you to serve up a Go project's dependencies via an API; Athens implements that API--and integrates with other implementations of the API as well--to simplify dependency management, no matter where the code is stored.
Beyang Liu is the CTO and co-founder of Sourcegraph, a company that focuses on developer tools. They use Go to build high-performance code search, code intelligence, and jump to def functionality that works across repository boundaries and across entire code bases. Their role at Gophercon 2019 is to live blog all of the talks for interested parties who were not able to physically attend the conference.
Liz Rice is a technology evangelist with Aqua Security. It's a container security company, and she came to Gophercon to teach a workshop that introduced people to the concepts behind containers. She also recently became a Google developer expert in Go, which certifies her as someone creating interesting content that the community can look towards for education and inspiration.
Johnny Boursiquot is an SRE at Heroku, and a long time gopher. He gave the closing keynote at Gophercon, and his singular focus is on ensuring that the Go community is truly diverse and welcoming to new members. Every year, new developers attend Gophercon, and he wants to encourage veterans to embrace this growth as a positive change. He also provides a wealth of resources on listeners who are brand new to Go and eager to learn more about it.
Links from this episode
Chris: Hello. Welcome to Code[ish]. I'm Chris Castle, a developer advocate for Heroku, and this is part two of our community-focused GopherCon episode. If you didn't listen to part one, definitely check it out, but for part two today, we have some conversations with more GopherCon speakers like Johnny Boursiquot and Liz Rice. But first, we'll kick it off with day two keynote opener, Aaron Schlesinger.
Aaron: I'm Aaron Schlesinger. I am a core maintainer on the Athens project, which is a module proxy for mostly on-premise situations for organizations. So yeah, I come to GopherCon every year. I think this is my fourth one. And, yeah, this is by far my favorite conference across all of tech just because of the community feel and getting to see and talk in person with folks that you talk with online for 364 days a year.
Chris: Yeah, you don't get to see them in the real world.
Aaron: Yeah, exactly.
Chris: Physical world.
Chris: Cool, sounds good. And you just opened up day two with a talk at GopherCon. Can you tell us a little bit more about your talk, what you shared?
Aaron: Yeah, I was lucky, felt really honored just to go up and talk about Athens. It's the project that I'm currently working on. And I started the project, let's see... I think it was a little before last year's GopherCon. So it's about a year old. Today I just talked about why Athens exists, and what is a module proxy, and what is the purpose of a module proxy. And then, I kind of finished it up with, why would you use Athens, what are the common-use cases. And we talked a little bit about what Athens means for the community. That part is what I feel is really important because Athens can keep modules and dependencies decentralized.
Chris: Can you give us a little history of the module concept in Go and where we're at right now?
Aaron: So for a very long time Go has had this concept of a package. And a package is basically just a place on GitHub or GitLab, or other VCS systems. It was a repo that you could git clone, and Go made it really easy to do the git clone. And then, there were tools built on top of Go to do a git clone at a specific version. And then, we got to a point where there was an official, experimental tool that was really good at doing these version negotiations across different packages for different dependencies.
Aaron: And then came modules. And modules takes it a next step and basically packages, for lack of a better term, packages a bunch of packages together, groups them together into a thing called a module. And modules have some more guarantees around versioning. Generally speaking, it's way more useful to version modules with semantic versioning. And modules actually make sense of the semver for a specific dependency. And then, the really cool thing to me, and the reason that Athens exists, is that modules let you serve up dependencies via a custom API, and not just Git or whatever other VCS you're talking about. And so, Athens implements that API. And it works in this community of other implementations of the API too. The Go team has one, and JFrog has one with Gocenter.io. And there will certainly be more coming.
Aaron: And so, I just love that they can all work together via this really simple API. And so, Athens fulfills the on-prem use case proxy.goline.org. If you haven't used that, definitely check that one out. That one is a hosted, large-scale, public one that has every module under the sun. GoCenter is in the middle where it's a little bit more curated and it's got a lot more features on top, things like documentation and so forth. Everyone is moving at their own pace and their own direction. And we truly are decentralized in that respect, right? But we all work together because we all implement this API. And that's the community that I know. That's Go.
Chris: That's cool.
Aaron: And just generally, the amount of people who are getting into Go, it's actually pretty low. There's a ton of Gophers here that have been writing Go for a while, but this is their first conference. And I'm really encouraged to see that.
Chris: They're getting deeper engaged in the community.
Aaron: Yeah, and actually, I think yesterday and maybe today as well, there were various parts of the conference where folks ask how long you've been writing Go. And a lot of folks raised their hands, and they were the new Gophers, people who just started writing Go, and even those folks have been programming for such a long time that these concepts in Go are making sense, and they're picking up Go so quickly and becoming really productive in Go, really fast. And so, I'm really glad to see Go is growing as quickly as the community is growing.
Beyang: My name is Beyang. I'm the CTO and co-founder of a little company called Sourcegraph. We do developer tools. We have a code search engine, an understanding tool that does, among other things, really fast search over large code bases, and also, jump to def, and find references and code review tools like GitHub PRs and things like that.
Chris: Can you talk a little bit about what Sourcegraph is doing to make the GopherCon talks accessible out to all the folks that aren't here?
Beyang: Yeah, definitely. Sourcegraph is the official live blog organizer for GopherCon. And that's something that we do because we know that there are a lot of people that can't make it to the conference, but still want to consume the talks and learn about what's new in the Go community. So what we do is, we recruit folks from the community as well as folks from our own team to cover each of the talks from a very technical point of view. So a person'll listen to the talk, write up the key technical takeaways from that talk, write it up in a short blog post format, and post it typically within an hour or two after the talk happens.
Chris: That's cool.
Beyang: So even if you're not at the conference, you can follow along.
Chris: What about Sourcegraph in general? Can you give us a little history of Sourcegraph and what you're doing now?
Beyang: The inspiration for Sourcegraph really arose from when my co-founder, Quinn, and I sat down and we had this itch as developers. We're finding ourselves spending more of our time trying to dig through existing code and understand how it all fit together than just writing it. So more and more the job was becoming understanding code, understanding existing code and how to use it rather than just rewriting from scratch.
Beyang: I had briefly worked inside Google earlier in my career. And Google just has this great internal developer ecosystem. They also have this tool called Code Search, which is used by every developer at the company. And after leaving there, there was no comparison to anything else in the community. Meanwhile, we had this itch. We were working at a company where we were working with a lot of different development teams. And a lot of these are non-traditional tech companies with large code bases where just the amount of legacy code, code written by people who are no longer at the company, talking decades old code bases-
Chris: Wow, okay.
Beyang: ... was astounding. And we just realized that there was no code understanding tool that approached what companies like Google, and Microsoft, and Facebook have built internally. And we thought that there was a huge opportunity to make that kind of level and quality of code understanding tool accessible to everyone so that everyone could have the best... the latest and greatest in terms of-
Chris: Getting up to speed on existing code base.
Chris: Being able to be a maintainer as fast as possible without having to spend hours, or days, or weeks getting up to speed on a code base.
Chris: Yeah. When did it start again? When did Sourcegraph start?
Beyang: It started in late 2013. So we're going on year six now.
Chris: Yeah, year six. Where are Sourcegraph at right now, and what are your aspirations or hopes for the future?
Beyang: Yeah, totally. Where we are right now is it's a very exciting time for the company right now because we're now inside a lot of development organizations that you've probably heard of: Uber, and Lyft, and Yelp, and a bunch of other technical organizations, I think, that people really look up to. And our focus right now is just spreading Sourcegraph as wide as possible. We've built a tool that's really great for diving into large code bases and understanding them, and also, spreading knowledge around teams. And that's something that we're seeing is more and more need for companies of all sizes and industries, especially as more companies start to take software development as very seriously as a core competency.
Beyang: So we're focused on growing the customer base. Things are going really well on that front right now. And at the same time there's a lot of cool and exciting new features in the vein of high-performance, high-skill code search, code intelligence, very precise jump to def, and find references that works across repository boundaries and across the entire code base, and also, more and more automation of key developer workflows. Basically, anything that is more rote or boring, that is a drag on your day-to-day life as a developer, we want to automate away and turn those all into one-button or one-keystroke actions so that you can spend more of your time focusing on the interesting parts of the job and less on the dumb mechanics, the things that are left best to the computer to handle.
Chris: Right. Yeah, makes sense. You sold me on it. Sounds really empowering as a developer to be able to do my job faster and easier.
Beyang: Yeah, we want to be the developer tools company. The biggest engineering organizations in the world like Google has probably hundreds of millions of dollars to throw at internal developer tools, but most companies don't have that. And we want to be the company that just provides that level of quality and productivity to everyone.
Liz: Hi, my name's Liz Rice. I am a technology evangelist with Aqua Security. I also run our open-source programs. And I've been here at GopherCon teaching a workshop introducing Go programmers to containers. So Aqua's a container security company, containers is the thing that I deal with, Cloud Native, Kubernetes every day. And I wanted to teach a workshop to introduce people to the concepts behind that, leave them with a really solid understanding of what a container is.
Chris: Was it for beginning programmers? Or was there some prerequisites that you knew some basics about containers or Kubernetes?
Liz: The prerequisite was that you knew something about Go. Because I was doing a lot of examples that were using some Go code. But we really took it right down to the basics of what a container is. It's quite fun. I got everybody to actually build their own container in Go from-
Chris: Using LXC and cgroups and-
Liz: Yeah, yeah, which is-
Chris: Oh, that's cool.
Liz: ... which is good fun. And then, hopefully that gives them a really good understanding of, "Containers are just a process," and you can build one in 60 lines of Go.
Chris: I like that process of learning... There's new technologies, there are new things you learn out there. The smart people have been doing stuff with them, and at some point, they become demystified to me and I understand that like, "Oh, this container is actually just built up of these primitives that are provided by the Linux kernel." It's not this one magical thing, it's actually all these little pieces stitched together.
Liz: Right, and I think there's so much fun to be had in taking something that feels, like you said, a bit magical, and think, "But, it's not magic, is it, really? So let's find out what it really is." And I just love doing that.
Chris: Heroku actually started in 2008 or 9, and we started using... effectively isolating people's apps with containers, with cgroups and LXC before Docker was around or before the term container was really around, and now it's... Docker popularized it, and now there's this need to orchestrate it with Kubernetes and all these different things, so it's cool to see how it's grown or how it's taken on a new shape and form and become really the standard way of managing, and deploying, and orchestrating software.
Liz: Absolutely, yeah. There's so many benefits to containerization in Cloud Native whether... At a conference like GopherCon, we're probably focusing more on the developer experience, the idea that people can build software, and it runs on their laptop exactly the same as it's going to run in production. And that's a huge step forward from traditional development environments.
Chris: Right, yeah, where it's completely different. You've always wanted this dev and prod parity, but generally there's been-
Liz: But that all works on my machine.
Chris: Right. Yeah, right. So you've been... Was it newly named a Google developer expert?
Liz: Yeah, they've just introduced a new category of Google developer experts in Go. And, yeah, I was lucky enough to be amongst the first batch of people invited to apply and just got through the process just in time for GopherCon.
Chris: Cool. So what does that mean? What was the process like, and as a Google developer expert, what are your roles or responsibilities?
Liz: Yeah, so I think Google have been looking for people to... Probably best off asking somebody from Google really. But my interpretation-
Chris: No, I'm curious, yeah.
Liz: ... is they're looking at people who are doing interesting things in the community in whatever technology, in this example, Go, and who maybe are creating interesting content or doing interesting things that people who are interested in that technology might want to pay attention to. And for me, I felt like it's a really nice vote of confidence in... because you can't know everything, and there are many things about Go that I don't know. But I do know a few things. And it's a nice stamp to say, "Well, Google thinks you know a little bit here."
Chris: Yeah, that's pretty cool. Well, congratulations.
Liz: Thank you.
Chris: I will keep an eye out for other interesting Go and container stuff that you're sharing.
Liz: And there's a community of us as well. There's I think maybe about 10 so far in this first batch.
Chris: That are Go focused developer experts.
Liz: Exactly, yeah.
Johnny: Hey there. I am Johnny Borsiquot. I've been a gopher for quite some time, since the first GopherCon back in 2014.
Johnny: Yeah, so day to day I do a lot of Go. I work with Go quite extensively. At my current position at Heroku I'm an SRE. So I'm helping engineers develop and build applications that follow that model for reliability. So I enjoy that quite a bit. But what I enjoy doing most in the Go community is really being part of the community, and helping to foster, and welcoming new members to the community, and really making it a very welcoming and diverse environment for everybody.
Chris: Let's talk about the community or maybe... Would you say the community is your favorite thing about Go?
Johnny: Oh, yeah, absolutely. For me, the technology itself... I love Go. Don't get me wrong. I really enjoy working with the language, and I've been in the industry for quite a while. And I've worked with a lot of different technologies and programming languages, and Go is by far my favorite. And that has been so for the last five years or so. But I think what I enjoy... Outside of that, what I enjoy the most is really being a part of the community and doing work out in the community and really opening up this world that I think provides so much opportunity for others. It's a welcoming environment. It allows somebody to thrive. If you come into the community and you want to learn, and you checked your ego at the door so to speak, I think you'll do quite well in this community.
Chris: That's cool. So what did you... Well, you did a couple things at GopherCon, right? So you did a workshop. What did you do there?
Johnny: Every year I try to be of service to GopherCon, really, in general. Obviously, GopherCon probably the largest, well known Go conference. It was the original. And we have quite a few now, which I'm pretty psyched about, but GopherCon is the Super Bowl, if you will, right, of the Go community. So that's where you have a lot people gather. Up until last year we were gathering at Denver. This year we went to San Diego, which is great. But every year I try to be of service to the organizers, to the program committee, and speaker selection, and helping speakers prepare for their talks and that sort of thing. So I enjoy these things quite a bit.
Johnny: So last year I did a workshop to introduce folks to Go. And this year I did another workshop which was basically building service applications with Go. So every year I try to do something meaningful that's helpful, and also being part of the Guides program, which is, again, another way to welcome newcomers that are... maybe don't know exactly where to go, what talks to go to, and who to try and talk to and meet and what not, being a guide that they can... so if they walking around the conference floor, they can say, "Hey, Johnny, what should I do next? Who should I try to meet?" Or, "Can you introduce me to so and so, right?" So I enjoy these things quite a bit.
Chris: Speaking of learning. For someone who's looking to learn Go or maybe knows a little bit, what's the best way to become more proficient in Go to... Maybe it is find a job, or to expand their skills to be a professional coder in Go as opposed to just something you're learning on the side.
Johnny: Different styles of learning work for different folks, obviously. But for somebody who's coming in, depending on what sort of experience you're bringing in with you. If you're brand new to programming in general, the learning curve may be a little steeper but definitely not impossible. I know folks who do that now who are basically thriving having had no programming experience before, and Go being their first, and learning how to actually construct programs, that's absolutely doable.
Johnny: But if you're coming from a background that includes other programming languages, right, so maybe going through the Go tour is a very good example. It'll expose you to most of the higher-level concepts that the programming language offers. Go by Example is another great resource. Even to this day I still refer to it, now and then when I need to quickly look up how a particular concept works, and I also rely on these resources to... when I actually do teach. So I teach Go Bridge workshops as well. And I rely on these resources quite a bit to expose some of the concepts to folks.
Johnny: So these are two of the resources that I rely on. But there's quite a bit out there as well. It's getting easier and easier these days to find online resources through blog posts, the Golang Wiki has a section on getting started with learning, and has a bunch of links to different blog posts, different parts of the documentation. Those are very good places to go if you have some experience with Go. But definitely, if you're brand new, there's still space for you. There's still a ways for you to learn.
Chris: It's a couple weeks after GopherCon now. But for many of the attendees you were the last big face that they saw as you closed out the conference with the closing keynote. You want to share a little bit about what you shared during that talk? And then, hopefully, we can link them over to the recording of your talk too, so that they can see it in more detail.
Johnny: Yeah, I did the closing keynote. And it was a great honor for me to do so. I've received so much in return, right? For my involvement with the community. And this was my way of really both thanking the community but also challenging the community to step up in terms of things that are near and dear to my heart. So the things that I touched on was basically how much the community is growing. I touched on the number of attendees that we keep seeing, this 10% growth annually that we keep seeing in GopherCon attendants, right? That right there was a clear way to show that, hey, the community is growing. I talked about the Go developer network that recently started a few months ago. I talked about the growing number of developers around the world... we can't really pin it down like a number, right? So I've seen it as much as one and a half to two million developers worldwide doing Go. So not everybody that does Go is able to talk about that, or we don't know of all the companies doing Go obviously. But what we do know is that there's a lot of activity. There's a lot of buzz, and there's a lot of people joining the Go community every day.
Johnny: So I think more than half of the attendees at GopherCon this year were brand new, brand new folks showing up for the very first time. Some of them have been doing Go for weeks, other for months, but definitely less than a year, right? So the Go community is attracting a lot of new people, a lot of talent. As a result of that, right, there's going to be a lot of different opinions coming in. Maybe some people are bringing in a spirit of learning. They just want to know how things are done in Go. So people are bringing in some baggage, if you will, from other communities. Maybe different language does X and Go doesn't do Y. And we try to definitely encourage people to leave the baggage at the door kind of thing.
Johnny: But also, one thing that is very important to me is diverse inclusion. So these things, I believe when a community sets out to be those things, we can't just say that we are diverse, and welcoming, and inclusive. We have to walk that walk. We can't just be talking about it. So my rallying cry, really, to the Go community, for those who were in the room, obviously, but for those that are going to be watching the keynote afterwards as well, is to basically say, "Hey, this community gives us so much. It gives us the safety we need to be our authentic selves in the community, right? It gives us space to be who we are and to be creative, to share common goals with other developers and to build an awesome community. It gives us so much, but we have to in turn, expose ourselves a little bit, and be vulnerable a little bit, and go out of our comfort zones to help make the same benefits that we're seeing for ourselves, to expose that to other people who perhaps don't look like us", right?
Johnny: So it's basically a rallying cry for the entire community to say, "Hey, let us all work together to make this community more diverse, and welcoming, and inclusive for everybody."
A podcast brought to you by the developer advocate team at Heroku, exploring code, technology, tools, tips, and the life of the developer.
Developer Advocate, Heroku
Chris thrives on simplicity and helping others. He writes code, prototypes hardware, and smiles at strangers, helping developers build more and better
Developer Advocate, Microsoft
Aaron is a developer advocate at Microsoft Azure and a core maintainer of the Athens Project.
Beyang is co-founder of Sourcegraph. Previously, he was a software engineer at Palantir Technologies where he developed new data analysis software.
VP Open Source Engineering, Aqua Security
Liz looks after container-related open source projects including kube-hunter and kube-bench & is chair of the CNCF's Technical Oversight Committee.
Site Reliability Engineer, Heroku
Johnny is an SRE at Heroku, runs the Baltimore Go user group, leads the Baltimore chapter of GoBridge, and teaches regularly at conferences + meetups.
More episodes from Code[ish]
Pia Mancini, Joe Kutner, Josh Simmons, and Chris Castle
Open source communities face several challenges. Besides receiving fair compensation, there are questions of sustainability, governance, mental health, marketing themselves to CTOs, alongside technical challenges such as issue triage and... →
Leah Silber and Jamie White
Open source thrives on community contributions; sometimes, those contributions come from companies that encourage their employees to participate in open source work. But balancing the concerns of your job with those of an open source project... →
Carol Nichols, Jake Goulding, and Chris Castle
Rust is a type-safe, concurrent, and memory efficient language from Mozilla. Developers from various backgrounds are turning towards it more as a means of quickly writing performant and functional code for browsers, cryptocurrencies,... →