The Changelog: Software Development, Open Source - The Story of Visual Studio Code (Interview)

Episode Date: December 5, 2017

We're back in NYC at Microsoft Connect(); talking about the backstory of Visual Studio Code with Julia Liuson (Corporate Vice President of Visual Studio), Chris Dias (Principal Program Manager of Visu...al Studio and .NET), and PJ Meyer (Product Manager). We talk about the beginnings of the Visual Studio product line, how Microsoft missed the internet, how the community is judging Microsoft and looking at them with a very old lense, how Visual Studio Code evolved from lessons learned with their cloud based editor called Monaco, how they had to radically change to reach developers beyond Windows, and how this open source project is thriving.

Transcript
Discussion (0)
Starting point is 00:00:00 Bandwidth for Changelog is provided by Fastly. Learn more at Fastly.com. And we're hosted on Linode servers. Head to linode.com slash changelog. This episode is brought to you by Auth0. Auth0 makes authentication easy. We love building things that are fun and let's face it, authentication is not always fun or easy to build.
Starting point is 00:00:25 It can be a pain, it can take hours to implement, and sometimes even days. And even after you have it all in place, you have to keep it up to date, keep it secure, and Auth0 makes it super easy and fast to implement real-world authentication and authorization architectures into your apps and APIs. You can allow users to log in however you want, regular username and password, Facebook, Twitter, enterprise ID providers like AD or Office 365, or let them log in without passwords,
Starting point is 00:00:54 just like we do on changelog.com. To get started, grab the SDK for your platform of choice. Add a few lines of code to your project. This can be a mobile app, a website, or even an API. They all need authentication. Sign up for Auth0 and get the free plan or try the enterprise plan for free for 21 days at auth0.io slash the changelog. That's A-U-T-H, the number zero, dot I-O slash the changelog. No credit card required.
Starting point is 00:01:22 Once again, auth0.io slash the changelog, no credit card required. Once again, ozero.io slash the changelog. And by DigitalOcean who just launched Spaces, a beautifully simple object storage service designed for developers who want a simple way to store and serve a vast amount of data, such as hosting web assets, storing user-generated content such as images and large media files, archiving backups in the cloud, and storing logs. Just like you use S3, Spaces has an ecosystem of S3-compatible tools and libraries that can be used to manage your space, and it's available independent of DigitalOcean servers. You don't need to use anything else but just Spaces if you want.
Starting point is 00:02:00 And to make it easy to try for both new and existing digital ocean customers, you can get started today with a free two month trial of spaces by going to do.co slash changelog. And for new customers only, you'll also receive a $10 credit to use for digital ocean droplets or other services. Once again, do.co slashchangelog.
Starting point is 00:02:38 You're listening to the Changelog, a podcast featuring the hackers, leaders, and innovators of open source. I'm Adam Stachowiak, editor-in-chief of Changelog. On today's jared and i are at microsoft connect in new york city talking about the backstory of visual studio with julia lucen chris dyess and pj meyer in part one of the show we talk with julia lucen corporate vice president of visual studio and 26 year veteran of microsoft about the beginnings of the visual studio product line how microsoft missed the internet and how the community is judging them and looking at today's Microsoft with a very old lens. In part two of the show, we talk with Chris Dias,
Starting point is 00:03:11 Principal Program Manager of Visual Studio and.NET, and PJ Meyer, Product Manager, about how Visual Studio Code evolved from lessons learned with their cloud-based editor called Monaco, how they had to radically change to reach developers beyond Windows, and how this open source project is thriving. What is it that you would like to talk about? What's important to you? We talk to developers, we talk to the open source community.
Starting point is 00:03:40 Great. And that's my kind of people. Okay. Because we are one of those very fluent in GitHub and open source people. Yeah. And I would love to talk about it. And the reason is, for example, like, I still feel people are judging us and looking at us with very old lens.
Starting point is 00:03:58 Okay. And I was telling someone, like, I can remember it was three years ago at this very conference in this very studio where we announced we open sourced and made.NET open sourced across platforms. Three years ago, yeah. We did a show on that. Ah. We did.
Starting point is 00:04:16 Great. And we were excited too. Yes. And our audience was like, wait, what? Exactly. But we've been those people that have felt the way you're talking about, but see the new Microsoft. Great.
Starting point is 00:04:28 And I would love for you guys to help me get that word out because I feel like there's still so many people even... It got better this year, but even two years ago, they're like, what? You mean.NET is open source? It's like, what? .NET is cross platform? It's completely, what? Garnet is cross-platform? It's like completely news to them. So I'm trying to figure out
Starting point is 00:04:47 where all of the places these people are hiding and how can we get the message out as broadly as possible. Well, a lot of those people are listening to our podcast, so I think that's a good thing. An interesting place
Starting point is 00:05:02 that I think we could start because according to Wikipedia, which congratulations, you have a Wikipedia page. Is that you? an interesting place that I think we could start because you know according to Wikipedia which congratulations you have a Wikipedia page is that you? it is you I don't know
Starting point is 00:05:12 I haven't even looked did you not know you have a Wikipedia page? someone mentioned to me but never looked okay well you know I looked
Starting point is 00:05:19 I found were you born in Shanghai in 1970? yes I figured it was you because a lot of the information lined up live reveal it even looks accurate somebody from julia's family wrote this about her maybe it's pretty cool right that's that's good yeah yeah it was good for me because i've given many talks and stuff you know and usually do a little intro about my background
Starting point is 00:05:41 before so someone probably captured it, and it's all accurate. Okay, great. Well, that's great. So this will be accurate then because you graduated in 1991 with a bachelor's degree in electrical and computer engineering from Washington, and you started working at Microsoft very soon after. Right away, yeah. So you've been with the company for like 26 years?
Starting point is 00:06:02 25 years. 25 years. And so we've just been tracking this change from the outside, like 26 years, 25 years, 25 years. And so we've just been tracking this change, you know, from the outside, like we said, maybe three or four years, we've seen the opening up of Microsoft, but you've seen it through many different phases. So maybe let's start with you telling us a little bit of your history with the company. And then you can tell us this, this change that you've seen from the inside and your perspective on it and how it all came we'd love to so as you mentioned like i know i joined microsoft in february of 92 as a developer working on microsoft access nice that was before we shipped the first version of microsoft access
Starting point is 00:06:36 and i learned about databases in college from microsoft access was the first little database i learned about it is definitely the desktop database tool of the rage. And even now, I think there's still a set of loyal users of the product. I'm sure there are. And I want to start working on this other tool. I like to call it the worst-named Microsoft product ever. It's Visual InterDev. Visual InterDev.
Starting point is 00:07:03 Okay. Do you remember that product? No. But I agree it's not a very good name. What the product did was it was our first web development tool. We shipped it in like 96, 97. And against ISP, not to be confused with ASP.net, which we shipped much later. We were being called Visual Basic for the web.
Starting point is 00:07:27 That was our first attempt of having a web development tool in the late 90s. I think we shipped the first version in late 96 or early 97 or something. That's when the internet came out. Basically. So 95 was actually when Bill Gates actually had the internet tidal wave memo inside Microsoft. So a lot of different teams started to spun up, started looking like, hey, what should we do about the internet? We didn't miss the internet, I would think, in my opinion. You did miss it?
Starting point is 00:07:58 From a business model perspective, we totally missed it. We didn't create Amazon. We didn't create Facebook. We didn't create Google. All of these really internet business models, even though they all started their business from the Microsoft IE browser, if you may. Right, Internet Explorer.
Starting point is 00:08:12 I mean, for a lot of people, for a lot of people, that was the internet. Yeah, I think we were the enablers. Yeah, I think we enabled people to build these true internet companies, but we didn't really build them. Were you involved in IE? I was preferably involved with IE
Starting point is 00:08:24 because the rendering engine, the HTML rendering engine was also what we used in Visual InterDef to help you design HTML. So we worked, we collaborated with the IE team on those pieces, on those components. Back then the mission statement wasn't like a PC on every desk running Microsoft software or something like that? I think it was, what was the thing? It was a Windows, I think it's a Windows, like it's a PC on every single desktop.
Starting point is 00:08:53 I think that was it, a PC on every single desktop. And the inferred part was running Windows. Running Microsoft software, yeah, exactly. I think that was inferred. And so PC, by saying PC, you're assuming Microsoft. Right, I guess. Definitely implied. In a post-only Microsoft world, it's not, that would make, you're assuming Microsoft. Right. I guess. Definitely implied. In a post-only Microsoft world, it's not. That would make PC makes more sense.
Starting point is 00:09:09 Things change over time. But the mission statement back at that time was that PCs, I mean, it was all Windows. It was all Windows. 98%. But the thing, you know, you asked me what changed, you know, like I have seen. It is very important to realize that in a lot of the Microsoft internal engineering and everything practices was very much aimed at that day and error. If you think about even in the 97, let's just say 97 kind of timeframe, 97 also happened
Starting point is 00:09:39 to be when we first had the first Visual Studio product, when we take Visual Basic, Visual C++, Visual Intercept, Visual J++, when we take Visual Basic, Visual C++, Visual Intercept, Visual J++, made that into Visual Studio, right? That's why it's called Visual Studio back then. Okay, because you were just putting all those together. Right, and then that was, so we launched Visual Studio like 20 years ago, and this year is also the 20-year birthday
Starting point is 00:09:57 for Visual Studio. And have you been on Visual Studio the entire time? The entire time. And then if I think about what delivering software looks like back then, and if you think about back in 97, 98, where would you go buy something like Visual Studio or Microsoft Office? You'd go to Egghead. Remember those places?
Starting point is 00:10:14 Or Best Buy. Or Best Buy. I don't even remember. Was there Best Buy? In 97? I don't know. I feel like there was. Barely.
Starting point is 00:10:22 And you'd go buy a physical box. Right. Right. That's why we called it box software. Right. And what was the... If you think about engineering structure for Microsoft, we have a development team, which I was on, and then we had a test team.
Starting point is 00:10:36 Then we had a program management team. And the test team plays a very important role back then because their job is to prevent what we call recall class bugs. And what is a recall class bug? It's that the bug is so bad, the physical boxes has to come back to Microsoft, which has been shipped all over the world, has to come back to Microsoft and get rebuilt. That is a recall class bug. That's back when software quality mattered. Well, I think that we have different ways to think about it, but that actually happened to us before.
Starting point is 00:11:07 You can imagine the cost. Oh, man. Whose head rolls when that happens? Does the head roll? I don't know if the physical head rolls, but I will say that the... Hopefully a metaphorical head rolls.
Starting point is 00:11:22 The test manager of the product feels very responsible if that happens. The bug stops there. Because that is where the bug stops. Wow. And software development was so antiquated then in comparison to today's world. Right. Would you agree? Well, because the infrastructure wasn't there.
Starting point is 00:11:40 So you optimize for different things. So at that time, if you had any questions or problems with your software, you will call Microsoft. There's no internet, right? 97, 98. And you will call our product support people on the phone, try to go describe your problem. And it will be like, oh, we're trying to go help you sort it out, et cetera.
Starting point is 00:12:00 But even if I figure out a little issue that I had, I don't really have a way as Microsoft to give you a patch. Right. There's just no such mechanism allowed or, you know, it was really enabled. The only way to get them something would be to mail that to them. Well, even this mail, like, you know, like you have like the installer doesn't support a patch. Right. Right.
Starting point is 00:12:19 The software doesn't know how to patch. Like you need to have someone in your IT to patch it for you. It's super complicated. Very terrible and so think about like the reason i think about that day and age is because that particular set of development practices was working well for us in that day and age and you know it lasted for the next really 10-15 years it kind of worked that way and then you know like it just didn't work because it's kind of like the land phone to the cell phone transition you know it's like these big huge like the internet transition says like that is no longer how you should ship software right and
Starting point is 00:12:54 your your customers expectation changed and the velocity changed because back then it took us three years to ship software and that was okay. That was already fast enough. They were named by years. They were named by years. And people like to hold on to old software. Where you tell them it's not secure, don't run it, it's terrible. And you have to charge for updates, sometimes large amounts for the update because it's such an expensive process. It's an expensive process.
Starting point is 00:13:22 You have the entire development team, the business model back then was to sell you to the latest version, etc. So now you kind of look back to say, wow, that was great for Microsoft back in 1997. And the entire business and process engineering practices was designed for that day and age. Again, that kind of infrastructure. But fast forward, for us the transformation really started after we shipped Visual Studio 2012 which is five years ago and that version of Visual Studio is also interesting because that was the version where we did not get to decide our own shipping schedule. Our schedule was tied with Windows 8. So it's gonna ship no
Starting point is 00:14:04 matter what. It was a major release because we had to do so much work to support Windows 8 development paradigm. That was, you know, a lot of challenges for our team to tackle. And after we come from shipping VS 2012, you take a look, we're looking ahead, and there's a couple of things become very clear. We can no longer ship in three-year product cycles. We're not going to survive if we ship three years because the technology is changing so fast and so quickly.
Starting point is 00:14:37 So we really started, we made a top-down decision that we're going to have quarterly updates and that's going to have new capabilities and new features. This is in 2012, this decision? Yeah. So our first quarterly update was VS 2012 update one. And it was a very traumatic thing for the team because the entire engineering process was not set up to go do this. And I want to give you a metaphor.
Starting point is 00:15:05 Imagine like in the old days, people buy encyclopedias, right? They're beautifully bounded, A to Z. You buy a whole thing, you stuff your whole bookshelf. And what we're trying to do is like, don't buy the whole set. I just want to go insert a chapter in this one book. Or I want to go rip a few pages out. I want to go cross a word out and replace with a different word. What we wanted to do is incremental
Starting point is 00:15:25 updates to the whole Enchiridion Encyclopedia versus the whole big Encyclopedia. But our machinery only knows how to produce this whole big thing once every three years. That's what the factory, if you may, how our operationalization was designed
Starting point is 00:15:42 for. So it was a major transformation that we have to go through. And that transformation happened to every single major Microsoft product line to say, wow, how we really take that huge box software mentality and think about every piece of software we ship in Microsoft as a service, which you make incremental updates quickly. And you really observe and respond to customer feedback quickly and that's the you know that's really the pursuit that we have been on interesting so that that transition seems to correlate with what we opened with which is the opening up of the software as well because you
Starting point is 00:16:18 could have continued you could have changed all your machinery but still shipped proprietary binaries that's right but you didn't do. You changed the machinery of the way you build the software to be incremental. But you also, it seemed like one by one or sometimes five by five, these different individual products or like.NET Core and then more of.NET and so on and so forth, you just opened up the software itself. So speak to that decision and how it played out. Yeah, and that is another great question because you're exactly right. Changing the software process doesn't necessarily change the deliverable. And the core strategic pivot we made is that Visual Studio was really
Starting point is 00:16:54 for a long time, and that's the old meme we're talking about. People think about it as a product that only runs on Windows and only supports Microsoft platforms. That was true for many years. And the strategic pivot we actually decide on is that we want to, and it's very much tied with the new Microsoft mission when Satya becomes CEO, right? We want to empower every person, every organization to achieve more. And how that come down to us in the developer division space
Starting point is 00:17:21 is that we want to really empower every developer and every development team to achieve more. And if we're only helping people running on Windows and targeting Microsoft platform, that's very far from every developer and every development team. And that's when we started pivot to the, I think that was the first slide Scott showed.
Starting point is 00:17:40 And we've been showing that slide for the last three, four years, which is our any developer, any app, any platform. And that was a core strategic pivot we have made. And everything really ties with that strategic pivot in terms of, well, how do we engage with all the developers out there? And what are the meaningful engagement looks like? And this is where we start, you know, start doing iOS Android development, helping with the mobile side, and we look at what people really need in the cloud space, in the mobile space,
Starting point is 00:18:09 and we take Node.NET, made it open source and cross-platform, and it's become a fantastic way for customers to share code between their Unity gaming to their cloud backend to their website to their mobile apps. It's just really the best programming language that can share common business logic. And today, Miguel showed you how you can take the core business logic written in C-sharp and then embed that into your iOS and Android app. So that capability of us looking, understanding developers' needs and open sourcing our core
Starting point is 00:18:43 framework capability, and really allow this breadth of scenario that opened up. That has been super powerful for us. And then with that, not to mention, we also started to develop Visual Studio Code. That was exactly what we were going to lead to next, because you have this now bifurcation of Visual Studio, where you have the established 20-year-old project that millions of people are using, but then brand new, open, different, I mean, Greenfield, new editor, right? Yeah, so first of all, when we start to do that
Starting point is 00:19:19 is that we realize that there are different types of developers. When I start talking to a lot of developers, there are a lot of different needs. And I always ask people, do you use Microsoft Word? Usually I get a nod. Do you use OneNote? I also get a nod. Do you use Notepad? I again get a nod,
Starting point is 00:19:35 because personally I use O3. And I'm not really confused about when I'm going to use which one. And you can say they're all for editing words, but I use them, and a lot of people use them for different scenarios. The power of the IDE is that there's a whole set of... It's particularly powerful when you have very complex multi-step processes that will just simplify and automate it for you.
Starting point is 00:20:01 That is actually one of the biggest powers of the IDE. Think about, for example, what we demoed on stage in terms of mobile development. You're developing a bunch of code, we're compiling it, and then we're actually patching that into the device or emulator and setting up the debugger with it. We demoed very similar scenarios for Docker's development against our Azure AKS, Azure Kubernetes service, and from Visual Studio IDE. It's like a simple, almost F5 gesture, and all of that workflow is tightened for you. But, I mean, a lot of developers love that.
Starting point is 00:20:35 But there are also developers, for some scenario, they're like, I don't want to use your workflow. I want to go construct my own workflow. So I just want the code editor to go do a thing for me and I can go assemble my own workflow for me. That also happens. And so we're like, you know what? In that case, Visual Studio Code is great for you. You define and you decide what your workflow is. It's not going to pack these things up for you. So you have the full freedom to go do and write whatever code you want to go write.
Starting point is 00:21:06 And it provides a slight IntelliSense to help you, it has the slight capability of debugging to help you. So it's not going to decide your workflow for you. So we see those two things as fundamental differences in how developers approach certain scenarios. And so we think it's very valuable that we provide both of those to enable those scenarios. And so we think it's very valuable that we provide both of those to enable those scenarios. Well Visual Studio Code has been on fire lately. Everybody talks about it and is trying it and switching it.
Starting point is 00:21:34 It had a bad name, or not so much a name generally, but it seems like it's among the open source crowd. More and more people talk about it, and not just talk about it but also use it and be like, this is the best for this this or this is the best for that. And it's scenarios where they have workflows or it's scenarios where they don't really have workflows. And it's kind of a good fit for many. One thing that I always wonder with decisions like this
Starting point is 00:21:53 coming out of a large corporation like Microsoft where it's this new direction we're going to continue with Visual Studio we're also going to have Visual Studio Code. I wonder how that idea percolated and then who championed it and how it became,
Starting point is 00:22:08 as vice president of the Visual Studio section of Microsoft, surely you know, how did that idea come out? Did you think of it one day? Was it somebody on your team? Or like, hey, let's do VS Code alongside Visual Studio and run these things in parallel. Well, the decision, like most things in Microsoft, wasn't no one person's idea.
Starting point is 00:22:32 It's actually a lot of people have been discussing scenarios like this for a while. If you look at the code heritage of VS Code, a lot of that was actually in our monocle, was the online development environment, which Eric Gamma, who is our technical fellow, who is overseeing the project. Our initial thing was really when we look at it to say, hey, do we need to have a fully in the browser experiences? And that's actually where Eric's team was in the very beginning started working through on that.
Starting point is 00:22:56 And our learning is that we actually have the monocle editor embedded in a number of different scenarios. And what we learned is that developers really wanted a local, on their Mac or PC, on their own desktop kind of scenario, which is really not surprising because we have a lot of, Microsoft has 65,000 developers. That's kind of coding every day. And I remember we had this conversation. I remember Anders was there and eric was there and
Starting point is 00:23:25 you know a bunch of other people and we're like why don't we just make a local editor and we can it's an experiment we can see how the community you know thinks about it whether it's going to catch on or not and we have between eric gamma who obviously was one of the key folks behind eclipse back in ibm and um all of the vs folks we haveclipse back in IBM and all of the VS folks we have. We have many, many, many decades of experience building IDEs. So we know what are the key workflows and things like that, what are the thoughts. So we positioned it to be what we call a lightweight,
Starting point is 00:23:57 code-optimized editor. That was the key positioning. And we're like, that is the area we're really going to focus on, and we're going to have a very flexible extension system, and the way we design extension is going to be such that it can never interfere with the main editor experience, which is a core lesson that we have learned from both Eclipse and Visual Studio. I cannot necessarily say the same thing about the Visual Studio extension system or the
Starting point is 00:24:20 Eclipse extension system. We have taken these lessons that we have collectively learned and applied it to the design of VS Code. And we initially were like, hey, let's try it out to see if it's actually something that's going to resonate with the market and to see if there's actually a developer need. And what we learned was, yes, there is one. And not to mention that it's always great when our strategy
Starting point is 00:24:48 of really serving all the developers came married very well with identifying good pain points and actually deliver a good solution. When those things come together, it's been super powerful. That's got to be exciting. It is very exciting.
Starting point is 00:25:01 And I think that as much as it's great for developers, one of the key things we're really hoping to show developers is that Microsoft is different. I mean, we can do marketing event all day long, but there's power in people using an open-source, cross-platform Microsoft code editor, code visual studio, code every day. And I think it's one of those things we are hoping is to,
Starting point is 00:25:26 it will help developers worldwide see us in new light. Can you speak to that change? Maybe since it's out there now, more and more people are using it. How has the feedback loop, so to speak, of you putting it out there, having this hypothesis that this will happen and it does begin to happen? Well, I think that the thing is that the first thing I will say that the hypothesis is like, well, really the reaction is that we always, I will say that, you know, as Microsoft people, we think we have pretty good tech, but I think that, you know, we made in the
Starting point is 00:25:58 past, we're more closed. Now when we come out and open, what we really didn't know is whether the community will welcome us, will actually truly embrace. That was the question in our mind. There's really not that much question that we'll have great tech, that will actually be a good product. And once we put it on GitHub, we were just amazed by how many contributors, they're telling their logging issues, they're working with us out there in the community.
Starting point is 00:26:23 And Visual Studio Code, in GitHub's latest ranking, we are number one in terms of contributors. We are double, almost double, the next project, which is Facebook's React Native in terms of contributors. That's just totally amazing. And there's lots and lots of active discussions going on in VS Code GitHub repos. And it completely changed the way of how our team works.
Starting point is 00:26:47 Because before we actually are engaging with the community, like when the team was working internally before the launch, we work on a monthly sprint schedule for that particular team. And once we started to open source on GitHub, the community feedback come in, and the team realized they need to go spend up to 30%, 40% of their time interacting with community
Starting point is 00:27:10 on GitHub, triaging issues, respond to requests, and address any concerns. You have to be active on the community in order to have that kind of level interaction. One of the phrase I increasingly say is that we're not only customer obsessed, which we are now, we're also community obsessed. Because we really view the community as extension of our team. And that is true for Visual Studio Code,
Starting point is 00:27:37 and that is also true for.NET project we have, or TypeScript, all of these main GitHub repos that we actually drive. So do you see the analogy of Microsoft Word, it would be your IDE, and then your notepad would be your VS Code, and they serve different niches, different contexts, right? Do you see that as lasting 5, 10 years down the road, them running parallel, or do you see VS Code as eventually becoming
Starting point is 00:28:05 the one true editor as it usurps its established product? I think that one of the things we have learned in the last five years as well is that we used to do five-year planning. We no longer do that because the tech world changes so fast. Five years ago, can you imagine we're here talking about these things
Starting point is 00:28:26 and talking about Kubernetes and containers? It's a different world. It's a different world. That's the best non-answer I've gotten in a long time. That's a very good non-answer. Because you're right. The answer is we don't know. We don't plan five, ten years out.
Starting point is 00:28:40 We really don't anymore. And if we do, then that plan is irrelevant. It's irrelevant by the time the five years hits. Because who knows what's going to happen next year. It's just a bad guess. Or a good guess. It could be good. You know what?
Starting point is 00:28:53 If I'm going to bet on it, anything I guess right now, it's going to be wrong. Right. It's just going to be wrong. I mean, like, you know, again, you know, like, if you go back, think back in 2012, can you imagine the world, not just about what happened to Microsoft, but can you imagine all the technology advances
Starting point is 00:29:07 that we're seeing today? What's going on with AI? What's going on with machine learning? What's going on with containers? You just talk about technical advances. I was like, no, I absolutely could not. So whatever I guess will be wrong. That much I know.
Starting point is 00:29:22 If I look five years up. So I think that the most I personally think the best way for us to really keep you know keep going forward is to have a very tight engagement loop constantly hear our customers feedback right understand in the new world what are the new pain points our customers are experiencing and continue to provide value to our customers like that's continue to provide value to our customers like that's really quickly right that's actually the way to kind of keep moving forward with the industry we're creating new technologies other companies creating new technology the entire
Starting point is 00:29:54 industry is moving up very fast and we just have to go keep going you know with that flow this episode is brought to you by our friends at TopTal, the best place to work as a freelancer or hire the top 3% of freelance talent for developers, designers, and finance experts. In this segment, I'm talking with Jeff Mazur. My name is Jeff Mazur, and I'm a TopTal finance expert. And Jeff has a pretty awesome background for a freelancer. So I asked Jeff to share what differentiates TopTile as a global talent network and the process he had to go through to ensure he could be trusted as a finance expert for TopTao. The differentiator I see between TopTao and some of the organizations that are comparable or try to offer a similar type of service is that the people who are part of TopTao have really gone through pretty extensive screens. So in my case, for example,
Starting point is 00:31:21 I probably spent 20 hours of preparation and conversation and interviewing to make sure that I was the right fit for TopTal. So what I offer and what other TopTal finance experts, you'd come across thousands of people. I mean, given the frothiness of the market and the level of interest in the market, you know, everyone's a finance expert right now in ICOs. But in the case of TopTel, what they've really done is that they winnowed that huge group out to come up with people who really are experts in the field. So if you're looking to freelance or you're looking to gain access to a network of top industry experts in development, design, or finance, head to TopTal.com and tell them Adam from the Change Law sent you. That's T-O-P-T-A-L.com. And for those out there wanting a more personal introduction, email me, Adam at ChangeLaw.com. And for those out there wanting a more personal introduction, email me, adam at changelog.com.
Starting point is 00:32:27 And by GoCD. GoCD is an open source continuous delivery server built by ThoughtWorks. It provides continuous delivery out of the box with its built-in pipelines, advanced traceability, and value stream visualization. With GoCD, you can easily model, orchestrate, and visualize complex workflows from end to end.
Starting point is 00:32:46 It supports modern infrastructure with Elastic On-Demand Agents and cloud deployments. And their plug-in ecosystem ensures GoCD will work well in your unique environment. To learn more about GoCD, visit gocd.org. It's open source and free to use. And there's also professional support and enterprise add-ons available from ThoughtWorks. Once again, go cd.org slash changelog. You've been there from the beginning. I have been there.
Starting point is 00:33:24 Take us to the beginning. Before VS Code was VS Code. There's a previous name? There's a previous, well, it's called Visual Studio Online Monaco. Windows Online Monaco. No, Visual Studio Online, in quotes, Monaco. Okay. So what this, well, so I'll take you back to the very beginning. It started out with an experiment to see if we could
Starting point is 00:33:46 build an HTML and JavaScript-based code editor that could be hosted in the browser. I think Chrome had just been. What year is this? Six years ago, so 2000. 2001. So I think Chrome at that time just came out with the notion of web workers, so being able to run processes, which then enabled us to be able to do things
Starting point is 00:34:07 like have IntelliSense and errors and things like that. So Eric Gamma had basically started on that project. That was his first project at Microsoft. And built that up. We needed some way to dog food the editor. The correct term is champagne the editor. Champagne, is that what it is now? Yeah, you don't to dog food the editor so the correct term is champagne the editor champagne is that what it is yeah you don't say dog food anymore think how weird it is our own dog food really how about this we drink our own champagne it implies good stuff no matter
Starting point is 00:34:35 what just think about it maybe try it on for size i'm gonna have to work it through a couple times but i like it so we champagned um the editor by building a little bit of a workbench around the editor that we could then develop the editor with. So it was like a little bit explorer and editor and source code control I think we built in there. But it really was done as a little node server that ran locally on the machine. So you HTTP whatever and you get this little workbench up, full access to all your files for the editor.
Starting point is 00:35:07 And we build the editor and champagne the editor at the same time. And so we built out this editor, which actually was pretty popular across Microsoft. Like if you go to OneDrive and you look at source code, that's that's the editor. Azure, any place you go in there and look at source code, that's the Monaco editor. It's the same editor that's in VS Code itself. If you go to Edge and browser, and even maybe IE, I don't know, the F12 tools, in Windows and look at source code, that's the Monaco editor.
Starting point is 00:35:42 It's a bunch of other places. So that got pretty popular. And as we did it, we built more and more of this workbench around the editors. We had this locally hosted development environment, which since it was running on Node and it was an HTML and JavaScript thing, it could easily be moved up to the cloud. So we kind of looked at what's the next step
Starting point is 00:35:58 from a code editor, like, well, we want to develop a fuller web-based app. And Azure websites and all that stuff are starting to come online. And so what we decided to do is say, hey, can we host this workbench in Azure so that you could do live editing of your websites straight in the portal? And so we said, yeah, let's do that. We kind of brought that up online, which was fairly easy because of the whole architecture. And we branded that or named that Visual Studio Online, quotes, Monaco.
Starting point is 00:36:30 So that's where it originated from. And then 2001. No, 11. By 2011 is when we started the editor. And probably it was 2013. Oh, yeah. 2001. No, it wasn't around 2001.
Starting point is 00:36:46 The space honestly. Yeah, yeah. So probably 2012 or 2013 when we did Visual Studio Online. And that was an interesting project. The thing that was difficult about it was that it didn't really enable a bunch of developers to do anything because you had, there were so many things that you had to do before you got there, right? Like, you had to have a subscription you had there were so many things that you had to do before you got there right like had to have a subscription had to have a website had to have this that you know pull out the magic whatever and then
Starting point is 00:37:11 you could use this online hosted tool but it was pretty cool like everybody you know there's a big wave of online hosted tooling that was going on around that time like cloud nine I can't remember all the... Ace? Ace was the editor that Cloud9 used. Cloud9 may have used Ace. There was two of them, Codemirror and Ace. Those were the two editors. And then Monaco was the third one.
Starting point is 00:37:36 Okay. I didn't recall that time period. Those things were never that sticky from a user's perspective. No. In the browser, you mean? Yeah. Browser-based tools were never... sticky from a user's perspective. No. In the browser, you mean? Yeah. Browser-based tools were never.
Starting point is 00:37:48 It was a big sell. It was like, you know, push, underpowered notebook, whatever, ID in the cloud. And Office had a suite of tools that actually work in the browser fairly well. There's a lot of things you could do and see a natural progression. You've got a desktop application, which would have been Visual Studio, and then you've got browser-based tools. But you're right. The challenge with those is that it was a bunch of challenges. The biggest one that we saw was that it was great. You've got your development tool in the browser,
Starting point is 00:38:18 but all your other tools are on your machine. And so there's no connection between the code that you're working on in the browser and, oh, I need to run this other tool at the same time. How do you bridge that gap? So it was an all-in scenario. You had to either go all-in on the cloud. Exactly.
Starting point is 00:38:36 And people aren't all-in on the cloud for building tools. Developer tools. There's latency. Network interruptions. Yeah. Requires an interconnection. Yeah, you can't work offline. Can't go under tunnels and stuff like that.
Starting point is 00:38:47 Work your New York City. There are cool aspects to it, right? Like the idea where you could go and just spin up an environment instantly and not have to provision anything on your machine. That's a cool aspect. It's great for educational means. I used to teach web development, and it's like we just spin up in a browser, and there's no prereqs.
Starting point is 00:39:03 It doesn't matter what operating system you're on. But when it came time for me to actually write a browser and there's no prereqs. It doesn't matter what operating system you're on. Yeah. But when it came time for me to actually write code, I'm not going to use that. Yeah, from an educational scenario where you've got this box that you're working in, it works great. So then what we decided to do, you know, it was kind of popular. But we decided, well, let's try to do, what we saw was we're actually getting a lot of people that were coming from non Windows machines using it like There's an audience out there that we could go and talk to that we today with the suite of tools Which was Visual Studio at the time we had nothing that we could go and say hey you Cool guy using a Mac sitting at Starbucks working on your web app
Starting point is 00:39:39 If I'm from Microsoft, I can't talk to you. I have nothing like I have to say Close your close your Mac. Right. Get rid of your operating system. Get rid of your tools. It's two worlds. Yeah. And be like, all right, go away.
Starting point is 00:39:52 At that point, you're like, I'm just drinking my coffee, man. Yeah, yeah. Get out. Get out of my face. So we decided to pivot and see if we could do a local client-based tool. Again, since we had this node infrastructure everything we moved it over to what was it called before it was electron there was electron before that was called atom shell but then there was the the before atom shell there was another um
Starting point is 00:40:16 tool that let you host node apps on the desktop so yeah so that was kind of the genesis of the whole thing um but then once we had that tool, we could say, all right, actually we have something to talk to people about. And we decided that we couldn't just come up with yet another code editor. Like, okay, there's Sublime, there's Notepad++, there's Atom, all these bunch of code editors out there. We have to do something different. So what we decided to do is we called it
Starting point is 00:40:42 redefining what the code editor should be in the modern world for a modern developer. And that was really about great editing experiences out of the box and great debugging experiences out of the box. So Visual Studio has always sort of had this strong debugging lineage, right? It's like, hey, what's the best debugger? A lot of people say Visual Studio. So what we want to do is kind of take the best of that, the best of the editing, bring that to the code editor space, and basically create our own place where we could say, you know what, we've got a tool that you can use.
Starting point is 00:41:13 It's going to be a better editing experience. You're going to get debugging. But it fits in with the rest of the stuff you're doing. You don't have to drop everything and come over to our stuff. Try it out. If it works for you, great. If it doesn't, try again in six months when we you know bridge and release features yeah yeah and uh so that was kind of the genesis of it and
Starting point is 00:41:30 and really that's that's that's the way it progressed right we had people kick the tires from it right away um and they used it for a short amount of time said hey it's missing xyz abc and it's not open source uh maybe we'll check in with you again in the future and so we just cranked away at it right with this whole good backlog of things to do and um and we still do it today right it's every month very public roadmap and all that stuff we're just constantly churning out you know required feature after required features so that people can actually just pick it up and use it so So, yeah, I mean, and then it's been fairly successful. What would be the tent pole features for somebody who's,
Starting point is 00:42:09 so as we said, like our audience and people in our community are very interested in it, people are trying it. It's won over a lot of people. We both downloaded it. We both used it. I'm still stuck on Sublime for reasons that I would love to talk to you, maybe offline or maybe with it online. Yeah, you can talk to me online. I'm happy to. Very impressed for reasons that I would love to talk to you maybe offline or maybe I'll do it online. Yeah, you can talk to me online. I'm happy to.
Starting point is 00:42:27 Very impressed. Everybody's very impressed. What are the selling points to, say, a Vim user or an Atom user? I know these are all very different users, but maybe, PJ, this is a good place for you to hop in. One aspect that seems like is there's batteries included to it in terms of the setup experience. But what do you guys consider when you're like, okay, here's what VS Code has going for it right out of the box today. What are its advantages that would compel somebody to switch or even just try it?
Starting point is 00:42:55 Yeah, well, I mean, like Chris said, really strong editing and debugging experiences. Out-of-the-box support for Node, JavaScript, TypeScript, that primarily is a function of that's the language that VS Code itself is written in, but expanding it to other languages like Python, like Java's recent one, Go. We've spoken with Rami in the past.
Starting point is 00:43:33 But that debugging experience that a lot of Visual Studio users have known and are somewhat used to, but we've been able to bring that to this VS Code package that can be delivered on any operating system. I think also a big component of it is, honestly, the openness and transparency of the VS Code team with the community. So I think a number of people that have been converts from other tools have been because they've been able to interact with members of the VS Code team on GitHub through issues or pull requests or even over Twitter. I think that's something that the team prides themselves on quite a bit is how open and how engaged they are
Starting point is 00:44:19 with the community of not just developers that use VS Code, but developers that use other tools. Yeah, I'll echo. To me, it's editing and debugging. So, like I say, you're a JavaScript guy, and you're using Sublime. You probably have a bunch of packages that you've figured out that you kind of like and recommend it from other people. It may or may not provide you with sort of a completion experience for plain old JavaScript. Yeah. So you open up in VS Code, right? You've got a folder, open it up, express application, come in, type in, you know, app.
Starting point is 00:44:51 You'll get statement completion, IntelliSense, overloads, all sorts of stuff about the express object without having to do anything. What'll happen is, since we use TypeScript as the language server for JavaScript, it does a whole bunch of work for us in analyzing the JavaScript, but it also goes and actually downloads TypeScript definition files, which basically people write TypeScript files which define or almost type the shape of regular old JavaScript libraries.
Starting point is 00:45:22 That's the coolest thing I learned today is that, to be clear, you don't have to be writing TypeScript yourself. You're writing your regular JavaScript, but in the background, what do you say, it's the language server? So I guess, yeah, you want to explain what that is? The language server? Go ahead. So basically what happens is, you know,
Starting point is 00:45:37 you've got your presentation of the source code, right? And we use TextMate grammar to syntax colorize, right? It's kind of standard across all editors. But when you want to do IntelliSense or object browsing, you kind of need a language server which will effectively offer up an AST and send that back over to VS Code. And so there's a whole spectrum of support for languages and extensions for VS Code, and the ones that are the best, like JavaScript or TypeScript or Python or Go, There's a whole spectrum of support for languages and extensions for VS Code.
Starting point is 00:46:09 And the ones that are the best, like JavaScript or TypeScript or Python or Go, all have this language server that runs basically in another process. It's usually written in the language that it's running in, which is cool, right? Because if you're going to do Python, you probably have a Python machine. But it's smart enough to give you all that semantic information about your source file. So for JavaScript, we use the TypeScript compiler. We just spin that thing up because it basically runs as JavaScript. Right. And it's smart enough, gives you all completions,
Starting point is 00:46:33 all this, everything that you need. There is warnings, but as far as you're concerned, from as a JavaScript guy, who cares? It's just there. Seamless to you. Yeah, it just gives you. But it gives you all the benefits of using it. I mean, not all the benefits of using it.
Starting point is 00:46:45 I mean, not all the benefits of writing in TypeScript. You get a good amount. A good amount of free... Yeah, and more and more come online every month with TypeScript. But I think there's two components there, which is, one is bringing the TypeScript to writing JavaScript and VS Code is what gives you the ability to write var x equals some string. Then when you call in x dot, you get string completions, not just every completion that it could possibly be because it's JavaScript and you're not sure. Right, it's all that. But where some of the TypeScript definitions come in is understanding of Node, understanding of Angular.
Starting point is 00:47:28 So we can sort of go in the next step in, you know, why we say IntelliSense necessarily instead of autocomplete. Yeah, there's thousands of TypeScript definition files for all the popular Node packages or JavaScript packages that are out there. The other thing I wanted to note on this point was, I just forgot what it was. It was coming to me, sorry. Also, let's focus in on the debugging aspects. So when I think about IDEs and text editors, I think of like... Oh, wait, can I go back to what I remembered?
Starting point is 00:47:59 No, I'm just kidding, go ahead. All right, so the other thing about TypeScript and JavaScript, like, it is, you can do sort of like a single file, you know, var x equals some string and go x and give you like, oh, I recognize that's a string, right, parse, you can do that. But with TypeScript, it works actually cross file. All the files and folders in your workspace,
Starting point is 00:48:18 you can sort of say, here's the universe of things. So then I get completions against things that are in other files. As long as they're in the same project or folder. Yeah, and you can even go so far as put a JSON file in the folder to say, here's what my workspace looks like. Here's what my project looks like. Include these files.
Starting point is 00:48:36 Exclude these files. This is how I want the compiler to run against and configure it quite a bit. But by default, it just happens. So, sorry. That's all right. If I didn't jump in there, I would have lost my mind. Very good. No problem.
Starting point is 00:48:49 What was I talking about? Debugging. Debugging. I look at text editors and IDEs very differently because I don't expect debugging from a text editor. They usually have limited debugging. Some of them have, you know, like I'm used to a command line debugger. I'm more of a,
Starting point is 00:49:06 what I call a puts debugger or I don't, you know, trace debugger, which is the person who's putting the print statements in. Um, so I'm, you know, not a good developer. We find out there's lots of us who just,
Starting point is 00:49:14 you know, yeah, we had this conversation logs. Yeah. I can't remember. We had this conversation. Firefox, not Firefox,
Starting point is 00:49:20 but a Mozilla debugger. Yeah. The debugger inside the Firefox. That's right. Um, projects.ger inside the Firefox DevTools project. So that being said, I watch other people do some debugging, and I see the value. I see the stuff that you demoed today, and that's what I'd like you to go into.
Starting point is 00:49:40 Give us the real juicy, because for me it has to be a killer feature for me to be like, all right, I'm going to start using this and the debugger in my life where I'm ingrained to just throw some console logs and see what happens. Talk to us about the debugger inside VS Code and some of the stuff you show with the live shared debugging, like this craziness
Starting point is 00:49:58 that I think people would be interested to try, even if they're not debugger people. Yeah, so I should say console.log is just fine. Everybody does it, right? Oh yeah. But I think the biggest thing for me when debugging, right, so once you press F5 the debugger spins up, the biggest thing for me is that it's easy to set a breakpoint.
Starting point is 00:50:22 I don't have to plow through oodles of console.log output to figure out where it is that something is happening. Okay, this is the general area, hit a breakpoint, and then I get an immediate window that comes up, or REPL, and I can come in and evaluate expressions right there. So I can start to understand what x is, what y is, and figure out where they are.
Starting point is 00:50:44 Inspecting values is just that much faster. You don't have to litter your code with console.logs. You don't have to take it out. You don't have to deal with all the output that happens. But still, at times, console.log is still a very useful thing, so I'm not saying that it completely replaces it. And, of course, you get call stack. You get watch windows and all sorts of goodness.
Starting point is 00:51:04 I think all of those extra things. So I should preface it with I do just trace statements, but I'll often use kind of what I call weak debuggers, like a pry tool. Like in Ruby there's a gem called pry. It's a stop the world type of a thing, and it gives you the REPL. But it doesn't provide the call stack. And you can dig in for those things, but you're not seeing frames here and you don't have a list of locals.
Starting point is 00:51:29 There's just less Chrome around it. What we try to do is strike this balance between the power of the debugger and what we present in the UI. So it's not... It's overwhelming. Yeah, so it's not overwhelming. We try to not be overwhelming in VS Code.
Starting point is 00:51:47 We actually try to make it so that people that write debuggers can actually contribute things back to the explorer on the left-hand side. So for a particular language, if there's something that's really useful for that language, they can contribute it. But everybody is not then bombarded with that UI. So we try to make it pluggable for the debuggers. The shared debugging stuff we showed today was actually really cool because, I mean the scenario was really like, hey, can you come over here and look at this?
Starting point is 00:52:17 Help me debug this thing. And basically you sit there and you build step, step, step, step. But if you're in another room, another place, be able to let you do it. So this really struck me. I know it's worth it. This is not screen sharing.
Starting point is 00:52:30 It is not screen sharing. It's sharing of the debug session and the data and the breakpoints and the instruction pointer, call stack, everything. And the whole workspace. So it's not just one file.
Starting point is 00:52:44 It's not just what's active in your window right now. It's the whole workspace that you currently have. Collaborative on the same session or what do you call it? Yes, collaborative on the same editing and debug session, which is really cool. And it really struck me, right? Like there's always this time when you have a feature that comes online
Starting point is 00:53:02 and you're like, okay, I get it, right? Or like, oh, I can no longer live without that. And quite honestly, two weeks ago, we were preparing these demos, right? And there was another, like the team that does the live share was getting their part done and we were bringing the two things together for the demo. And I was running into a problem with the Docker extension that I demoed today, and it was pretty deep in the bowels of VS Code where the exception was getting thrown.
Starting point is 00:53:35 And I was sort of in a panic, and I'm like, hey, can somebody help me debug this? And so one of the guys, half the team's in Switzerland, one of the guys said, hey, I'll stay on the phone call with you and we'll of the guys half the teams in switzerland one of the guys said hey i'll stay on the phone call with you and we'll debug the process we'll debug it after we finish this other meeting i'm like cool so i screen share with him and he's like okay put a break point here he's like oh wait no you close the file open that file back up again yeah okay all right no put okay step step step over step nope step into that one all right let's restart
Starting point is 00:54:05 like it's just this whole like him guiding me on what to do right plus the latency over the sea and the latency and it was just a huge pain and then as we started to build up the scenario and stuff and i'm like i just kept thinking if only alex and i had this two weeks ago it would have been a game changer and That was, to me, the moment where I went, oh my god, I get it. I kind of feel like shared editing is a little bit
Starting point is 00:54:33 of a... How often are you two going to write the same code together in the same file? There's a lot of people that practice pair programming. In that case, I think it makes a lot of sense. I agree. In many many cases it seems like a like a good marketing thing to say it's live collaborative editing and it's like we've all done that with docs but you know is the real value
Starting point is 00:54:57 there with code i think if pair programmers probably it is but with lots but for the debugging was the thing that really got and it totally sold totally sold you. Yeah, right then and there. I was like, okay, got it. This is it. And so, I mean, that's the thing that was really cool, I think, about the Live Share thing is the fact that it's the workspace and literally there is no node on that other machine. And as part of this demo,
Starting point is 00:55:20 we actually went through this whole process where we were debugging the web app running in a Docker container on my machine. Because you can basically attach to a running Docker container, set breakpoints, and debug the code that's in there. And so we were sharing... It's like next level stuff. Yeah. Because the other guy, the other person on their site, all they need is the editor.
Starting point is 00:55:41 They're connecting to your session, so they don't have dependency. They don't need any of that stuff. So we were actually... Or VS Code. Like, it's not even necessarily... They don't need to have VS Code. They can have... I mean, Amanda had Visual Studio 2017,
Starting point is 00:55:53 so Chris is going from VS Code on a Mac to Visual Studio on a PC. So what does that session data look like on the wire? Is it some sort of... It has to be a normalized format that at least those tools can use. Is it a thing that, you know, you could publish a spec and people could plug it in.
Starting point is 00:56:13 So I could be using sublime and you could be using VS code. And because we both, you know, whoever wrote the sublime side of it wrote to that format, they could get the session data. I mean, is that a potential thing or. I think it's definitely a potential thing.
Starting point is 00:56:25 I don't know if it's in the roadmap or where it is in the roadmap, but if you think about it, it makes sense. It's kind of like we talked a little bit about language servers earlier. We actually have this thing, protocol. It's called the Language Server Protocol that we made open source and public and everything, which basically means that any editor or IDE can use the language server and plug into the environment. So you can use Sublime with TypeScript and get a pretty rich editing experience because it goes to the language server protocol.
Starting point is 00:56:58 So you can imagine that in this model that there's a protocol that's running over the wire so one editor can connect to another editor or IDE or whatever it is. Right. And that can be something that's open sourced and all editors take advantage of and it's basically a plug-in for each editor. But I don't think we're far enough down the road yet to say, okay, here we've got this protocol.
Starting point is 00:57:17 Everybody go build. You just demoed the feature for the first time. It was the first time. Yeah. So it's brand new stuff. But the model makes sense, right? And it is definitely, it's a protocol. It's funny to see sort of the big circle of life,
Starting point is 00:57:32 and we were talking about this earlier, about recycling names. Like a lot of stuff in VS Code, standard in, standard out, right? Yeah. Piping, and it works really well. Yeah. So you can do the same thing with these as well.
Starting point is 00:57:45 Nothing new under the sun. Just new names. That's right. Let's talk about the roadmap a little bit. We've seen what you've been up to. First of all, are there any major features that are just clearly still lacking that someone says, well, I can't switch because of feature X, and you guys are all like, yeah, we know that's coming.
Starting point is 00:58:05 Are there any of those? And if not, what else is... Well, the biggest one that we just shipped literally last week was multi-root workspace support. So up until now, if you want to open up two folders at the same time, you have two instances of VS Code. And what we now support is the ability to have multiple top-level folders open at the same time.
Starting point is 00:58:25 Language servers work against them, extensions work against them properly. We've been working on that for six months, probably. There's a lot, a lot of work. It's been in Insiders for a few months now. Yeah, so the Insiders has had it for a while. And really in the last milestone, we kind of held off releasing it in stable because we wanted to do a push to make sure that the top extensions that are out there were all multi-root aware. There's sort of this very root API that had an assumption about the fact that there was one workspace and just wanted everybody to use that. So we had to make sure that people were supporting the fact that you could have multiple routes like
Starting point is 00:59:08 the old singleton design principle problem yeah there's only ever going to be one of these yeah and then six months later you're like it'd be great if there was two of those or n of those right so that has clearly been the biggest one that people have been asking us for. There's a long tail of things that people are looking for. The other thing we just released was the ability to have the horizontal pane that's at the bottom of the debugger, debug console, terminal, everything, put that to be vertical in the space. If you had a widescreen monitor, you can have your console on the right, code in the middle, explorers on the left.
Starting point is 00:59:47 And I think that's kind of, you see a lot of feature requests from people stemming about wanting to have more control over the editors, the layout of the editors inside the environment. So I want to be able to split horizontally or vertically at the same time. So those are things that we'll start to, now that we're sort of out of the multi-route workspace push, which was a lot of people across the team. In the short term, like really for the upcoming month, month and a half left in the calendar year, it's really just a push on performance and bug fixing and not a whole slew of new features. We publish our roadmap on GitHub in our Wiki.
Starting point is 01:00:30 And so you can go up there and there's just a whole slew of things I have to think off the top of my head what's in there. Well, if it's published, we don't even talk about it. Click the link. Click the link in the show notes. No, but that's one of the things that we try to do is every six to twelve months
Starting point is 01:00:45 we put together a you know 12 to 18 month roadmap we publish that on the wiki and then for each milestone we go through a whole planning process we publish that we make it real um and we turn from draft into like this is the plan and then at the end of each milestone, we publish our end game, like schedule and process and testing and all that stuff. So everything is completely out there in the open. And a lot of these elements, I don't think the roadmap, but like the iteration plans and things like that, not only are they visible and readable, but you can comment on them and react to them. So it's good because you get real-time feedback just as we post the plan. What's the larger motivation of this project?
Starting point is 01:01:31 You mentioned earlier, and I think we kind of talked a bit about with Julia, about any app or any developer, any... What's the mission? Please remind us of Microsoft's mission. For VS Code? Just Microsoft's mission in general Code? just Microsoft's mission in general
Starting point is 01:01:46 to like any developer any app any platform there you go so given that what's the motivation for VS Code you mentioned
Starting point is 01:01:53 back to the original scenario Jared's in Starbucks he's cool he's on a Mac and you have nothing to offer him you know right
Starting point is 01:01:59 you're mostly cool and he's using an editor right so he's using an editor and you have nothing to offer him so what's the motivation what is the you know
Starting point is 01:02:07 the mission statement I guess behind VS Code like why why this editor why are you guys doing this what's the larger picture well I think the larger picture is like
Starting point is 01:02:16 the world is no longer a place where you can say we've got this thing this great thing come to us and use it and you'll be happy right people are like,
Starting point is 01:02:26 no, I've got all these other tools and things that I'm using. And I kind of mentioned this before, like we didn't have anything for this whole class of developers, not on Windows, not using IDEs, very sort of modern webby node oriented developers,avascripts all that we had nothing to talk to you about there was no way to have that conversation you were a developer we were never going to be able to attract at all and so the motivation for vs code was to break down that barrier and say actually you know what we do have something that you could use and then we give that to you and if you like it cool right maybe there's some other stuff from us that you'll use at And then we give that to you. And if you like it, cool. Maybe there's some other stuff from us that you'll use at some point in the future. And if you don't like it, at least
Starting point is 01:03:11 we had a conversation and maybe in six months, you'll hear about it from your buddy. Oh yeah, I know. Yeah, I heard about it. Let me go look at it again. And maybe at that point, there's enough stuff for you to sort of come on board. But the days where you could say, here's our developer ecosystem, come to our ecosystem, drop everything else you're doing, that's over, right? And Microsoft can't survive in that model. So we really had to sort of turn around
Starting point is 01:03:35 and say, well, we've got tools for everybody. We've got great tools. Like we have a history of having awesome tools. And by virtue of using our tools, perhaps you will also use these other things that we have. Such as? That's great.
Starting point is 01:03:48 Azure. Azure. Azure. Yeah. Yeah. Is it to attract essentially things to the brand name of Microsoft that they are no longer side-eyed, as you've used the term before? Like people are...
Starting point is 01:04:01 I guess there's... You're kind of getting this level of respect back that may have not been there from every developer out there. I think, I mean, so you could say, if you looked at it and just said, oh, the goal is to get people to do Azure. I think that's not the entire story because that can't be your only goal. Your other goal has to be, I believe, to be an excellent player in the developer ecosystem. And then that requires you to do things like be open source, be transparent.
Starting point is 01:04:32 You're a valid person in the ecosystem. Because if not, developers don't like you. And so you can't have one without the other. I think you can't just say, all right, we're on the ecosystem, but we're closed, we don't do anything, and we're closed. We don't do anything. And then we want you to use Azure.
Starting point is 01:04:47 No, you have to be a viable member of that ecosystem in order to be even considered. So we have to do both of those things. And I think our mission for the past couple of years seriously has been
Starting point is 01:05:00 the first part. Go break down all those old barriers that Microsoft put up for all these developers out there that just aren't on our stuff. Just go make people happy. That literally was Scott's directive
Starting point is 01:05:14 when we first did this. He just said, all I want you to do, don't worry about anything else. Just go get your first X thousand people, make them happy developers. That's empowering. That's an interesting mission.
Starting point is 01:05:28 It's funny to me because when we talk about open source and motivations and stuff like that, it's not money. There's other reasons people do open source, but a lot of them boils down, whether it's a big company like Microsoft or Adam Sikowiak. We just want people to like us. It boils down to, be my friend. You guys like us? Yeah. I mean, think about it.
Starting point is 01:05:51 I do cool open source. People value it. They benefit from it, and they'll like me. I mean, it's very kind of a base motivation, but we all kind of share it, even though we have our other reasons as well. Just interesting. You've got to be a good citizen. Yeah. That's the've got to be a good citizen. Yeah. That's the truth. Nobody likes a bad citizen.
Starting point is 01:06:08 Well, you have a bright spot on you if you're not. A bright spot like a shadow. Either or. Pick your metaphor, but the point I'm saying is you stand out. If you're not a good citizen, you stand out. I think you're almost ignored.
Starting point is 01:06:24 It's easy to recognize that. At the point where a large majority, I don't know if it was a vast majority, just irrelevant. It doesn't matter. It doesn't speak my language. So it had to break that down. So that has been our mission. How's that going? Is that happening?
Starting point is 01:06:43 I think so. So you said that Scott gave you that mission go make people happy, go make developers happy. What was your, you know, how did you track that?
Starting point is 01:06:51 How do you even measure that? How have you measured that? There's a bunch of ways we look at it. Let's see. Downloads probably is an impactor, right? Downloads is
Starting point is 01:07:02 a bit of a vanity metric because you can download it all you want, but if you don't use it, it doesn't really matter. Okay. So we look at usage, engaged usage of it. Do you have analytics on usage? We do. Is that an opt-out sort of thing?
Starting point is 01:07:19 Yeah. What's that? Like you opt out of that during download? I forget that question often. If you're checking analytics, essentially of usage. Yes, you can opt out of that? You often get that question often if you're tracking analytics, essentially, of usage. Yes, you can opt out of it. Okay.
Starting point is 01:07:28 Definitely. So we look at that. We watch Twitter quite a bit because you get a very sort of instant pulse as to what's going on. We look at NPS scores, a standardized score. I guess Facebook came up with that. I don't know a whole bunch about the history of it, but it's basically your ratio to promoters versus detractors
Starting point is 01:07:51 based on a quick survey. The net promoter score. Yeah, the net promoter score. How likely are you to delete? It turns out it's a... Yeah, there's a lot of people that do that, but it turns out to be very effective. I think it's effective because it's a single question, through ten. Yeah, you just click it. You're done. Yeah
Starting point is 01:08:10 And a lot of the lead it a lot of the middle are actually thrown out It's really it's only the people at six months in the low end. I'm sorry about it's the haters and the lovers Yeah, because those are the ones that actually have the impact on other people. That's right. Multiplicative effect. Yep. And we look at that. Issues, sentiment that come in through issues. What else are we looking at? In our blog post that we published for this event, for Connect, we shared that in November,
Starting point is 01:08:41 monthly active users, so people who used the tool once that month, 2.6 million, I think, was the number. Yep. So that's a pretty decent number. That's a good number. That's like during the month of November. Yeah. How many people were on the team? So there were about 25.
Starting point is 01:09:00 I could go through all the names and I could count them all. I think it was like 10 in Zurich and 12-ish. I really throw the hard balls at him. There you go. 25-ish? So the problem is this, right? If I get the number wrong, because there are so few people on the team, I'm really cutting one person off, right?
Starting point is 01:09:20 Someone's got to know exactly. It was 300. Okay, yeah, it's 302. It doesn't really matter, But there's like 22. Everyone's going to be like, Chris forgot about me. Yeah, yeah, yeah. Wait, and then he says 11. And it's like, no, there's one person less.
Starting point is 01:09:32 It's roughly that. I'll take roughly. And I'm also thinking about the Slack channel that we have because there's extra people in the Slack channel, which are not on the core team. Well, the reason why I asked that was I wanted to measure that next to the community contributors and just see how much it's been embraced from a contribution perspective. Because a good community member of the open source, even though it's a product, and so there's product roadmap and vision, like you said, the roadmap's published and commentable. Are there other people outside of Microsoft that are contributing? Have you gotten that going?
Starting point is 01:10:05 And then how does that play back into the editor? Yeah, I can't remember the numbers off the top of my head. Maybe you know them, but we are one of the top projects on GitHub. Every year, GitHub releases sort of like a report that, you know, it's kind of like their State of the Union, I guess, where they share a couple of metrics. And one of the metrics was open source projects ranked by contributors. VS Code was number one. We had the most contributors of any repo on GitHub. Wow.
Starting point is 01:10:37 The link is also in the blog post they posted. I don't remember the URL off the top of my head. Send us that. And there was a couple other ones on there and there was also a number of contributions and things like that. But yeah, I think in short, the question, how much does the community contribute to the growth and improvements in VS Code? It's a lot. If you look at the release notes every milestone,
Starting point is 01:11:06 we actually list out all the people that did pull requests that we were able to pull in in that milestone. It's in the 10s and 20s every month. What do you think you've done that has enabled that? What are you doing well that other projects that aim to have your mission can learn from you? How many? 429 on the VS Code repo.
Starting point is 01:11:28 There may be other repos as well. Yeah, the report lists a different number. I don't know exactly how they calculate the difference. It's still a good number. There was one which was of all Microsoft projects, we were number one. And then there was another one which was all of GitHub. I think we were the number one Microsoft project. I'm not sure if we're the number one overall.
Starting point is 01:11:45 That would make more sense. There's over 5,000 forks, which is a good number. You have 94 open pull requests, 5,000 plus open issues, very active. 2,259 closed pull requests. So there's a good metric there. 94 open may sound like a lot open but when you have you know 2200 closed you're making your way through them so yeah anyways back to adam's question so what was the question again sorry what have you done to enable this kind of contribution uh let's see i
Starting point is 01:12:14 think it's a bunch of things it's not just one um i think things that we've done right are the transparency in our planning. Putting that out there, let people comment on it, seeing what the roadmap is, I think has been very useful in that. I was just talking to another guy earlier, PJ and I, where the fact that we sort of recognize folks that are actually contributing to the project has been a huge motivator for people. It's almost like GitHub commits where you're like, hey, it's my resume. People take this huge pride in being recognized the fact that they contributed to the project. And we're excited about it. And we say, hey, thank you.
Starting point is 01:12:56 And then people are like, hey, my pull request got in. So there's a lot of that that goes on. I think there's also, we've been, right from the get-go, we kind of published, like, here's sort of the guidelines about how to contribute to the product and what we're trying to do and all that stuff. I think when people ask us questions, we're honest, right? Like, hey, you know, why are you doing this? Or why isn't this open source or that open source or license or questions like that? We're like, this is what we did, and here's why. And people appreciate that honesty.
Starting point is 01:13:27 When we screw up, we admit it. We go out and say, yep. We had an orange icon. People didn't like the orange icon. Yeah, there was controversy around the icon recently. A little bit. A little bit. But the point is, they changed it.
Starting point is 01:13:43 Yeah, we respond. You're open. You're transparent. They changed it. Yeah. Yeah, we respond. You're open. You're transparent. You respond. You care. Yeah. Right. You're quick to change when change is required.
Starting point is 01:13:52 Yeah. And it's not a free-for-all, though, right? It's not just like a rudderless project. It's like this is what we're doing and this is where we're going. Right. We'll take feedback and everything in it. What's one, in less than a minute, what's one call to action for those listening? What's a good first step?
Starting point is 01:14:09 Download it, play with it, check out issues. What's a good call to action for those out there listening? Go download the Insiders builds. Get those Insiders builds. They're great. Tell us about that because our community is very much, we're enthusiasts, we're hackers. And so is this for a nightly build, right?
Starting point is 01:14:24 It is our nightly build. I was saying this morning is the exact same build that we use to build VS Code. Insiders build. Insiders build comes out every night Zurich time. Where do you go for that? On the download page is a big green button to download VS Code there's an arrow next to it if you click on the arrow it'll show you both stable and insiders. And so it'll update every morning. Basically, you just kind of get into this rhythm of, okay, I'm just going to update,
Starting point is 01:14:50 and it takes a couple seconds, and boom, you're ready to go. Brand new features every morning. Brand new bugs sometimes every morning. Brand new bugs. Brand new bug fixes, too. Oh, yeah. But if you think about it, since we're using it to go build VS Code, any big blockers we usually hit,
Starting point is 01:15:06 and we're not afraid to go pull the trigger and re-release an insider's bill that people are blocked by it. So I would A, I would go and do that. B, you can go look at how to contribute which is in the wiki. I would look at the iteration plans. I know you want to and then I would go do a query for I think it needs help or help wanted In the repo where you can see places where you can start to kick the tires the cool thing about it It's really easy to sort of use vs code to build vs code and we have full instructions on how to do that so you can run vs code you can Develop it at the same time you can hit a breakpoint and debug it from vs code
Starting point is 01:15:41 That's a cool easy way to get started there. Very cool. And learn about TypeScript too because it's mostly written in TypeScript. Change your life. Change your life. All right.
Starting point is 01:15:52 Thank you so much for your time today, guys. Yeah, no problem. Thanks. Thank you. All right, that's it for this
Starting point is 01:16:00 episode of the Change Log. Thank you for tuning in. And if you enjoyed the show, you know what to do. Share with a friend, rate us on Apple Podcasts, go on Overcast, go on Twitter, tell everyone you know. And special thanks to our sponsors, Auth0, DigitalOcean, TopTow, and GoCD.
Starting point is 01:16:19 Also, thanks to Fastly, our bandwidth partner. Head to Fastly.com to learn more. We host everything we do on Linode cloud servers. Head to linode.com slash changelog. Check them out. Support the show. This show is hosted by myself, Adam Stachowiak, and Jared Santo. Editing is done by Jonathan Youngblood.
Starting point is 01:16:38 And our awesome music is produced by Breakmaster Cylinder. You can find more episodes just like this at changelog.com or by going to Apple Podcasts or Overcast or Google Play and subscribing. Thanks for listening. We'll see you next week. Thank you.

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