The Changelog: Software Development, Open Source - Coding in the cloud with Codespaces (Interview)

Episode Date: September 11, 2021

On this special edition of The Changelog, we're talking with Cory Wilkerson, Senior Director of Engineering at GitHub, about GitHub Codespaces. For years now, the possibility of coding in the cloud se...emed so close, yet so far away for a number of reasons. According to Cory, the raw ingredients to make coding in the cloud a reality have been there for years. The challenge has really been how the industry thinks, and we are now at a place where the skepticism in cloud based workflows is "non-existent." After 15 months in preview, GitHub not only announced the availability of Codespaces for Teams and Enterprise — they also showcased their internal adoption, with 600 of their 1,000 engineers using it daily to develop GitHub.com. On this episode, Cory shares the full backstory of that journey and a peek into the future where we're all coding in the cloud.

Transcript
Discussion (0)
Starting point is 00:00:00 What's up, welcome back. We have a special episode of the Change Log for you today. Today we're talking with Corey Wilkerson, Senior Director of Engineering at GitHub. And we're talking about GitHub code spaces. For years now, the possibility of coding in the cloud seems so close, yet so far away for a number of reasons. According to Corey, the raw ingredients to make coding in the cloud a reality have been there for years.
Starting point is 00:00:28 The challenge has really been how the industry thinks, and we're now at a place where the skepticism in cloud-based workflows is, quote, non-existent. After 15 months in preview, GitHub not only announced the availability of code spaces for Teams and Enterprise, they also showcased their internal adoption with 600 of their 1,000 engineers using it daily to develop github.com. On this show, Corey shares the full backstory of that journey and a peek into the future. We're all coding in the cloud. Special thanks to our friends at fly.io for partnering with us to make this episode interruption free. Fly lets you deploy your apps
Starting point is 00:01:00 and your databases closer to users and their vision vision is simple all apps should run close to users in minutes you can run your ruby go node dino python or elixir app and databases all over the world no ops required you can launch most apps in about three minutes and they have a generous free tier so you can easily prove to yourself and your team that fly has everything you need to run your app globally give it a try and check them out at fly.io change changelog. All right, let's do this. Corey, welcome to the changelog. We've been looking forward to this conversation,
Starting point is 00:01:32 been paying close attention to Codespaces, been paying close attention to, I suppose, the right timing for devs to truly consider what coding in the cloud can do for them and when would be the right time to do it. So obviously, when I saw your post on GitHub's engineering team moving to Codespaces, you know, it's a big deal. I had to reach out, get you on the show. So welcome. Thank you very much. Happy to be here. Thank you for having us and your interest in Codespaces.
Starting point is 00:01:57 So the big news is that GitHub's engineering team, all 600-ish, have moved to Codespaces. Maybe we just start right there and you can tell us that story. Sure, yeah. I mean, there's all kinds of places to start. But I mean, I think the net of it is, if you look over the past 30 days right now, we have 600 GitHub engineers active in Codespaces,
Starting point is 00:02:17 which I think is just a really interesting and compelling story, right? Like we were just talking kind of before the show a little bit. Like I started off as a bit of a skeptic in this space. Like I was kind of roped into the effort and asked to kind of help move from what was effectively kind of no adoption into a real commitment to Codespaces. And that turned out to kind of be a heck of a journey and kind of where my story in Codespaces starts. What would be kind of most interesting to explore there?
Starting point is 00:02:44 Do you want to know kind of like ground zero, like what did it look like from day one and how we built momentum there? Like what all would you like to dig into there? I like the whys. Why are we doing this? Why did GitHub decide to do this? And then how did you get involved?
Starting point is 00:02:56 Yeah, I think the why here is basically we saw an opportunity to remove an entire class of issues, like productivity issues, that I think we've all kind of experienced as engineers, right? I've been doing this for 20, 25 years. Y'all have been in the industry for some time, right? And like a near constant is this friction you feel over development environment complexity, right?
Starting point is 00:03:16 Like it's an ever-present challenge. There's not a single day where you don't see some kind of signal of like environment complexity or challenge. And I think GitHub saw an opportunity with kind of where the industry was and a lot of tech that was out there to kind of bring these things together. So kind of the mentality in the industry and the tech that had emerged to remove this class of issues. And GitHub is around a thousand engineers, right?
Starting point is 00:03:39 So you can imagine that winning back productivity for us gets very valuable kind of very quickly, right? Like at a scale of a thousand engineers, we're not a huge shop. We're still relatively small. But still, you know, developer downtime costs a lot, right? And I think we saw here that we could, you know, bring this tech together and effectively just kind of remove this class of friction for GitHub engineers and of course, like the industry at large. Does that also speak to the lower barrier to entry? Yeah. In terms of class of issues?
Starting point is 00:04:11 Without a doubt, you know, like I think about one, one big benefit of code spaces is just accessibility into projects now. Right. So the idea is that the environment kind of ships with the project. You had to, for some time,
Starting point is 00:04:24 you know, for my entire career, you would have to bend your environment to the will of the project. You had to, for some time, you know, for my entire career, you would have to bend your environment to the will of the project, right? Your local desktop, you'd have to kind of like make the thing work to support the project, right? And that was oftentimes not a smooth transition whatsoever. And now the idea is like, hey, the environment's kind of attached to the project, right?
Starting point is 00:04:40 It's like part of the repository. We capture the environment and configuration. You click a button, we launch that compute for you out in the cloud, you attach your development. We capture the environment and configuration. You click a button. We launch that compute for you out in the cloud. You attach your development environment and you're up and running. Like that class of problems is now gone. So one, it solves friction. Two, it makes things far more accessible. And I'll say that I'm a, personally, I'm kind of a top-down learner and not like bottom-up, right?
Starting point is 00:05:01 I think many people are kind of top-down. Meaning like I like to start to, like in a new application that's unfamiliar to me, I like to start to tinker in it a little up, right? I think many people are kind of top down. Meaning like I like to start to, like in a new application that's unfamiliar to me, I like to start to tinker in it a little bit, right? And like change a thing here, refresh, see what happens and see if I can kind of gain purchase or traction that way. Right? And like Codespaces is a perfect tool for like exploring kind of new spaces.
Starting point is 00:05:20 Well, Adam, you can speak to friction when it comes to development, right? Because Adam, you hack on our code base just infrequently enough that every time you work on it, I think you hit friction, don't you? Yeah, if I accidentally homebrewed upgrade or something like that and I'll upgrade Postgres or something will happen in my database, I've learned enough now to navigate our setup scripts better, but as Jared said, so infrequently that, you know, I'm not always on the up and up, you know, and something will change.
Starting point is 00:05:49 I'm just not on, you know, on the tip of the code bases as much as I can be. And so I definitely hit this often. I mean, even within like older days, too, with like Ruby and, you know, pulling somebody's project with a Ruby version manager or, you know, RVM or whatever you would use. Like always trying to, you know, be in which version of language is supported in this certain code base. Doing that in the gem file or something like that, locking that thing, or even understanding the syntax to define how you would roll up to a different version so I can support this version of Ruby to this version of Ruby. It's just been a challenge.
Starting point is 00:06:26 And so when I spoke to barriers of entry, that's what it is. You have to learn so much ceremony, which is, over time as being a developer, you will learn these things. But on day one, if you can remove that friction, and this is one, a ton of time savings for existing engineers, existing teams, et cetera, but then also removing that barrier to entry. Like, it's just. Yeah.
Starting point is 00:06:46 Yeah, I can play on that a little bit. I mean, I was speaking to a principal engineer inside of GitHub yesterday. And I was like, he's been here for almost a decade. He's just excellent. You know, at some point he's going to turn into an Octocat. Like, that's just like, he knows GitHub through and through. And I asked him, I was like, you know, how many hours a month do you think roughly you kind of lose in productivity when like, it's like environment breakage issues, right?
Starting point is 00:07:07 Something kind of unexpected enters the environment and kind of throws you out of flow. Or maybe you have to like refit your environment to explore some PR or a new project, et cetera. I was like, give me your read. And now you have to remember, this is like one of our best engineers, principal level. Like this is like, you know, kind of a best case scenario, so to speak. Kevin said he's losing 10 hours a month, right? On basically like lost productivity time. And so at GitHub scale, you can start to do the math there, right? And assume again, that's best case. You know, we have 1000 engineers, right? So Kevin's losing 10 hours a month, you can do the math,
Starting point is 00:07:37 extrapolate that over the course of a year, and just getting back that time. And it's not just like the recovery of like engineering time, right? It's like the recovery of value creation time. And it's not just like the recovery of like engineering time, right? It's like the recovery of value creation time. And I think that's the most compelling part, right? So it's not just like, oh, well, you know, we lost this much kind of productivity time. Really, the loss is like, what did we not build in those moments? Like, what did we not get accomplished in those moments? And I think Codespaces, you know, kind of removes that class of issues again, and keeps us focused on creating value. And to me, that's like that's so refreshing.
Starting point is 00:08:08 Like that's what I want to be doing when I'm at work. Like I want to be, you know, building kind of my impact story and building software for the industry. Right. Like I want to like get up as this high leverage moment. Let me let me ship high leverage, you know, impactful code and not toil over my environment. Why do you think now is the time for code spaces or just in the cloud development? Yeah, I think all the raw ingredients are kind of like now there, right?
Starting point is 00:08:34 And like a lot of that, like the raw ingredients aren't just like tech. Some of that's just like how the industry thinks, right? So like containers have been on a tear now for years, right? Like containers are kind of everywhere. Like you see maturity across the industry with respect to like container-based workflows. So containers have been on a tear now for years. Containers are kind of everywhere. You see maturity across the industry with respect to container-based workflows. But I think another kind of critical part around this was skepticism around cloud-based workflows is basically non-existent at this point.
Starting point is 00:08:58 I've been in the industry for a while, and maybe a decade ago, you were like, oh, I would never move that thing out to the cloud. That's got to run on my precious kind of racked hardware here in this closet. Like that mentality is effectively gone, right? And like we're moving more and more precious workloads to the cloud on a daily basis. And like there's no reason we can't do that with our development environments today, which are kind of like single track, right? So we talk about these being, we think about the laptop being kind of a bit of a constraint, right?
Starting point is 00:09:24 It's like this one curated bespoke environment, the only place I can work. And it's like, what, like, why do we kind of have that arbitrary constraint when we don't have to? And then of course, like, you know, VS code out there is like, obviously another kind of key part of this, right? So it's like this super powerful thing. And like, we look at, you know, the idea that containers are everywhere. We have VS code, this really powerful tool that we work closely with, and we've got the fact that the industry now has broadly adopted, exclusively almost adopted the cloud. It felt like we had the raw materials in place to go pursue this. That's interesting that you mentioned that, too, because I was thinking about the timeline and just the perfect,
Starting point is 00:10:01 I'm not sure if this is the best way to say it, but the perfect storm, really. You've got the trajectory of Microsoft supporting open source and Linux. I'm not sure which came first, if it was Linux and it was open source, or open source then Linux, then obviously the acquisition of GitHub, the long-tail investment of VS Code,
Starting point is 00:10:17 and not just the investment into it, but then also the community's support of it. I mean, there's a lot of Vim users out there, but there's so many VS Code users out there, and they're diehard, and it's support of it. I mean, there's a lot of Vim users out there, but there's so many VS Code users out there. And they're diehard, and it's just so much. Yeah, I mean, VS Code is just a powerhouse right now. And I mean, it wins business because it's an incredibly powerful tool, right?
Starting point is 00:10:38 And that's what we're focused on with Codespaces, and you see it with VS Code. You just want to build kind of best-in-class product experiences, right? And then the users will follow, right? Like people are looking, developers especially, are seeking kind of productivity, right? Like if we gave them a tool that didn't make them more productive, they would just reject it out of hand, right? And that was kind of the North Star for, I think, Codespaces, which is like this has to unlock productivity for us, right?
Starting point is 00:11:01 Like it cannot at all create any kind of drag or we will just lose to to kind of like local desktop development flows like it has to be in parity with that and then add some uh for us to actually you know enter into this space successfully so you said something interesting about the preciousness of our development environments and i'm with you that we've commoditized the servers but we definitely have not commoditized dev because it's so it's so intricate it's so set up. Sometimes it's like, there be dragons, please don't touch my laptop, right? Because it works right now,
Starting point is 00:11:29 but I'm not sure if it's going to work tomorrow. I do hate that. I think it's almost a different skill set of maintaining that. I mean, there's overlap between development and the maintenance of a development environment in terms of things that you need to learn, but it's almost a different task altogether.
Starting point is 00:11:50 So I don't like that about it, but it's still very true that our development environments are precious to us and they're tweaked and configured and customized and all the things. So I'm sure there's probably lots of resistance to this. We talk about our setup, you know, We have probably tens of thousands of lines of code and very few dependencies in our stack. But GitHub is 14 years old and there's a million plus commits. And I'm sure the dependency list is very long. What kind of effort was this?
Starting point is 00:12:21 And tell us the story of bringing it along. It is. These are all very, very, very true points. Yeah. You know, the last thing I wanted to do was kind of be the vessel that went out to GitHub and said, like, I want to change your development environment. Right. Like, because these things are like so precious.
Starting point is 00:12:36 Right. Like, I'm an engineer, too. Right. Like, I think my environment is very, very much precious. Right. And here I was, you know, kind of the face in GitHub of saying like, well, we think we have a better way. Come join us over here. And, you know, I couldn't have done,
Starting point is 00:12:49 I started off on this journey as a skeptic, right? And I was, I think I shared some of this too. It's just like, it wasn't, I didn't think that, you know, I didn't think this would be a fruitful journey necessarily, right? I was just going to go do my level best as an employee, see if I can make it happen,
Starting point is 00:13:03 build momentum, et cetera, and see if I could find something out there. And now on the other side of this journey, you know, I feel like I'm completely on the other end now where I'm just like, this is the future, right? This is the way that we will absolutely kind of build software. But, you know, going back into the core of the story, like it was literally just me out there calling on my friends to begin with inside of GitHub. I've been there for five years, right? And the first few users were just me tapping into relationships saying like, hey, can you give this thing a shot?
Starting point is 00:13:32 Can you try this out? I want to get your kind of feedback and feelings about where this is at. And no one could yet use it on our core repository. We call it GitHub, GitHub, right? The organization's GitHub, the repository's GitHub. We didn't have this thing standing up in a code space yet, but we had other repositories that were compatible with code spaces.
Starting point is 00:13:49 And so I'd go out and ask, you know, favors of friends, right? And just be like, can you try this out and give me some feedback? And generally the feedback I would get back was, we have first resistance. Like, why would I do this? Like, it's just gonna, it's productivity loss,
Starting point is 00:14:02 tax on productivity. I don't trust HTTP. There's gonna be lag, like that kind of feedback. But then people would try it and they'd come back and be like, huh, like that was maybe better than I thought. Right. So that gave me some sort of like, you know, I was at the same time kind of, as I hacked in the space too, I was starting to get some of that like, oh, well, there's some, something here. Right. The big aha moment for me was connecting VS Code into my code space out in the cloud and still retaining that kind of local development experience, right? So it felt to me
Starting point is 00:14:30 like it was still very local, like, and the kind of magic is the synchronization that's happening between the local environment and the cloud feels totally transparent. But that aside, you know, it started with just a very small number of users. And so, you know, we would go back to leadership and GitHub and talk about the progress we were making. And, you know, the early days, the story was, I have five people that, you know, have responded positively to Codespaces. Right. So not much of a story, but like, you know, starting to kind of make a little bit of progress. And then maybe it was 10 people. And then, you know, the next kind of like iteration on this was like, well, let's go find a team, right? Like let's get a full team and Codespaces. Like how can we get a single team? So
Starting point is 00:15:16 six to eight people, right? Committed to using Codespaces and like stick in this thing. And at this point we'd had this kind of other effort running on the side to get GitHub, GitHub, the core GitHub.com repository compatible with Codespaces. And we'd gotten it to a point, we detail how we did this in the blog post, but we'd gotten it to a point where performance was mostly acceptable.
Starting point is 00:15:36 And so now we could go shop this with a team that worked primarily on GitHub.com and see kind of what their experience was. But I think we're making progress there. So we're ramping in. I think you all have talked to Kyle Daigle in the past. Kyle was the leader of that effort that kind of got this team spun up
Starting point is 00:15:52 inside of Codespaces on GitHub Core. And again, it was, you know, somewhat retentive. Like people were sticking and going like, wow, this is not what I thought, right? It's better than maybe what I thought. But I think the real kind of breakthrough moment came when we stopped calling this dogfooding, right? Like you hear this term all the time, like dogfood.
Starting point is 00:16:11 I think it actually originated, I looked up on Wikipedia, like I think the term originated inside of Microsoft. A number of years ago. But GitHubbers, my colleagues, just don't respond well to that term, right? Like dogfooding isn't really kind of like, doesn't inspire anyone to go do anything, right? Just like eat the dog food.
Starting point is 00:16:29 Like who feels good about that? And so what we did was we launched what we call the GitHub Computer Club. And I would love to like dedicate a full episode of this. It's like a really interesting concept and something I hope to bring out to the industry. But we asked people to join the GitHub Computer Club. And in doing so, so, they took this commitment or oath. I wrote up this script. I do solemnly
Starting point is 00:16:50 swear to never, no shadow compute, no desktop compute. I'll join this thing and forever be member of the elite exclusive GitHub Computer Club. We made a bunch of noise about it. People loved it. People straight up were just like, this is great. Let me in. I want a membership card.
Starting point is 00:17:05 Right. And in doing so, like we had to give them something in return. So they would join the computer club. But we offered to, you know, our exclusive quote unquote members, what we call the concierge team. And this team was built to kind of support their productivity and success inside of Codespaces. So the second these people hit friction, you know, one of the requirements of entering the computer club was that you had to kind of raise your hand.
Starting point is 00:17:29 Like you couldn't just disappear and go back to local desktop. Like you had to raise your hand, you know, virtually raise your hand and say, I'm about to opt out of this because like Codespaces can't keep my business right now. And the concierge team that we had built would like a swoop in, right?
Starting point is 00:17:42 Like respond to like, what's going on here? Like, let's dig into it. Why can't we keep your business in C spaces? And we continue to play that model back and forth between computer club and concierge team, right? Until we had built the product and built enough momentum inside of GitHub that like we, you know, one day we kind of looked around and we were like, whoa, we have hundreds of people developing github.com and GitHub code spaces. And I think the real story is there is just like, you know, commitment to make it happen, right? Like we wanted to be
Starting point is 00:18:08 successful with this and not just go talk about it in the market, but actually show that like this is a better tool for us. And the, you know, the Computer Club is still going strong. People are demanding that I give them like satin and denim jackets. I'll get around to that at some point.
Starting point is 00:18:24 Well, I hate to break it to you, Corey, but GCC is already taken as an acronym. So you've got a namespace on that one. Yeah. Well, maybe the code space is Computer Club, so we can go with GCCC. There you go. All the C's.
Starting point is 00:18:40 I like this aspect because you treat this like a customer scenario. Like you built a product and you have to retain customers. And you're actually exercising a great principle for anybody building a product, which is talk to your users. And when they have trouble, swoop in, as you had said, and understand those problems and be committed to fixing them. And I think that's a great way, a great story for how Codespaces became powerful inside of GitHub, because that's exactly how you build a product. Not just, let's just try this thing and hopefully our internal team adopts it by force. As you had said, you know, you,
Starting point is 00:19:16 you know, you wanted to go along with your employee card and be able to see if Codespaces could work. And out the other end, you became a believer, but you're not forcing GitHub engineers to use it. You're asking them to try it. In this case, the computer club with the oath. And then as you said, you look up and you see hundreds now. And I think that's right. Like the position was like, like no fiat, like we didn't want to lead with like, you have to do this. Like that's the absolute wrong way to get adoption in your product. Right. And like, we wanted to literally win the business of our colleagues right so like we wanted to build uh such a fantastic experience in code spaces that people would choose it right and yeah i think the computer
Starting point is 00:19:54 club probably you know kind of boosted adoption a little bit no doubt about it but like what made that word motion in there you gotta put emotion in there yeah exactly right i have a soul it needed some soul behind it right now? That was the idea. And the fact that we did respond to this, we actually did win business. When things didn't go well and when people wanted to opt out, they could.
Starting point is 00:20:14 They would for a week or whatever. But the goal was how do we get them back in here, kind of remove whatever that impediment is and get them productive in code spaces again. So what happens if you take the oath and you go back? Do you chop off a finger or what's the penalty? Well, you know, we leave that intentionally vague, right? So people can assume the worst.
Starting point is 00:20:37 No, I don't know that we've had any real regression there just yet, which is good. Codespaces is super retentive. I think we have people from time to time use local desktop. I had a colleague, this is actually I think in the blog post maybe, a colleague of mine reported the other day, she said I was using local development, my environment broke, so I opted in the Codespace or I switched over to Codespaces. And she was like, I actually shipped my task in my Codespace before my local development environment rebuilt and that was just like i think everyone was like wow that is such a good good story and so true it's like kind of the experience we're
Starting point is 00:21:12 all having right now with with code spaces we talk about it again in the blog post you click a button the environment's live right so like for every new engineer that joins github you know i think they all are probably fairly spoiled at this point because like day one, they click a button and they're able to run that environment, like the entire GitHub.com environment. It's just been like really incredible to watch. So Corey, the way you've explained the flow of this GitHub Computer Club seems a little smooth. I got to imagine you hit some friction. Can you share some of the struggle that you hit, some opposing forces in the process of rolling this out? Yeah, I mean, it basically started with a bunch of no,
Starting point is 00:21:50 honestly, kind of throughout GitHub. I think people had seen previous iterations of Codespaces. We announced it, I think, in May of 2020, right, at GitHub Satellite. Yeah, the first tweet I saw about it was Kelsey Hightower's, actually. Okay, yeah. That's May 2020. It's been out there for a while, right?
Starting point is 00:22:07 And I think when people first tried to use it inside of GitHub, there was a bit of friction, right? It didn't work for them. And I think first impressions can sometimes be lasting impressions. And so when I went out there and I was just like, use this thing, it's great, it's really evolved, right? We feel pretty proud of it. It was just a bunch of kind of no left and right right and so then it became like how are we going to build
Starting point is 00:22:28 this business and yes the computer club was a big boost and the concierge team certainly was just like a huge probably the most kind of high leverage kind of practice we we discovered along the way but a lot of this was just like startup style practices like we're building a business inside of github and i think that's maybe useful context for anyone that's looking for trying to build adoption of their, their own products in house. Right. Like you've got to think of this sometimes as like,
Starting point is 00:22:53 this is your own business. How are you going to build it inside of GitHub? And when, what is a very kind of stubborn audience? Like we're, I'm a developer. I can say that like somewhat stubborn. We find our,
Starting point is 00:23:01 you know, we find the tools that work well for us. And if someone comes and says, I want to change those, your response is going to be, don't. Don't touch my local dev environment, Corey. Yeah, and we'll get to this in a second. One of the great parts about Codespaces
Starting point is 00:23:14 is that we just commoditized the compute part of this. The environment is now running somewhere else. But dot files, VS Code setting sync, VS Code extensions, right? We bring those all to the environment, right? So you don't lose your kind of like curated workbench, right? If you've got a.files repo set up on GitHub right now, we bring that into the compute environment
Starting point is 00:23:35 and kind of like, you know, bring your environment and kind of your personality, your expression of yourself captured in code into that environment. We bring your workbench out to your compute, which i think is just like a really nice touch right so you get this like you get the the sort of unburdened compute out here running in the cloud so you freed up your local machine but you can still bring your preferences into that environment so i i digress going back to kind of building the business a little bit you know it felt like startup tactics
Starting point is 00:24:03 right so we had the concierge team we we had a computer club, we had effectively like, I would say guerrilla marketing. Like we were out on Slack kind of every day looking for opportunities to say like, have you tried Codespaces, right? So people were receiving, you know, M1 Macs, right? Like M1 Architecture Macs. And like the GitHub, GitHub build just would not yet work, right? We had not put in the investment to make this the GitHub, GitHub build on run on an M1 Mac and so we'd say hey have you tried to code space yet and people would be like well I guess I'll try that feels like my only path right now and they'd click a button they'd come back an hour later or day later and just be like what in the heck like this is incredible how like how is this even possible and those people you just win
Starting point is 00:24:43 for life like they're just like and now and like that's their their kind of like full mode of operating so that was the kind of guerrilla marketing angle we did pairing sessions like so we were up in front of everyone all the time saying if you want to get started like here we are like we're going to hold your hand through this and show you the ropes right like show you how we're doing kind of social proof i think was just really valuable there all hands would get in front of the entire company and demo the thing and be like look at this it's incredible you just try to build hype right connected with the right people so you know i'm kind of maybe loathe to call them influencers but you know the people inside of github that you know every engineer look up to right like they
Starting point is 00:25:19 look up to them and say like this is the person that you know i want like i aspire to be at some point you know we converted them like we won their business and they're kind of is the person that, you know, I want, like I aspire to be at some point, you know, we converted them, like we won their business and they're kind of like the trendsetters and tastemakers internally. And then really it boiled down to kind of like, I think, ruthless prioritization, right? So we listened to our users, what do you need? And we demonstrated that we could follow through on those things, right? For some reason, someone was trying to run some, you know, arcane karma test somewhere that wasn't executing for them. It's just like, all right, great.
Starting point is 00:25:46 Let's figure out how to make sure that works in this environment. Like that kind of thing, you know, even small tasks like that were important and kind of building momentum. And then I'll say it again. One day we just looked up and we'd gone from a bunch of no to a bunch of super fans inside of GitHub. Like we have cheerleaders. Like, if you go out and look on Twitter right now, the day after we kind of announced Codespaces to the world, there were just, like, GitHubbers were out there very enthusiastic about the thing.
Starting point is 00:26:13 And it was a very genuine response. Like, we didn't ask anyone to go do that. People are just that enthused about what we felt. Yeah, I saw a tweet from Kelsey Hightower. Again, I'll mention Kelsey. I don't know if this tweet was actually towards Codespace as the announcement but the timing was the same day I believe so I think it was a sub tweet around it but he said back in the day we wrote code on our own computers
Starting point is 00:26:35 so I had assumed that he was reflecting on Codespace as an announcement but I didn't I wasn't sure of that I saw that too I mean you used you used to run your server in a gray tower, beige tower underneath your desk too, right? Those days are gone. It kind of feels like this is the outset of this next wave of like, we're now moving development environments out into the cloud.
Starting point is 00:26:59 It just feels to me like two years from now, we're going to see some incredible adoption in this space. You mentioned a bunch of no's and the adoption flow. At what point was Nat a believer in Codespaces? You know, Nat holds a very high bar, right? So I remember as we were trying to get GitHub running inside of Codespaces, I'd go back to Nat. We'd show him like, hey hey it's now instead of 45 minutes it's 20 minutes
Starting point is 00:27:26 we've made these changes and he was like that's super cool not good enough right and like we totally agreed we're like yep
Starting point is 00:27:32 it's not good enough but like just wanted to show you progress get that feedback and then we'd come back again and say like we're down to 10 minutes that's great
Starting point is 00:27:38 it's not good enough and everyone's like yeah you're right it's not good enough it's got to be seconds right for it to to be the experience
Starting point is 00:27:44 we want. And so that was kind of the iterative experience. I think Nat has been a believer in this, like where this thing could go from kind of the outset, I think, of the journey. It's just been a bit of a slog as we weren't from the very early days of like, look, we have all this tech orchestrated that can produce this effect of a code space, right? The maybe early prototype down to like now the 10 second story inside of GitHub, right?
Starting point is 00:28:10 That didn't happen kind of overnight. But the good news is like most of that and almost all of that now has made it into the product itself, right? So like the changes that we've discovered along the way didn't just benefit GitHub, GitHub and the GitHub.com repository. It benefited the entire product.
Starting point is 00:28:26 So I think Nat's a super fan now. I've got some screenshots from Nat that I look at from time to time that keep me pretty enthused about the progress we've made. Even in your blog post, you took us on a journey from, I think, hours to 45 minutes to five minutes from five minutes to 10 seconds. And so I don't want to gloss right. i got a question around five to ten seconds but i don't want to gloss over the full journey is there anything in like the you know hours to 45 minutes to five minutes that journey is worth sort of shallow cloning sounds like it was a win yeah shallow cloning was a big win yeah
Starting point is 00:29:01 so like when i first got involved in this and i would just try to start a code space right i would sit there for 20 minutes staring at my terminal while I waited for the clone to complete into into a code
Starting point is 00:29:09 space. It's like gigs right 13 gigs. Yeah. Yeah. And that's like no way to like I mean I can't like
Starting point is 00:29:16 honestly I can't believe I had the perseverance to do this I was spinning up tons and tons of code spaces just like and kind of watching
Starting point is 00:29:21 this this churn by getting more and more frustrated. So no one else would I mean you wasted. You wasted your time on someone else's. I mean, you wasted a lot of your time. That's right. Yes, that's my love for Codespaces, right? There was no bounds.
Starting point is 00:29:30 I put in a lot of time just, you know, trying to get to the point where I could say this thing works. And so, yeah, shallow caching was a big, I think a big step forward for us where we went from 45 down to like 20 minutes or something like that. And then the next big leap for us was caching as much of the bootstrap activity as we could well ahead of time in a GitHub action.
Starting point is 00:29:51 So we have a nightly job that runs and basically sets up 95% of our environment. That got us down to like super tight times. And then the final step was this idea of pre-build, right? So when a code space is provisioned, you know, we clone your repository, we stick it out into some storage, we attach storage to compute, and we run some lifecycle commands on that. That's kind of the very high level overview. And with pre-builds, we kind of do all of that ahead of time, right? So the thing is built, like it's ready to go. There's really no startup time. You just connect the pre-built image to compute
Starting point is 00:30:28 and you're off and running. And that was kind of the last frontier for us in terms of speed. Now we're going to continue to invest in speed. I've said this a few times to folks recently, but fast and reliable never go out of fashion. And they're going to be absolutely critical for us in code spaces, right?
Starting point is 00:30:44 Like when you think about your ID, what do you want? You want fast and reliable, never go out of fashion. And they're going to be absolutely critical for us in code spaces, right? Like when you think about your ID, what do you want? You want fast and reliable, right? Like you don't want to feel lag in this environment. It has to be always on, always available, right? So, you know, we want to continue to invest in these things and we will over and over and over again. Pre-builds right now, I'll just go ahead and share that currently in beta. So we're onboarding customers into pre-builds, right? We're working with customers directly on their pre-build experience. We'll be getting this out to market relatively soon. Because this is the story of GitHub using Codespace.
Starting point is 00:31:16 That doesn't mean that every enterprise that is in the sweet spot, that has a large enough organization, that has the scale of an organization that can actually, you know, leverage the time savings. Sure, you know, small teams might win potentially by going to the cloud and that may prove successful, but this is GitHub store using it. And these are the things you've had to do to get there, which is pre-builds and, you know, shot cloning and whatnot. Yeah. I think, you know, I think that, you know, that's why we launched, I think, with teams and enterprises first, it fits that that's why we launched, I think, with Teams and Enterprises first. It fits that use case
Starting point is 00:31:46 super well, right? Like, no doubt about it. And there's lots of Docker competency in those organizations, container competency, etc. But I would also say that it's, like,
Starting point is 00:31:54 very easy to get started with Codespaces. So, like, I don't want to scare anyone away with a GitHub story. Yes, it took a ton of work, but a lot of that now is just part of the product,
Starting point is 00:32:03 right? So, like, we've done the discovery and then we've captured that in the product itself so even if you don't know like anything about like say docker containers for instance like you can launch a code space today and it drops you in kind of a default image that has the tooling for you know so many frameworks that you're used to kind of working with node or or Rails or Java, et cetera, right? So it's like a default option. And then we maintain a community-powered repository,
Starting point is 00:32:32 VS Code Dev Containers is the name of the repository, where there are, I don't have a number offhand, but let's say hundreds of community-powered images, right, that you can reference in your devcontainer.json and launch immediately into an environment that's, you know, well-suited for, let's say, Ruby on Rails, for instance, right? you can reference in your dev container dot json and launch immediately into an environment uh that's you know well suited for let's say ruby on rails for instance right so like it's not you know it's not this like oh you have to be a docker uh you know expert to be able to use code spaces whatsoever there are all kinds of you know kind of uh easy entries um intoodespaces. So there's a discrepancy in the numbers.
Starting point is 00:33:06 You have 1,000 engineers and 600 on Codespaces. So are there 400 holdouts or does it not apply to them? Or what's the situation with these 400 stragglers? Yeah, it's a good question. Our efforts have been primarily focused on GitHub, GitHub, right? The core kind of GitHub.com repository. There are literally thousands of repositories inside of GitHub, probably hundreds right? The core kind of GitHub.com repository. There are literally thousands of repositories inside of GitHub,
Starting point is 00:33:27 probably hundreds of active repositories. And so we need to go win the rest of GitHub's business, right? So like the story right now has been primarily focused on the majority of development inside of GitHub and that's through.com. So I think I mentioned this earlier too, but the intent is sometime in September to kind of sunset macOS development as the officially supported platform and pour all of our energy into Codespaces for.com development.
Starting point is 00:33:52 And this will start to kind of push out into other repositories inside of GitHub. This is a big push too, even internally. I think you mentioned a little bit in your blog post, the Mac OS-centric nature. Even the, I guess, the challenge of the transition was pulling away from a Mac OS-centric dev environment to something that was more Linux-based, Linux VMs that are being run inside of code spaces. Can you speak to that a bit? Yeah, I think there's years and years and years of assumptions
Starting point is 00:34:22 that we were always going to develop on macOS. And it's interesting because you think about CI, for instance. You try to get CI as close to your production, resemble your production environment as possible so that you're guaranteed that the integrity of your code in this environment is likely to transfer into production. But development, we had this weird gap where everyone was kind of on macOS, loves macOS.
Starting point is 00:34:47 I'm a big macOS user. I'm not going to convert to a Unix platform for development. Like that's just not kind of the way that I want to work. I quite enjoy being on macOS. And so the good news here is that we didn't have to convert anyone to a Unix platform. And in fact, maybe those on Unix also were quite happy now because they can continue to use Unix platform. And in fact, maybe those on Unix also are quite happy now because they can continue to use Unix
Starting point is 00:35:06 platforms. But you stick on Mac OS, you use VS Code or you use VS Code in the browser. It's the web UI for Codespaces. You're able to stay in your environment, so your Mac OS environment. But now we've just moved the compute away. The compute is running in a container
Starting point is 00:35:21 out on the cloud. And to me, again, maybe I've said this already, that was the magic moment for me with all of this. The kind of big aha breakthrough for me was I'm still kind of on macOS. I'm in VS Code locally. I'm getting this native experience. My dot files are synced out, right? Settings syncs running for me. I'm using my extensions and I don't feel any lag like that. Like to me, that was just incredible. The fact that I could just sit here and like bang away on my keyboard and know that that code was somehow you know kind of like magically synced out into the cloud without me taking any action and now i'm able to open up my terminal and run my code um directly from ps code right and your fans probably aren't running
Starting point is 00:35:58 at top speed exactly yes a lot of this is like it's just kind of strange suddenly you're just like this is all kind of working together and working. I'm used to my laptop being on fire while I'm developing and it's no longer the case. Yes, right. Like Docker's not running on my desktop, right? Docker's running out on a cloud, right? And like, just a really cool moment and experience.
Starting point is 00:36:19 And like, you know, I had some skepticism around this workflow because of prior experiences I'd had out there some number of years ago using cloud-based development environments that didn't quite meet, you know, I think the standard that maybe every developer holds for themselves. But I don't really, I haven't felt any of that in Codespaces. So you mentioned that the lens that you're speaking from here today and the blog post you put out so far is around GitHub.com development. So there's hundreds, thousands, I can't recall what you post you put out so far is around GitHub.com development.
Starting point is 00:36:46 So there's hundreds, thousands, I can't recall what you said, repos being used inside of GitHub. So is it safe to say that as organizations adopt and use Codespaces, they're going to have to get specific about which repos they support on Codespaces and each repo or team type might need, like an API team might need different love and support
Starting point is 00:37:06 or concierge than, say, the.com of their business. Yeah, I don't think so necessarily. I just asked someone on the team a couple days ago to pull the list of repositories that have been active with Codespaces over the past couple weeks. And there were dozens that have now at least started to explore if not fully embraced Codespaces. And I think what you need probably is
Starting point is 00:37:30 kind of the, what's the word I'm looking for here, the flagship offering in your organization, right? So you need the one kind of reference point where you can show and demonstrate to other people how you've been successful with that repository. And that's GitHub, GitHub, or the.com repository for us. So we've demonstrated we can be incredibly successful with what is the most challenging product
Starting point is 00:37:51 inside of GitHub. Anything after this actually should just kind of be fairly easy. I don't want to, there's still some effort. But it feels like we now have a great point of reference for other people to latch on and adopt. When you have a 13 gigabyte repository with a lot of dependencies
Starting point is 00:38:08 and a lot of engineers, 600 engineers at least, based upon this smaller sample size of 1,000 engineers within your organization, that's significant. That's going to be hard to get onto a whole new paradigm for developing everyday software.
Starting point is 00:38:24 I think so too and like you've got to do it though like you like that like we've got it like you win the business because you you build a better tool right and i think that's what it boils down to like uh it shouldn't be about necessarily preference like what you want is like value and productivity like did we build a better experience and like can we actually become the preferred experience right that's really kind of what we're after here is like, as long as you're building a fantastic product that gives developers, you know, that feels like that, like they're more productive, they've got a better tool in their hand, like they're going to, like, they'll use it. Like, there's no question about it. Like,
Starting point is 00:38:57 I would never say no to a better tool. And that's what, that's what we see inside of GitHub, right? And it's not just like, oh, I've taken my laptop now and I've moved it out to the cloud. And in fact, I think we discourage that model. Like, I don't want you just to recreate your laptop in the cloud. That doesn't make a ton of sense for us, right? Like when I say us, I mean the developer community. Like we want to be able to work
Starting point is 00:39:19 in parallel environments, on-demand environments, reproducible environments, et cetera. So you don't want to go curate this kind of like bespoke laptop replacement in the cloud. You want to think about a thousand laptops, the infinite number of laptops in the cloud that you can provision on demand for the task at hand, right? So we think about these as kind of like task-based.
Starting point is 00:39:37 So we have a one-to-one kind of concept between I've started a branch and here's the code space for that branch. These kind of maybe short-lived, right? You work on a branch for a week or something. And with it, you know, your code space. And at the end of that, you'd retire that code space, spin up a new one for your next set of work. So let's revisit this dot feature, which is very exciting.
Starting point is 00:39:55 You're on github.com and you're on a repo. For example, I have the FCF repo open right now. I'm looking at the readme and you hit the dot, the period button the dot on your keyboard explain what happens yeah i mean that is right now i don't i don't know that we've given it like an official name behind the scenes we refer to this as the web editor instead of github right many people have called it github.dev a few have called it code spaces right yeah but the idea was you know we're launching code spaces right yeah uh but the idea was you
Starting point is 00:40:25 know we're launching code spaces right we we know it's kind of well suited based on our experience internally for teams and enterprises at this point right but like the ethos of github is developer first without a doubt right it always has been um and so when we launched code spaces we wanted to make sure that we could give every developer on.com a better editing experience, right? So when you hit that dot button today, you move into VS Code, kind of multi-file editing experience, right? So that's VS, fully functional VS Code
Starting point is 00:40:55 and the browser attached to a repository. And from that repository, you're able to do basically any kind of Git operation, right? So like you can open a PR in that space. You can make changes in that space, you can commit from that space. So like, there's a lot of like, code spaces similarity here, where it falls short, right? Like what, like what we don't do here is offer compute, right? So you can't like actually execute the code that's in that environment, right? There's not a terminal in that environment. And those things, you know, we offer up in Codespaces itself.
Starting point is 00:41:27 So, you know, the next story for us is like, how do we kind of connect these environments, right? So we want you to be able to move from.dev into a Codespace kind of seamlessly. And so that'll be some of the next experience. So to answer the question, you know,.dev is kind of a multi-file editing experience and, you know, the best, you know, editor on the planet as far as I'm concerned in the browser.
Starting point is 00:41:45 And it's something that folks have wanted from GitHub for quite some time. Yeah, this has now become the de facto way that I will peruse some source code on GitHub. I used to just sit there and click through the little slide by file browser thing and had some cool stuff like the command T or the integration fuzzy finder stuff in that ui but why do that now you just hit dot and then it just takes you to basically vs code in the cloud pointed at that repo it's awesome we i think it's awesome too and you know we saw the same experience inside of github so we built the thing we shared it internally and we said can a few people use this and kind of give us your feedback and experience? So, you know, tell us where it needs to improve.
Starting point is 00:42:26 And then I think we looked at usage numbers a couple of days later internally. And we were like, oh, wow, like we're creating a lot of value here right away. Like it's just like immediate uptake inside of GitHub. And I think it is, you know, the primary means through which people do kind of explore code now.
Starting point is 00:42:42 And that just happened overnight effectively, kind of when we launched the thing. I was on an interview a few days ago with a candidate, and we had just announced this. It was the day of GA and announce. And he was talking about how he uses GitHub as kind of the center of his learning journey, right? Like it's always been like, he said,
Starting point is 00:42:59 GitHub and Stack Overflow are my two tools when it comes to learning. So he's sitting on GitHub and I'm like, have you seen the.dev stuff? And he said, no, what's that? And I had him hit the. button. I'll just never forget his reaction. So satisfied in that moment. He's like, what is happening? This is incredible. It's like so great. And it was just a really neat
Starting point is 00:43:14 kind of moment to have. This is very much an on-ramp then, I would say to comfortability with Codespaces. Life in the cloud. Life in the cloud, yeah. I mean, I feel like you will see that transition at some point.
Starting point is 00:43:27 Like, you'll be in some environment, you'll want to make a change to it or like you'll just kind of want to execute it, right? Right. And so you'll be like, now how do I move into compute, right?
Starting point is 00:43:34 Like, we want to make that transition seamless for you so you can attach compute into this environment, do what you need to do. And then, you know, in other cases, it's just this read tool.
Starting point is 00:43:44 I would imagine the dominant use case of.dev is going to be primarily for just kind of reading and browsing. Gotcha, yeah. When I saw Nat's tweet on this and I connected the dots, I was like, okay, timing of your blog post and the announcement of your team transitioning to use Codespaces and this dot, and we're a team organization on GitHub. I'm like, hey, we've got Codespaces.
Starting point is 00:44:03 So I was like, this is sweet. I like it. Yeah, there's been a little bit of confusion around that. But I mean, it's been fine for the most part. I feel like I didn't quite give it a name. And I thought people would probably call it.dev. And we're seeing people largely call it.dev. But at some point, it will fold into what I think is a comprehensive Codespaces experience.
Starting point is 00:44:27 So let's say I'm on the Codespaces product and I have my customizations in there somehow. And we haven't talked about how you do that or that team level, hopefully it's personal. Hopefully it's probably both with a CSS cascade. It's a bit of both, yeah. If this was tighter integrated with that like with my extensions i'm looking at this the it's a stock vs code right even is
Starting point is 00:44:51 missing some language support because you probably just put like the top 10 languages in there would i bring my extensions into this would i bring my custom my vs code config into this and what would it look like yes i think dot dev today supports like setting sync for instance um and i'm pretty sure and i can't say this the 100 confidence i should go look into this right now at least in the code space aside you know you codify in dev container.json right you capture your extensions that you want kind of available in that environment we specify them for every engineer right? And you're able to specify kind of machine profile or SKU that you kind of enter into.
Starting point is 00:45:29 And then we bring, using Settings Sync, Visual Studio Settings Sync, we bring your settings that you've configured as kind of like your development environment and VS Code into that code space with you, right? So like that's there present with you. And then again, the.files repository, and a lot of people don't know what that is,
Starting point is 00:45:45 so I'll just clarify a little bit. So the.files repository is literally called.files, D-O-T-F-I-L-E-S, inside of your repository, or sorry, inside of your GitHub account, right? So if you go to github.com slash Corey Wilkerson, for instance, right, and you create a.files repo there, then any repo that I provision,
Starting point is 00:46:04 you throw a flag somewhere in Codes, for instance, right? And you create a.files repo there. Then any repo that I provision, you throw a flag somewhere in Codespaces settings, right? Then any repo, or sorry, any Codespace that I provision kind of consumes that.files repository content and allows me to kind of configure my environment in the state that I want it to be to develop. Which is great because you took over a paradigm that everyone was already using. I think people have had.files repos
Starting point is 00:46:25 Yeah, that's right. for pretty much ever either sharing them or sharing them between themselves with different machines or just being a share of natural open source
Starting point is 00:46:34 tendencies. That's one thing I love about GitHub is that oftentimes there is that little bit of magic that someone
Starting point is 00:46:42 somewhere along the way someone says you know people already have.files repositories. Like, why don't we just give them an option to just pull that directly into the environment? And you're like, wow, that is brilliant. Exactly why I love GitHub, right? Like taste, aesthetic,
Starting point is 00:46:54 like we know what developers want and what's going to feel magical. And like those moments are always just very, very cool to kind of trip into. You get like, you get a couple per project like that. And it's what I think makes GitHub just really, really special. So this is interesting.
Starting point is 00:47:09 I'm on github.dev. I'm looking at the FCF repo. I installed the Vim emulation extension into that VS code instance. Then I visit another repo in another tab and I hit dot, go to github.dev. And that extension is installed in this instance as well is this like a local storage thing is this attached to my github account how's that working yeah that's actually i think at this point using browser storage okay right
Starting point is 00:47:34 so like that's all that's all attached to browser storage that's cool i mean it's a nice it's a nice step yeah yeah there's a lot about that that's it's a relatively new product right so we're listening to customers and iterating, et cetera. But that's the experience that we kind of launched with at this point. Most of what you see in that environment, GitHub.dev, right? We call it browser compute, right? So everything that we're doing is kind of supported by what we can do directly in the browser, right? Like the story kind of stops.
Starting point is 00:47:59 There's obviously API calls that are happening in the background out to GitHub to bring the repository contents and allow you to push, et cetera, and get operations. But for the most part, it's like, what can we accomplish in the browser? Well, it's a new product slash feature, but it's in the running for probably my favorite new feature in many, many years. I mean, this is just spectacular.
Starting point is 00:48:20 Yeah, it's part of my daily workflow now. It's hard for me to... I don't know the last time I've cl it's hard for me to like I don't know the last time I've cloned anything to my machine I just don't do that anymore
Starting point is 00:48:29 like I hop into a repository to either.dev to look at the contents or into a code space to actually like change a thing and in fact
Starting point is 00:48:36 like I find myself like engaged with many more repositories now just because I have that access right like I don't have to go through this additional step
Starting point is 00:48:42 of like grab a URL clone it down, open it in VS Code locally, like all that kind of stuff. It's just like gone for me now. So interesting to see, you know, at a macro level, what kind of impact this will have on like productivity, exploration, contributions in OSS. Like how is this going to like meaningfully change?
Starting point is 00:48:59 Well, like the in-browser editors definitely helped with the drive-by contributions, right? When there was a typo or there's like a thing that's missing and you could just edit it right there in your browser. It took you away from that friction. Again, doing the clone, all the things you just described. But when it came time to do slightly more complex things, we all went to the clone process, right? Whereas now maybe we just go into this editor
Starting point is 00:49:20 and like you said, it might really ramp up like slightly more complicated contributions i mean you couldn't be more right about this like i can tell you uh you know mr manager inside of github right a bit like i've been in management for a while and you know at one point yeah i was a very good programmer i like to think but maybe not so much anymore uh and it's nice to be able to hop into a thing and make a few changes right just like straight away without having to deal with all the environment complexity render the thing when i'm in a code space and see like actually that did have the kind of like intended or desired effect that i hoped it would and then maybe i knew that then
Starting point is 00:49:57 i have the energy to kind of like take it the rest of the way right so like there's all these kind of like the tech is super cool the experience is super cool the thing works really well and you're like wow this is incredible we're finally here as an industry like we finally made it this moment that that's great but this is like other story of like so what does that mean now now that we're here like like what happens like it seems incredible like the the the kind of second order effects we might see of having now reached this place where this is a viable option for development so here's a couple of grab bag questions about Codespaces, kind of the DevEx. If I'm actually using it, how does this work?
Starting point is 00:50:31 What does this feel like? The first one is test data. So when you're developing, you like to have like something that is like a snapshot or looks something like what Prod looked at at some point, or maybe you want to generate a bunch of test data. How does that work inside of the code space is set up so i can tell you the github
Starting point is 00:50:49 engineers today so for the dot com code base right we have a number of seed scripts right that we use to kind of see the database ahead of time right uh and those are executed in our bootstrap processes and those are done in pre-builds today so by the time you provision an environment today you're up and running on your your dot com code base you cdata ready to go um in your database i expect we'll see the same same pattern across you know anyone using code spaces and then like you can do the same thing like off on your uh off on a branch as well right so like instead of like this is really cool to think about so instead of now having having to destroy your local database environment because you want to review someone else's change that makes modifications to that database,
Starting point is 00:51:29 that doesn't happen anymore. You're looking at a different code space. You're experiencing these changes in a clean environment, clean context. You've got your stable code space over here, but maybe you have versions A, B, and C out here in discrete code spaces that are making what would otherwise be destructive changes to maybe your main branch that now you can explore without any kind of repercussions into your local environment. Well, it's like you said, you have access to infinite laptops.
Starting point is 00:51:54 Exactly. I think that's a different change in paradigm. It's like infinite branches at once versus like single branch. It is. And that is the thing that the industry is just like, it takes a second. It does. You're so used to working in this one model It is, and that is the thing that the industry is just like, it takes a second. It does.
Starting point is 00:52:12 You're so used to working in this one model, and you just have this mental model of that's how we do development. And then at some point on your Codespaces journey or whatever, you're going to find a moment where you're like, actually, no, the real model that I want is this kind of task-centric model. This pre-build, though, I'm thinking about it from a changelog.com perspective. We back up our database to S3 pretty four or five times a day, Jared, or on the hour. What's the time frame again? It's either hourly or every three hours, something like that. So I'll often literally go and hand-pull that from S3 down to local, and I'll run a script that we have in our repo.
Starting point is 00:52:45 I'm wondering if in a Codespaces environment, if we had pre-builds that we couldn't codify that into, say, a GitHub action or the process of creating that pre-build. Go grab that latest production database. Yeah, you wouldn't even need a pre-build necessarily. I mean, pre-builds will make it faster, right? Like at the end of the day. But you can do that without pre-builds
Starting point is 00:53:02 too, right? It's just a container, right? And there's lifecycle events in that container that we fire. One is called post create command. And then post create, that means the source has been provisioned onto your code space. The code space has stood up. It's live. It's ready to go.
Starting point is 00:53:14 And we can call this lifecycle event. You can hook into it and you can say, now go grab this thing from S3, pull it down, hydrate it in this environment to do whatever. Right? So like we give you kind of lifecycle hooks and I can't enumerate them all. There's several out in the documentation
Starting point is 00:53:26 you can read about that allow you to kind of hook in and do things at certain points of time. But it's certainly you could do it and just like you could build your own image right now. So GitHub does this. We have a base image that we use, that we specify in our devcontainer.json file, which is built ahead of time
Starting point is 00:53:42 that gives you most of the GitHub environment, right? And then with pre-builds and a few other tools, we take it just the last mile. But like 95% of this is built for us on a nightly basis and ready to go. And that's not pre-built. That's literally just building a Docker image. We publish it to the GitHub package registry
Starting point is 00:53:57 and then we consume it in our code space by referencing it in the devcontainer.json file. Sorry, I'm getting a little technical there. No, please go there. I think the next thing I want to ask you to do is just dream with us then. So if this is today, where will tomorrow be? Where will Codespaces take teams
Starting point is 00:54:12 that now have this capability today? That's unheard of. And the compute, a one-line compute chain based upon your blog post, a 16 gig memory instance to a 64 gig memory instance. Yeah, that's a really incredible experience like and like i you know i put in that that quote i think there's a caption in the blog post that says something like you know bypass config one config change and bypass the global
Starting point is 00:54:34 supply chain bottleneck yes yeah which is totally true right like you can now just say well we want to 16 cores or 32 cores or whatever and config and upgrade everyone's machine if you want. Assuming that you've got the approval to do so. Right, within your organization, sure. It's possible. Be responsible. You're describing the possibility, not the adherence to standards or internal organization opportunities. Yeah, exactly.
Starting point is 00:55:00 Right, right. This is just a thing that could be done. Well, dream with us. Where is this going to go? Yeah, you know, I I'm going to get out. I'll go so far as to say, like, I think the majority of the industry is probably using this model five years from now, right? And that actually feels pretty far out to me. There are a lot of people in this space right now kind of pursuing this same kind of thing.
Starting point is 00:55:18 And I think what we're going to see is just a lot of momentum as we kind of move this last frontier out into the cloud as people get more and more comfortable with it. It takes people like GitHub saying like, we're doing this and actually kind of like living the experience and doing it. I think the first folks we'll see, the early adopters
Starting point is 00:55:33 are going to be really high performance engineering teams that look to get, you know, every ounce of productivity and value creation out of their engineers that they can find on a daily basis, right? Like they understand that productivity loss is bad for the individual. It's bad for the business. Like people want to be focused on basis, right? Like they understand that productivity loss is bad for the individual. It's bad for the business.
Starting point is 00:55:47 Like people want to be focused on creating, right? That's why you kind of get into this. It's not like you want to toil over your environment. You want to go build something. And actually, if you look, you know, you kind of like, if you're in the industry, you understand that many of the top shops out there have built something like Codespaces.
Starting point is 00:56:04 I'm not going to name names here, but there's a few customers that we work with that would, for instance, run their CI suite, run CI tests out in some environment, and then just leave the environment for some developer to claim and work on at that point. The entire
Starting point is 00:56:19 thing's set up. You can just attach to it and work now. And other large shops, I think actually Google's well-known for their CIDR cider ide a web-based ide that they've used that they love as far as i understand that provides some of these same capabilities internal to google so like the early adopters are already there in many ways right i think github is kind of the the brings this out to the entire industry i think you'll see kind of a similar kind of maybe cloud adoption curve from like you know we move workloads from our precious server rack out into the entire industry. I think you'll see kind of a similar kind of maybe cloud adoption curve from like, you know, we move workloads from our precious server rack out into the cloud.
Starting point is 00:56:49 Maybe you see something here with the same kind of curve with code spaces, but maybe at a faster clip now because we have this kind of industry trust in the cloud. So I really do think like it's going to be, you see GitHub engineers, I'll say that's coming into the industry right now, right? They're coming straight out of school, straight into GitHub. And this is how they're starting their development experience. This is the way they know how to develop now. And we're going to see this more and more to the point that five years from now,
Starting point is 00:57:14 I feel like local development will have disappeared in the background. You'll still need it for some cases, but majority of developers will want to be in an environment like Codespaces. What happens if that environment goes away? It seems like you're hung out to dry if GitHub is down or your credit card expires and you lose access.
Starting point is 00:57:34 Oh, Jared, trust me, I heard this question many times as we were ramping developers on to GitHub. I feel like I have a perfect response for that. No, you know, that is like, so first, we will continue to invest in being fast and reliable. Like, no doubt about it.
Starting point is 00:57:48 Like, this thing has to be, what Microsoft has this language, a dial tone service, right? So it's got to be like, and it's a bit out of date, but it's got to be on, like constantly on
Starting point is 00:57:57 all the time. What we've done internally in the event that we were to lose it, you know, access to Codespaces, we build an image that's much like our Codespaces container image, right? Kind of like tracks that environment closely.
Starting point is 00:58:12 And it's available for any GitHubber to pull down right now out of the GitHub package registry internally at GitHub. And they can just run it in Docker or they can use VS Code remote containers, right? Which is like a large part of the tech that Codespaces is built on, but you can just do it locally. So you can launch VS Code, you plug it into a container, you're running locally now. This image that we built is our backup
Starting point is 00:58:32 and you can do, you know, perform GitHub, GitHub development in that context on your local machine. So if a GitHub was on a flight, which in this day and age is strange and anxiety-filled, but I'm sure one day we'll get to a point where it's less so. You're going to want to code. You're going to want to be productive on that flight. Is that how they do it then? That would be the path that I think I would
Starting point is 00:58:54 use, that we would use right now. Yeah, that would be the path. I mean, maybe the platform evolves to some point where you can imagine we have VS Code, right? Like that's something that we work on. And you can say like, oh, well, we're a Codespaces user. How do I pull this environment down to VS Code right now? So I'm going to go offline. And how can I, you know, I can imagine that being a thing that we ship alongside VS Code at some point.
Starting point is 00:59:15 But right now, just telling you how GitHub does it, we kind of keep this local image in the background in the event that we do need to use it. And, you know, we've used it a few times, not because Codespaces has been down, but because we have folks that aren't ready to move. They're on certain repositories where they don't feel like moving or they want to use Sublime still or whatever the use
Starting point is 00:59:34 case is. We maybe haven't won the business of one or two engineers yet. So it's a thing that we have. That's our fallback. How integral to all of this is VS Code? It sounds like it's right, like it has to be there. I know you've enabled Vim people
Starting point is 00:59:50 and Emacs people to connect via SSH, but that seems like a workaround, or like a, here you go guys, here's something. Yeah, VS Code I think will always kind of be the premier client in the code spaces. Like, it's just the paved path that we have right now. Today, it's essential to
Starting point is 01:00:06 the experience, right? We do have a number of Vim and Emacs users internally. We want to win their business as well. And we've done the work inside of GitHub to do that. So something we're working on right now, where you should be able to effectively just shell into your environment, use Vim and Emacs directly in the code space, right? Without the VS Code client. So that's definitely on the roadmap for us and something that we're pursuing. We've built it internally. We were able to convert our Emacs and Vim users,
Starting point is 01:00:32 those that develop on.com regularly. Nat's a Vim user, right? I want to win Nat's business, too. So that's a very important thing for us to pursue. So one thing VS Code has done which is awesome is a language server protocol and really separating the implementations of the highlighting and the syntax stuff into this protocol
Starting point is 01:00:55 that you can then plug into. And then everybody who's doing a, maybe I'm in charge of Golang and I just have to do that once and provide it. And all these different Vim can use it, VS Code can use it, etc. You almost could see a layer like that for these cloud integrations where maybe you could make Vim code spaces aware somehow.
Starting point is 01:01:17 Yeah, I will say that's an interesting thought and probably something that we would explore at some point like Vim itself being kind of Codespaces aware. I like the way that you're thinking, Jared. Well, because there are a lot of people that just will not use VS Code. And you just wonder, like, are you just leave them in the dust eventually? No, I mean. Because how integral is it?
Starting point is 01:01:39 I understand that today it's like a bastion. It's a huge part of it. But is that wise on the long term? Because we're trying to get everybody into this circumstance over the, you know what I'm saying? Absolutely. I mean, like it's early days,
Starting point is 01:01:51 I would say stay tuned on what we're doing here. The work that we're doing inside of GitHub right now to support SSH and Emacs users, the story does not, or sorry, BIM and Emacs users does not stop inside of GitHub. Like we have no intent of just saying like, this works just for GitHub.
Starting point is 01:02:04 Like that's not where this story goes. We want as many people on Codespace, we think this is the future, the way that people will work. And we want to bring that to a number of clients. Right now, the super paid path is VS Code, no doubt about it. But if the focus is productivity, the focus is on building the next generation of developer tooling, we've got to go support additional clients as well.
Starting point is 01:02:26 For sure. Yeah, I guess my thoughts around VS Code, I mean, it's an amazing piece of technology. It is. And my concern with it on the long term, as I see more and more things going in there, is like eventually Microsoft Word had too many features, in my humble opinion.
Starting point is 01:02:44 And so my concern as VS Code over time is like, how well will that be maintained? And I'm sure the motivations are there and the engineering is there and all the intentions are there to make sure it's like best in breed editor forever. But what if it's not? And are we locked into it?
Starting point is 01:03:03 Yeah, I mean, all I can say is the VS Code team is super passionate about what they've built. I work closely with those guys and they have remarkable taste, that entire team from top to bottom. They've won business because of their
Starting point is 01:03:19 taste and commitment to developers. Like I said, it's amazing and it's impressive and we spoke with those folks on the show before and I couldn't agree more with you. On the long arc of technology, things do change over time and so
Starting point is 01:03:35 I just would like to see, are there options? Is there escape hatches? Could we have a heterogeneous? Does it all have to be one thing in the future? Or do we have options as developers? Yeah, I think Codespaces at the end of the day, I'll just say is,
Starting point is 01:03:54 we're running development containers and the cloud, right? That's kind of the core of the product. VS Code today provides the kind of premium path into that. We want to meet developers where they are, no doubt about it, right? There's like premium path into that. We want to meet developers where they are. No doubt about it. Right. There's like no question about that. You know,
Starting point is 01:04:08 I feel very fortunate to work closely with the VS code people and kind of watch them work right in the work that they've done today at night. What's made them special is just their conviction of building something fantastic. So same inside of GitHub, right? Reason I was drawn to GitHub, hold a very high bar for ourselves and just want to ship fantastic product.
Starting point is 01:04:25 If we don't ship fantastic product, we won't win business. The goal is to build the best in class product for the best engineering teams on the planet. Well, Corey, thank you for sharing the story and giving us a preview of the future. I suppose even the now and the future, you know, really. Join us. Yeah, we would love to work with you, like help you, Adam, get your product up and running on Codespaces. Yeah, let's do it. We will entertain that for sure.
Starting point is 01:04:49 We have a whole entire show called Ship It that's really about taking our application to production. I kind of feel like this is somewhat there because it's where a developer meets, go into production, which is actually coding. So I think we'd love to dig deeper into this for sure. So it'd be awesome to make that happen. Let's ship it.
Starting point is 01:05:05 Yeah, Gerhard's been talking about us doing our coding in some sort of cloud setup for a while. And I've always told him, like, man, the cloud's not ready for us, you know? You're going to pry this terminal out of my cold, dead hands. But things change, and I can change too. So that would be fun to dig into that a little bit. I'm totally up for the challenge.
Starting point is 01:05:25 Let's get together and try to ship it. Nice. All right. Corey, thank you so much. It was awesome. Thank you. Thank you. That's it for this special episode with Corey Wilkerson on GitHub Codespaces.
Starting point is 01:05:38 Corey started this journey as a skeptic and didn't think this would be a fruitful journey. Now on the other side of this journey,ora sees Codespaces as the future. The proof? 600 of the 1,000 developers inside GitHub are developing GitHub.com on Codespaces today. And all that friction for new users, that value creation time wasted, and everything else being held back
Starting point is 01:05:58 by the brittle nature of local dev can now be lifted by the promise and future of coding in the cloud at scale. What do you think? Let us know in the comments. I want to give a shout out to a few people behind the scenes on this episode. Jenny Chow, Senior Manager of Corporate Communications at GitHub. She played a key role in helping us shape the narrative for this conversation.
Starting point is 01:06:15 And Kurt Mackey, Co-Founder and CEO of Fly. Kurt is awesome. He's a big supporter of the work we're doing here at Changelog. And if you haven't tried Fly yet, today's a good day to change that. Check them out at fly.io. Thanks again, Kurt, for making this episode interruption-free.
Starting point is 01:06:28 Of course, huge thanks to our awesome partners, Linode, Fastly, and LaunchDarkly. Also, thanks to Breakmaster Cylinder for producing all of our awesome beats. And last but not least, thank you to you for listening to the show.
Starting point is 01:06:37 If you enjoyed the show, tell a friend. We'd love to have them as a listener. Word of mouth is by far the best way for shows like ours to get discovered. That's it. This show's done. We'll see you on the next one. Thank you. Game on

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.