Welcome back everyone. This is the change log on your host Adam Stikoviak. This is episode 152 And on today's show Jared and I are talking to two awesome developers behind TypeScript at Microsoft Jonathan Turner and Andrew Taussberg Jonathan is the program manager and Anders is the language architect So we go deep sit back and listen as Jared and I get schooled on this type based super set of JavaScript We have three awesome sponsors for the show today coach it top-top and digital ocean We'll tell you a bit more about top-top and digital ocean later in the show But our friends at co-ship have this new feature wild card deployments Now you can get more flexible deployment workflows with wild card deployment pipelines that trigger if a branch starts with a certain prefix You can do this it's super easy use one deployment configuration for multiple branches and automatically deploy your feature your release your QA Etc. Her branches to the corresponding environments It's the perfect feature for allowing your team be super flexible and how you want to work and how your workflows should work for you As always co-ship is free to get started It's right about trying out their free plan which includes a hundred build a month and five private projects use the offer code the change log podcast You get 20% off any plane you choose the three months head to co-ship.com slash the change all to get started and now on to the show All right, we're back.
We got John the turn online Anders Hausberg. He He's done some cool stuff and there's well it should tell tell a bit in here in a second or two But we also have Jeremy call today talking about TypeScript. Jared you excited? I'm excited man second time.
We have Microsoft people on the change log recently. So it's blow my mind It's a new Microsoft and we'll find more I'm sure Jonathan let's start with you Introduce yourself into a mind talk about you know who you are Microsoft what you do and then Angel will follow up with you after I've Thank you, so my name is Jonathan Turner and the program manager at Microsoft on the TypeScript team So I'm pretty much just kind of like I don't know the glorious cat hertor So I I know right I run the design meetings I do a lot of connections out to clients and kind of try to gather all the requirements make sure we're on the right track And what about you? I'm Anders Hausberg and I'm a technical fellow at Microsoft And these days I'm working on TypeScript, but I've been many years over a decade working on dotnet and C sharp and Before that I was a born on for about 13 years to work on turbo Pascal and Delphi and Other than our pre-call you had some pretty unique asks for Andrews anything if you go on Delphi as we in the pre-call We kind of determined it's not Delphi it depends on which other You know, I think you live on if it's Delphi or Delphi so what else I'm apparently a Brit heart or something because Delphi Just sounds right to me always has so I've been corrected. I say correct.
I'm gonna try to say Delphi Because Anders if you say it's Delphi I'll go Delphi although the guy who invented the GIF. I'm not gonna ever lent on that one I'm not gonna call it. I'm not gonna call it Jeff. Sorry fella, but for you guys definitely go with Delphi.
Yeah, I was wondering With your history and look at PDA page for TypeScript You're kind of named as I know the inventor of type trip or at least the person who kind of started inside of Microsoft We're curious how that came about If it was your idea if somebody approached you if there was a core team at the beginning Maybe just give us a backstory of your role at Microsoft and how TypeScript has been involved in it Yeah, no, I mean TypeScript is obviously a team effort and I would say I I lead the team as sort of the architect with the language And I also work in actively on the compiler The project probably trying to think well, we went public in October of 2012 I remember that I was trying to think back the other day when we started it was probably well It must have been sometime in 2011 probably late 2011 And we sort of had this on and off conversation about what are we gonna do going forward for JavaScript? We saw increasingly that people were writing larger and larger applications in-house as well as externally in JavaScript Just because you know that's sort of like the you only cross-platform being left in town, right? People were finding certainly in-house that it's hard to maintain these large apps as they get beyond a certain size It just becomes incredibly hard to keep it all in your head and when you want to do Refactoring or anything of a larger nature, you know It's it's like playing with landmines to refactor a JavaScript code base because you can never really be certain that you have Test to cover everything and if you pick the name for a property like say text or whatever Then there's a million of things called text and how do you know that you're getting the right ones? And and and people basically we're trying to solve this problem in a variety of different ways We saw like a Google for example They have GWT or GWT as they called it early on which was the idea there is you author and Java and then you cross-compile it to JavaScript And that allows you to get the grown-up tooling of Java and the Java ecosystem But it allows you to run it in the browser and we actually had a project in-house that was similar nature called script shop that office Has used for a number of their large projects And we were sort of torn into the idea of oh should we productize that maybe or but then the more we thought about it The more we felt that hey if if you really want to do something in a community like JavaScript You really should aim to be best of breed, you know You really should aim to solve the problems on the on the communities terms not on your terms So speaking and so you know we try to put our JavaScript hat on and go well What is it that what is it that a JavaScript programmer would want here for their large apps?
And it's clearly not to substitute a different language But rather it's to remedy you know those things that are missing in JavaScript and at the time You know now that be before I must be six that was things like classes and modules But also and interfaces but also you know static typing you know the ability to actually describe you know Hey, this function yeah takes three parameters But by the way, I can also tell you what the types of those parameters are supposed to be and then maybe you can check it for me Instead of just blowing up at runtime And so so that was one of the genesis of our types of really is there a way we could we could add all of those things to JavaScript without Actually messing with its core value proposition Which is that it runs everywhere and is there a way we could do it so that you can maximally leverage all of the goodness that already existed in the JavaScript ecosystem You know I mean that you guys know us as well as we that there's just an enormous amount of effort being poured into JavaScript in the open-source community around frameworks for for for JavaScript, right? I mean a classic example is jQuery But then you know beyond that it's just been astounding how many different frameworks there are and so part of our design So our key design goal was to make sure that that we could leverage all that or that you wouldn't have to give up all that And that again You know let us basically to design a super set of JavaScript that compiles to plain JavaScript and then I mean I think from there on It was it was really just sort of execution right? I think that that was that was sort of the core inside there was let's not try to let's not try to Make your code in JavaScript by by having you coding something else because that's just never that's just never gonna Never gonna leverage the knowledge that you already have and type it really is it is just like coding in JavaScript I mean if you look at your method bodies They are exactly the same code because mostly we can infer the types for you It's really just the sort of surrounding fluff like you know You can put type annotations on your parameters and whatever and you can write declaration files for existing frameworks So we can pick up the static type information that way so it was off to over 2012 when the first one public Like you said you're probably one or two years before that you guys were working on it Internally did you have internal teams using it either in production or in research prior to that public launch? Yeah, it's been about three teams that were using it prior to it by public One of those teams has now grown to become what's called Monica with second ID in the web browser Part of it will still be online So that's that's been kind of cool to watch that They've been done foodings since like long before it was public and have been tracking along with us as we've grown They've been growing as well.
Yeah, and then the f12 tools in the internet at war were written in JavaScript Before we had gone public and I think we have some Azure properties that also used us Before we went up. Yeah, so what would you say just estimating the times between ideation of let's do the superset of JavaScript with type annotations and having something working usable that your team for using internally in six months a year How long have you got somewhere somewhere somewhere in that range? Yeah, I would say yeah I mean we started you know you always get there in Secuitous ways right? I mean you know in the beginning Division I just laid out wasn't actually that clear you know and we thought well maybe then also You know a key aspect is going to be having the VM use this type of information to more efficiently execute the code and That's still an interesting idea But it turned out not to be the sort of design pivot that that we maybe saw in the beginning I mean in a sense like becoming less ambitious I mean it's better able to focus right once we started thinking tooling is the important part right yes six and make good tooling work off it so error checking and navigating through your code and I showed some of this and like the Engine half stop and I guess I like you can you can just kind of quickly bounce around your code base doing refactoring renaming and it's Really like under to saying you're still just just like my JavaScript with a little bit of a trial I guess I was like question chair might be a little bigger than that So Microsoft's been changing quite a bit over the last I'd say year least that I can tell from the outside But you know adopting open source seeing seeing an embracing open source a lot more embracing community embracing pull requests on GitHub And I'm wondering what role text script plays in the future of Microsoft's direction like being HTML CSS JavaScript focused in the operating system On the phone and elsewhere how does you know how to top down this come to come from top down to come from bottom up to see Here's how we're solving solutions or solving these problems, but also sort of Microsoft's general direction for product Yeah, it's funny.
It's not that it came It's neither top down or bottom up. It's sort of organically came from people who were more Infinitized with areas that that that are in the open source space do you know? I mean it's like HTML JavaScript CSS whatever is is very Infinitized with open source I would say because it's cross platform it runs everywhere that sort of it's bread and butter Right and and it's it's almost ridiculous to think about doing anything in that space without doing it open source But but over time that has gotten truer and truer for more and more areas right as you know It also started with developers like very developer technologies and now sort of spread into more and more You know throughout the software ecosystem if you will I think I mean we were early with you know on Microsoft Timescale if you will with with open source and and a lot of our learnings we have shared with other groups in the company and then but now You know certainly in the division we said in the developer division the default answer here is that it's open source unless you have good reasons Why it shouldn't be and that's a big that's a big turnaround You know and that was certainly not the default when we started with TypeScript But I will say I mean uniformly even at that time people sort of realize that we have to we have to do this It's more question of how you know because it's a big company with a lot of engineering culture that that was just done differently Right and and it you don't just change it overnight and I would say even for us You know like we sort of we sort of stumbled into open source in the beginning a little bit You know we we hosted on codeplex because that was Microsoft's open source Repository right then but that's not really where that community is and you come to realize that you come to reach So there's sort of like doing open source and then there's doing open source the open source way And the latter takes a while to learn right? I mean there's just a culture there like there is in any vibrant community and then you sort of data experience it in order to To live it right just to speak to your point about early inside Microsoft y'all were as far as far as open source Like you said October 2012 recently we had on the dot net core team That's episode 134 and that was like December 2014 was when that show aired they had open source dot and announced the open sourcing of it Sometimes for that but within six months so there's 2014 versus 2012 You guys are definitely one of the earlier teams was there decisions be made or was it just a factor like was even discussion?
Like this is gonna be open source or was that something that y'all had to come to I think it was you know to the people That were part of that decision. I think it was clear to everyone that there's no way We're gonna appeal to the JavaScript community if we're not open source I mean we might we might appeal to a slice of the JavaScript community I the slice that uses Microsoft tooling but but that wasn't really the slice that we wanted to appeal to we wanted to broadly appeal to the JavaScript community and really sort of deliver value in that community right and and I think we all understood that that had that had To mean open source it just had to And it does that speak to your sensibilities because languages that you've had you know parking in the past Delphi proprietary at least the compiler is I'm not sure is the specification for Delphi open source or is that all right? So No, it was not I mean the heck open source haven't been invented. Yeah, you know so so there was there was just no way it could be I mean I don't open source it since stuff was around.
I mean what you're doing was that early 90s? Yeah, yeah All the way back to turbo-pass gallows in 83 right? I mean and then and then Delphi sort of grew out of that but yeah I used to be a system there wasn't open source going on back then in the 90s when Delphi was having to say day, right? I'm not sure.
I wasn't here. Yeah. Yeah, yeah But but either way, you know, it's um, I mean the world has changed right? I mean and and it's just you know back back then that was sort of how you you you bootstrap yourself as a company You know, I will say that the one thing I think that that turtle Pascal and then Delphi hosted was the I mean turtle Pascal At the time deliver the product that probably was an order of magnitude more efficient and cost and order of magnitude less Than its competition right and so it maybe wasn't free, but it was pretty close to free It was 50 bucks where the competition was 500 bucks Wow and and it ran at least 10 times faster than than the competition, right?
So so it's so it definitely it changed things or you know in other ways, right? Today, it's it's funny how we how we sell software and how open source is finance because obviously ultimately someone has the foot to build right? But but that's a different discussion, right? But it's it's yeah.
Yeah. Yeah, yeah It's a good that's discussion we have often on change a lot of talking to to you know small startups who are trying to bootstrap a company Yeah, and do open source or do open source and and it's still something that people trying to figure out like is this even viable to have Purely open source company. Yeah, so yeah huge discussions and interesting things But let's let's reel it back in and get back to where you guys are at because in 2012 you announced my public Recently here. We are in 2015.
We've seen kind of a I don't know if I call it a groundswell quite yet But it's getting there where all of a sudden adoption is starting to really ramp up we have angular 2 Announcing it'll be types for driven dojo to definitely others What can you attribute that to is it just it just takes time? How was it received? Let's stop there for a second. How was it received when you guys first went public?
It was a mix of enthusiasm and suspicion I remember the first day when we went public we were watching all the social media and the Twitter and the Twitter And I'm watching a stream of just negative just one after another and then another stream of positive like oh my gosh And you know this is what it's like to jump right into the pool and get feedback immediately And it was it was interesting to kind of see once people started playing with it They always definitely a trickle maybe a trickle at first so people playing with it saying I'm never gonna use this But I'm gonna try it for five minutes and then after that going oh, oh, I get it I get why they did this this is actually kind of cool And I think it took time for people to get over it. Yes, it's like a spot, right? Okay, you know, we're done try it Yeah, and kind of move towards something of like it's just a tool It's just a tool for doing JavaScript and what programming so when you say that it seems like there's a little suspicion there You know the initial reaction was like why is Microsoft be open source and you know in the vein of JavaScript? Especially back in 2010 we had no there's no president's of Microsoft doing, you know large-scale open source projects No, and I'll drag track record and JavaScript perhaps wasn't the best at that time either.
So yeah, I mean it's it's You know, I always felt like you got out. You got to earn it, you know And and I was I was not surprised that we got the reaction that we did I was actually fairly Happy that that we got as much positive reaction to it as we did And I've always just believe but hey, you know, we're just gonna stick to it We're gonna deliver some some good product here. We're gonna do some good engineering We're gonna try to solve the problem because I think we had the right idea for a problem And then it'll come or maybe they won't but let's but we're gonna believe that they'll come and then and now they're starting to come You know at that but but we've done a lot of hard work, you know, and we tried to listen to the community And we but we've also tried to have a point of view on how to solve this problem You know, we're not we're not turning it into a kitchen sink Which is very easy to do in the JavaScript space too because there's there's a new technology or a new framework or a new methodology born every day, right? And so you sort of got a stick to your gun on certain areas or guns on certain areas But but then but then still listen to the feedback I think also one one thing that I think we did right was to self host and dog food from day one a lot of these Transpilers well now they're not but in the beginning, you know early on like quit and and script sharp where they target JavaScript But they're not written in JavaScript and they don't actually live and breathe the JavaScript community to do learning And I felt that I felt that we had to do that.
Um, and the other thing I would say that I think Was was a guiding principle was that we're not just writing a compiler here and then we're not really doing this We're doing this because it ultimately enables us to build great tooling and we're not just gonna open source the compiler We're gonna open source the tooling because it's the did really the high order bit. Here's the tooling It's the fact that you can get safe refactoring code navigation find all references go to definition It's ever it's ever, you know, and then and these are just like Productivity must haves today in on large projects, right? And and they're all powered by this knowledge that the compiler has but but if you lock it up in a black box, you know That is just a command line tool then you're not really solving the problem, right? So you got it You got to like actually make your compiler into an API and you got to architect your compiler So that it can be super incremental and super lazy and how it does its work so that it can deliver answers in sub 100 millisecond Time even on a 200,000 line project, right?
Which you know, honestly, if you would ask me five years or ten years ago I would have I would have just said that is never gonna be possible in JavaScript But it turns out it is What's that was what that was what about that? You know that we talked there on on the technology and our own ability to do it, you know, but but it's it's worked out What's different? You know, what didn't you expect five or ten years ago? And you said that was not possible JavaScript just the browser wars or the hardware is increased or what is it?
I think the order of magnitude Improvements in the VMs. Uh-huh. I don't think I don't think we all saw that coming It's quite an I'll give credit to the V18 and Lars and that work they did it. Oh, so it's just amazing, you know And now we're all doing it, you know, but they really sort of pioneered something there that was quite quite impressive Yeah, it's kind of a shining example of that rising tide, you know brings all the ships up because once that competition got really kicked off and All-parties got involved.
It's been fun to watch. Yeah from our site and just it is amazing What you can do in JavaScript now that even three or four years ago was just impossible and possibly slow. Yeah, no That yeah, no, I I to this day. I am still I am still you know, there days where I go wow That's amazing.
Well, it's positive then let's let's dive into some amazing stuff But before we do that, let's take a break and hear a word from one of our awesome sponsors. We'll be back You for me talk about top-tow several times on podcast and top-tow is by far the best place to work as a freelance software developer Well, they have this term elite engineer and that defines the kind of software developer that works at top-tow I had a chance to sit down and talk to Brendan Benichon the co-founder and COO of top-tow And I asked him Brendan what is elite engineer? I listen and elite engineer for us as somebody who satisfies all the technical requirements that you would need in a great developer If you're working at like a Google or Facebook But then a top-tail you have to add this extra layer on top of it to make sure that people are Mature enough and professional enough to be totally self-directed and so making sure that they take a tremendous amount of pride in their work and that they're accountable and very very communicative because in remote freelancing That's sometimes just as important as being technically competent Alright, if Brendan got you excited about being an elite engineer at top-tow head to top-tow.com slash developers That's TOP TAL dot com slash developers to learn more and tell them the cheese low-cension All right, so we've been talking heavily energy got some deep study to to there I almost wanted to vein off on several different directions But I think let's circle around language design a type script. It's a super super super set of JavaScript What what else do you describe for type script to sort of take us into the conversation around language design?
I think you know I mean so I did the things maybe that are interesting to observe about it is that Traditionally type systems have sort of been an honor and off thing You know you either have your dynamic language with which had no type system or at least not an observable type system And everything was just dynamic or you would be programming in a proper statically typed programming language They like C sharp or Java or C++ or C or whatever and everything would be statically typed So it was either you were either on or you were off on types I think that's interesting about type script is that that it is it is an optionally typed or a gradually typed system You know you we've turned to switch into a dial you can dial up the types It's so the dial starts at zero and that's just JavaScript and you can literally rename all your JavaScript files to dot TS And just run them through our compiler and you'll get a bunch of errors But our errors aren't really errors. They're all warnings right because the output we produce is indeed exactly the same files that came in Because there were no type annotations to remove right so in so when it dials at zero We sort of function as a linker if you will that we do our best effort on inference But in the absence of any type annotations, you know, there's only so much we can infer but based on those inferences We'll give you some errors right but then as you dial it up and you add type annotations then more and more stuff comes alive And and and you but you can sort of leave the dial wherever you want right you can use jQuery or whatever a whole bunch of JavaScript frameworks Just as JavaScript and then you can on the side provide the type information or not provide the type information And if you provide the type information in a declaration file Then the tool can do more things for you like statement completion and so forth But it's perfectly happy for you do not do it and then it's just dynamically typed And that's sort of an interesting world to navigate because no one had really done that before you know in that I know It was all or nothing right like it had to be exactly yeah Yeah, yeah, and so so that was a super interesting design point and I think we learned a lot from it I think the other thing that I would say that that has been interesting from a language design perspective is that TypeScript's type system isn't about providing absolute waterproof guarantees that that these types are correct We're not provably correct We're just correct enough because ultimately when you start with a dynamic language where where something could be a type any Then you have a Swiss cheese right and it's just about plugging as many of the holes as it's feasible It's not about plugging every hole right and Traditionally Java and C sharp and a lot of other languages have been about plugging every hole and providing strict guarantees And that's that's obviously useful But it but it lands you in a different place right and there's but if you think about it for JavaScript There's no way that we could ever land there right because that decision has already been made the runtime system is dynamic But it turns out that there's still a lot of goodness you can get from having types a whole lot of goodness right in the tooling Even if the types are not provably correct. Um, there's one other that I would probably add to that list I like which is the structural type yes, yes, so traditionally in up and oh systems here was called non-ly typed You've got the class name and the art alright. I'm gonna subclass this class name and it's it's every time you're checking the types You're checking that these names are matching But in JavaScript everything is very loosey-dussy I can make an object literal I can pass it in or I can instantiate a class as an object and pass that in and for us everything We just look at the inside of the type is the structures match You know if it walks like a talking class like a dog, you know Kind of that kind of and that makes it so easy to kind of extend existing systems and grow systems in a really flexible way And it doesn't require these deep inheritance hierarchies.
Yeah, that's really lightweight Yeah, it's much truer to the underlying truth of JavaScript, which is which is very dynamic, right? Right, so first of all I think making a district super set of JavaScript as far as adoption is concerned is kind of a brilliant move because now I can get my toe in the water Right and I can opt in when I want to as opposed to a big rewrite or having to make a big decision up front to use TypeScript or plain old JavaScript, but when I opt into those type annotations It sounds like the biggest wins are in tooling which are valid nice wins of course Do you also have performance wins or is it because the runtime itself is still dynamic? You can't do any compile time performance. It's not really correct.
Well, I mean, it's it's so so you're right that you you I would say it's tooling But it's of course also correctness right then and you know Right, so the notion that you can sleep better at night because some system actually like tried to validate your code here And told you about a bunch of problems that otherwise you would have found that as you ran the app one of the nice things on the TypeScript team is we had the creator of the chakra on the front dimension of JavaScript engine for Internet Explorer So he was helping us early on the code that the compiler generated So the classes and whatnot the corresponding code that they output he was looking at that and saying all right for this to be optimized We should do it slightly differently And so his his input meant that if you're writing against the you know class syntax and whatnot in typeScript you're getting very Performance JavaScript on the outside the carry you from that is that the V8 team took the type of compiler and put it into their test We so it wasn't just IE now you have Google Chrome getting all the performance benefits from those packs Well, that's interesting for sure beyond type annotations That's your that's your flagstone feature there. You know the name type screen. It's all about type annotations Are there any other big features that types of ads to JavaScript that are that are nice to have? I think I would sum it up as we do two things one is types and all of the great tooling and correctness proving that that comes from that And the other is delivering features from the future today Basically giving you the ability to run down level or compile to down level, right?
I mean we started out with with delivering a bunch of ES6 features But allowing you to compile them down level to ES5 and ES3 Like classes and arrow functions and so forth, right? And and now of course now ECMAScript itself is catching up and ES6 is almost ratified It's gonna happen in a month or two and and we are catching up also in that we now support pretty much the full ES6 language But now we're also delivering features from the future again because we're starting to spike implementations of decorators and async await and some of the other features that are being considered for ECMAScript 7 and it's really sort of a repeat in plus one here of the same phenomenon right because the truth is that that even as even when a version of ECMAScript gets ratified It takes years for that to actually permeate throughout the JavaScript ecosystem In some places it permeates quickly like on the server where you can or where you can arrange your own execution environment Just by installing a new version of node or whatever right then you can pretty rapidly adopt But in the browser, I mean you don't really have control that and it takes three four years before you can I mean even today You can't necessarily say that you require a must-be-five Right, I mean that we certainly I mean it's getting truer and truer right but but look at when did ECMAScript five come out right? I mean that we're talking about what is it what is it in 2009 right? I mean I think Just had their vote for IE support like a week or two ago the weather that they should remove early for the place So that is that's a little conversation that the long-term four guys are still having So so the reality probably is that it's gonna be somewhere between three and five years before you can assume ECMAScript 6 And that means until then you're gonna need a transpire or a down leveler right and TypeScript delivers both In one and that's that's a pretty compelling combination.
I mean goes that anti-types right how do you guys decide on which features We're gonna go in these early features. So let's talk you know Yes, seven which you know, they're just now figuring some things out some are probably gonna go in some aren't you know Just looking at a compatibility table. There's some features on every heard of reflect.realm apparently that's a proposed feature for yes Seven how do you decide when stuff goes in because you get the situation where you also and you add some say you added support for reflect Outrealm and don't ask me what that means But let's say you guys add that the type script and then none of the you know doesn't get ratified or none of the browsers actually I'm gonna support it. Do you guys pull it?
Do you just wait until you're sure something's gonna go in? How do you deal with it? Yeah, so so first of all I think reflect on realm is actually probably a runtime library feature So so that one isn't isn't that hard and the runtime library features generally speaking You can just polyfill and it's it's it's a pretty established sort of scheme for how you how you deal with that Other features like modules for example modules were late to land in ES6 You could argue that they haven't fully landed yet either because the standard doesn't actually include a spec or a module loader and and which Ultimately means you know you're gonna be dependent on someone externally to provide that loader and then Now now with those well sometimes we have to guess right? I mean in times grip when we realized early on that hey We're gonna need some sort of modules is that one of the biggest problems of JavaScript is the lack of modular compilation one of the things that was powering No.js was you know the common JS modules and then require JS in the browser and AMD modules and was sort of becoming the norm for large scale JavaScript application development, which is where we wanted to go So we have to have modules so we have to sort of do a best best guess effort where modules were gonna go And try to make try to make our syntactic footprint as small as possible and then just go with it and then let it right out And that's what we did then then it turns out we we shot pretty close to the dark But it's not just but it didn't land because those did the current proposals didn't even exist at the time So now we've aligned that it turns out that we can support both and we can just you know I mean we're not gonna take stuff away.
I mean I've always I've always been a big believer in backwards compatibility if you look at all My work and all the languages I've worked on they pretty much always been backwards compatible because if you If you give up backwards compatibility you also give up your community and now the community can go shop around and maybe they'll come with you Or maybe they won't you know, but listen you've got to be you got brain alarm and honestly It's the responsible thing to do to people have a huge investment in there in their code So so we're gonna continue support what we previously supported but then we're also supporting echmscript 6 modules and we expect people to migrate to that Fully you know over time, but so so it's it's doable You end up with a little bit of baggage and you can you can park it under a miler switch or something You know and it's it's it's fun. It's it's it was the right thing to do I think But we are definitely committed to tracking the standards. I should say that you know, and then you can certainly see that in our work too Even when you disagree with them. Yeah.
Oh, yeah Hey, some of the things in the modules is today. I may not necessarily agree with but there it is and that's water under the bridge, right? Right, we participate in the standard station effort too. So so you know, right?
But it's but yeah So is there a canonical place to go for people to find these are the features a tight script adds that you know, may or may not be available in ES6 or in the browsers today Do you guys have a place? Like on top of on top of the type system and on top of the JavaScript standard stuff that the additional features Yeah, or even you know features that have not quite been standardized yet or in the process that you know, you could perhaps use this in chrome today But you can use it in type script and it'll you know, it'll hang on well. I I mean All of the type system Is of course a feature that that we add right and sure all of the notation for how you write down interface types and union types and tuple types and blah blah blah And how does type inference work and how do generics work and all of that stuff is is of course on top and and something that we spec in our language specification If you care about like, yeah, seven features. There's the on the github site.
There's the roadmap, right? And we kind of roughly sketch out. I mean, even okay You don't know exactly which features going when but we've got a rough idea for, you know, this version and the next version So we kind of put that on the roadmap. Yeah, there's a link to a roadmap on there.
There's a link to a roadmap on the on the front page on github. So Perfect. That's helpful. Yeah So let's talk a little bit about the compiler and the implementation of the compiler.
One thing you said earlier enters Which was kind of peak my interest is about the compiler's API and how important that was Tell us about that and it also tells like how implemented is it is it in type script? I think you said it is But just give us some of the details of the compiler. Okay, it is in type. Yes.
I mean, like I said, we we believe in dark moving and then we've actually we've had several Versions of the compiler, but they were all written in type to it That the one that's that's there now and that's on on github and the one that we're currently shipping Is it's about I'm gonna say probably 32 thousand lines are there about for the core compiler itself and then another 15 to 20 thousand lines for the language service about 50 thousand lines all up Um before enters has a chance of the little humble he wrote most of the new version of the compiler So he was just kind of brainstorming ways that we could be faster and lighter late and uh industry time was coming up with these ideas I was like guys. I think we should go this direction. I'm like, no, we don't need to rewrite it We just we just released 1.0. No, no, I think that's the way we should go and sure enough as it started coming together It was like five times faster than the original one open boiler So he deserves a lot of credit for that.
I was like pretty much rewritten already about time He'd brought in brought in you guys the uh the results like was there a big effort after that or it was pretty much done Well, I mean, I I started it's actually kind of interesting because there are a couple of things first of all that I would say about how the compiler Is currently implemented one one actually sort of a general observation about compiler writing these days Which is there's sort of the way that the universities will teach you how to write compilers And then there's the way that that you have to write a compiler today for it to be relevant And they're they're actually a little bit divergent right right now because Universities tend to still teach you the classic way of writing a compiler with you know You have a scanner and a parser and you probably use some l.r generator You know to generate your parser and then you have your code generator and it's Then there's this thing called speed and performance that you don't get to Um, but but even more importantly, there's this thing called incrementfulness that is an absolute must for a compiler that you can build into an ID In an ID when you're sitting there typing code, let's say you're in a 15 000 line JavaScript file That's part of a 50 000 line project which so happens to be how say our compiler works right and I type food dot I want to see immediately what can I type here? And and I'm not if it takes more than 100 milliseconds. I'm gonna get annoyed now delivering Meaningful semantically correct answers in 100 milliseconds is simply impossible with the way schools teach you how to write compilers You gotta go about it completely differently. You gotta be much more incremental in your data structures.
You gotta think about different problems Your type system has to be implemented in a very very lacy manner that produces just the right amount of information on demand As opposed to binding everything up front and knowing the answer to everything even though I actually only need the answer to this over here right now So that that's that's interesting and there's a lot of learnings there that I that I think are are are interesting With with an editor too, and this is kind of obvious once I say it but as you're typing Most of your program is is it correct while you're typing right? Right? So your your language service has to be resilient to the fact that thing you're having errors left and right because everything's in transition And then you stop because you've had a soft right literally a single character typed at the right place in your editor can profoundly and completely change the meaning of your program Right now most characters don't But sometimes they do you know like you start a comment here and the rest of your file becomes a common door this identifier Becomes another name and now all of a sudden it doesn't shadow another identifier and 10,000 references bind to a different symbol Do you know what I mean? Or there's like all these subtle things and and it turns out that doing that incrementally It's a challenging problem and and you can very quickly go astray in oh well I'm gonna keep all these tables that's backlink to this and then I'm gonna try to incrementally update them and then before you know You're generating so much information that that is so subtle in the way that it interacts You know that you you dice a quick death right and and you really have to be pretty You have to think about this problem hard you know to get it to be fast especially in JavaScript That's that sounds like a really hard problem It's a fun problem and and and and I think we I mean I'm not gonna say that we've solved all of our work We do we're doing pretty well in our compiler right now One of the things that Andrew's was talking about before initially the prior we had this language service that's open source and people can play it And we put out we put that out a couple years ago and people started doing things like adding support to the clips More recently there's been a plugin for Adam the teacher team has written one for supply And it's it's kind of neat that this thing is kind of proving itself out in a way Right we're sticking it in all these tech senators and IDEs and getting a nice rich experience.
Yeah But so some of the stuff we do in the compiler is is we've actually learned a lot over the years from say functional programming If you look at how our compilers is built internally it very much relies on immutable data structures and incremental updating of immutable data structures We also strangely in the compiler itself. We we generally don't use classes The compiler is just written as a whole bunch of nested functions and interface declarations So in that sense it sort of uses the the other way of coding in JavaScript You know where you write functions and then functions return objects that contain function pointers And you make closure over over local state and and so forth So our entire type checker is a single function And that function just returns our callback interface that you can ask questions on and then it'll lazily go about its work But but it's and one single function closure and if you want to have three type checkers That's fine. You call the function three times now you have three separate type checkers that are maintaining their own separate state internally So it's uh, yeah, so that so it's it's it's interesting in in In that sense, but but I will say too that that is you know Like when we talk about JavaScript the good parts that is one of the very good parts about JavaScript is that that Brendan got He got it right when it came to functions and and and and closures and sort of the functional aspects of the language Then there are other things that are that are not so great But that is a super great thing and it really does work very very well And now with with the VMs that that I've gotten good at optimizing that as well. It is it is a remarkably productive way to go I'm really enjoying it.
Yeah, I'm sitting here listening to To your knowledge here and I'm gonna get a little bit upstream perhaps a little bit meta because I'm thinking about uh, our universities and the things that were taught how to write a compiler in university, right? And how there are very few people who have the skill set and experience You know retool a compiler in every time and have a five x speed improvement Um, and no doubt enters that was like based on years of your experience of writing compilers How do we institutionalize some of this knowledge that that few people have how we pass it down to the next group of people who Um need to be writing compilers 10 years from now 15 years from now. Um, have you put thought into that? Is it just too hard a problem or?
I think that the best thing that we possibly could do is open source, right? I mean, that's what we're doing Yeah, source code for this compiler. You can have it right now. Just go cloned a different repository and there it is and it's not very I mean, it's it's 50,000 lines.
That's not I mean, it's a lot of lines, but it's not that many lines. So you can you can find a way around it. You can see how it's done exactly how it's Same thing like reading code and talking through code with people that are not You can't get away from that and because it's open source and you have these communities Maybe we supplement the formal education with go work on this open source project that contributes. Yeah, I think that's a very meaningful way to do it Yeah, because that will force you to actually understand how it works such that you can contribute, right?
The not the technical side that too, but also the community side that like you said earlier, it's a culture You know, you said there's open source. There's the real open source way. Yeah, I think part of institutionalized As we're talking about In contributing to open sources, it's not only getting the code right but also interacting with the community needs from the from what you're producing Yeah, well said well said well let's pause here a first sponsor break We get back we're gonna get back to adoption and why we've had you know, all of these large projects adopted and then we'll talk about in the small like how Can I adopt it? What are the steps I gotta take?
So pause here and you'll be right back Good news our friends at digital ocean are opening up a brand new european region in frankfort germany the first in germany FRA one is now open the new region features their latest cloud spec and the full range of digital ocean features including meditative Coros and ip version six something else that school is due to its placements on the german commercial in exchange Which is the largest internet exchange point worldwide by p performance this region will serve germany and its neighboring countries with Unperlo connectivity and speed the story of the germans start community is tremendous and digital ocean is hoping by launching this new region They can play a part in supporting the innovation and awesomeness that's happening in germany So definitely check out fra one for those Subscribing to the joys for the first time use our promo code change along april or change Well, may to get a ten dollar hosting credit when you sign up head to digital ocean.com get started and now back to the show Alright, we are back talking type script There has been a few large projects that announced that they will be type script in their next major releases The biggest one being angular which will be angular two will be written in type script and then also dojo two Will be written in type script if you guys had to guess or if you had some insight into Why now and maybe even some insight into if you were involved at all in the angular decision or if that was completely on their end In our city here How it's taken a few years, but maybe what's led to the increase in adoption lately? I can take a try to take side of that one. Alright, so I think one of the one of the things that we've seen in the last six months Now that yes, it's becoming close to ratified is this excitement in the community around yes, six Like it's at the point now where it's deafening but six months ago like the movers and shakers were looking at These projects that could be done with yes, you've got modules You've got classes you've got a new way of writing JavaScript that just wasn't possible before it So as a library author when you're thinking what what is my API gonna be like, you know six months from now or two years from now What is the new set of libraries that are gonna be built look like and I think as a library author You want always to be at that edge when you're showing that yes, we've got all this stuff There's no reason to go on to some something new we can do it here So I would say that that's probably what started taking off people thinking about what is the API look like now that Yes, six is getting a lot of traction. There's a lot of interest in making sure that the API is really low with that As far as typescript I mean typescript has been there kind of building up like we've been saying since 2012 We've been slowly building momentum and beating on this drum of like yes, six is great And you can get that plus some some good tooling last year when the the engo team announced escript At the engi euro conference They were talking about yes having yes, six is great and having types is great And then they also wanted this separation of concerns ideological annotations And after they announced that we kind of reached out to them and said that sounds great.
Let's talk about that So me and Andrew is and some of the engineers flew down and talked to them and said, you know What can we do like can we just take our ideas and kind of merge the philosophies and come up with a typescript? That's even stronger and capable of working with these really rich libraries So we've been working with the thank you team for about six months now Yeah, it was great actually I mean getting in a room together you very quickly discover you're all just engineers and You really all think about the problem the same way and then you have the same values, you know And then and for them Tikes is very relevant, you know and then and and ds six for sure and then you know we sort of have both So there were some things we didn't have like annotations and so we worked with them on that and and pulled in some some other folks from the dowser community It came up or or hitched on to the decorators Proposal for yes, and work with a cat suit that number and brian zerke That did the randallings work on a new project called a really and tried to get everyone thinking along Okay, what is the separation of concerns feature look like? You know, some people coming up from a metadata point of view like annotations on like Python point of view Protectors that can we make a single thing? That's been that's been interesting challenge It's nice to see everybody coming together one of the things that I was really bullish on a few years ago was the webkit project and just seeing you know People's I guess a political term stepping across the aisle, you know, Microsoft and Google here working together on typescript with angular Seems like a lot of good can come out of that Yeah, no, I'm certainly hoping I mean so far.
I think a lot already asked about it. Yeah, but yeah, absolutely It's been a great good. It's good. It's great team.
They're fun to work with the Instagram But it's been a lot of planning experience because I'm coming up from two different angles and consider real men talk the same Like with this school I like that the point you made their enders about Just the fact that you're all engineers, you know, you're all people in the end and even going back to your coming earlier about the commitment to open source And doing it the right way that way I mean when you take your flags down and you're talking about this open source and in general to the world You kind of have to be like Jared said study across the aisle You can't let your your badge sort of stock you from committing towards the future of what's good for the source code Yeah, yeah, it's kind of something that you who decided last episode You had a cat we had him on last show he was talking about rust with Steve cladnick and I had mentioned that rust is a mozilla research project And it is And he made the point of of saying it is a mozilla research project But mozilla embraces the open source model and it's not really a job of making it a community effort It's not all about mozilla. It's about an open source project that will forward the goals of mozilla as well as the goals of perhaps their competitors But the entire ecosystem and we have to come together around those these projects and you know everybody benefits from it There's also there's benefits from competition as well. So it kind of goes both ways It's nice people come together. It's also nice when they compete heavily Yeah, kind of we can kind of win both in both scenarios So let's talk about getting started from a from a layman's perspective if not not with the engler team or the dojo team But let's just say I'm just writing my own JavaScript.
I'm an application developer Maybe let's take it from the from the Microsoft camp as far as tooling goes and then maybe in like the the node camp as far as to When goes how do I get started with that trip? So if you're a Microsoft developer probably the easiest way is just to install visual studio So starting with visual studio 2013 update to TypeScript has been in the box. So you start up an application and you can immediately start up a type of application And go from there if you're coming at it from open source point of view you can mpm install type script and use a type of compiler Straight from mpm. Of course, it's it's all JavaScript right So all the all this type script is compiled away and we got JavaScript So you could if you wanted you could just clone the repo and run the type of compiler straight from the clone repo How the most leading up to date type I will say too that that that one of the things be because because we focused really hard on making the language service Language services open source.
We now have a number of really high quality plugins for all the popular editors out there So if you're using say sublime text or adam.io then there are excellent plugins for those editors There are plugins for Eclipse JetBrains has very good support in web storm for TypeScript and they're actually keeping up with the all the evolution in the language And that they offer a number of great refactoring tools in there as well. So so by and large I'm there there's remarkably good coverage for TypeScript across the board in development tools and IDs And like build tools like run to the call right as you dig into you know, whatever your favorite flavor is You can find a growing number of petripe plugins for these various systems I we should mention too, you know, one of the probably one of the biggest treasure troves of information for TypeScript is a Zaki top repository called definitely typed Um, I know you guys have looked at it, but that's all that this is something that happened entirely Organically in the OSS community and it's it's so worn by heart to see it happening too is you know people very quickly after we after we Uh shipped the first version of TypeScript realized that wow I can actually go write these declaration files for existing JavaScript frameworks and then get a much better experience when i'm using the framework in TypeScript And we provided we provided some some rudimentary declaration files for jQuery and node and and a few I think back when we had a little bit You know, but it was it wasn't a lot and then of course we've written down all the type definitions for the JavaScript runtime library and the html DOM But that was really all we had in the beginning and now we have this repository that is that that is I think now close to a 1,000 frameworks I kid you not 1,000 different frameworks have Pretty good coverage and some of them have very very high quality definition files up there And there are provisioning tools now like tsd that allows you to say hey Today i'm going to use jQuery with ember and this one of them are burnt on just like npm You'll provision your project with all the correct declaration files and lo and behold you get super high quality statement completion as you're authoring your code You know, just magically, right and it's it's fantastic and that's entirely our community effort And I just think that is like that truly speaks to the power of open source There's no way that a single entity could have done that that is something that only a community can do Having written that jcrae one that's okay weeks Yeah, that's spectacular. We'll definitely link that up in the show notes And you said it you said it well there enders that like this is the kind of stuff that happens in the open source community that you just couldn't Predict that you didn't have to ask for it. Somebody wanted it was a good idea and everybody just starts pitching in into their little wheelhouse You know if you're into uh, sammy js or you're into Encrypt or like whatever you happen to be into in such a huge job script community Um, you just you just play your part and you have this great community resource spectacular.
Yeah, exactly So what about learning? So that's how you get technically started, but what if I don't have any idea what type of notations are or I I'll learn how to write them. How where do I go for that? So there's a there's a couple of resources on the website that you can use to get started Um, we've got some samples So if you if just staring at code is the easiest way for you to learn, um, you can go and there's a sample section on the website You look through that and there's each of them are fairly small um, examples of using node or using jquery, uh, just enough to kind of get you started Uh, there's also a handbook uh, the handbook tries in plain english as best as I've been able to write plain english To to walk you through with the various features and the 1.0, uh, the 1.0 language And we'll we'll be kind of revising that um here shortly They're kind of pulling up to date with the later versions of language But if you read through that, there's tons of examples tons of plain text to kind of understand And you know, maybe to call up the spec if you are the kind of person that really likes to dig into the details There's the type of scripts back and you can read that and really understand it in a deep deep level Yeah, speak with a spec I noticed that was in a pdf is that spec ever gonna be open source on github or is it already open source And this is compiled from a repower system.
It's it's it's well It's available in three different ways as a as a doc file as a pdf file and in markdown So it's it's on there if you just go to the front page on our github site and then link there's a link to language specification And that's a markdown a single markdown file. Okay, guys. I'll leave that up then Yeah So next up let's talk about the future a little bit. Um, you have a road map on the website that you You told us about maybe kind of just verbalize the road map a little bit and tell us where type for sat as far as I think We are at a 1.4 release and 1.5 is in alpha or beta and then kind of what you guys see it going to next Sure, so the 1.5 release is going to close a lot of the gaps that we had in yes, six compatibility I think after one five there's only a couple of features left class expressions Generators that we'll need to add to kind of finish up the yes six competitively So that's that's kind of a nice milestone for us to actually be able to say yes We are super self JavaScript and that superset is a super set of yes six Um, we're looking at yes seven features editors mentioned asin go way earlier That's gonna be fun for kind of the promise programming style to be able to have nice clean asin go make code We've been talking more recently about things like JSX and exploring JSX support There's a port request now if people want to kind of hop on and help out and give us their feedback We would love that so so definitely definitely do that and decorators.
So here's another one Yeah, so so um, basically we're like one four is is the version that's out there now one five is is imminent You know within a month or two um we kind of ship that One six will be the one that that rounds out a few more the missing features and then finally two Will will be done with with the six and and the seven things that that we so far have have on our roadmap But then i'm sure about envelope ramped off some more work, you know, so It just it just keeps on coming it seems I know that we're talking now about doing something around Module bundling also to make it easier to consume the six modules in a browser environment Which today requires you to use an external module loader, you know, so there's like there's there's a ton of stuff We can do and we can of course always do more ID features and so so there's no shortage Yeah, exactly. I mean one of the things with with the JavaScript committee is that they're now like one year cadence So every year they're gonna revise Equiscript so yes seven is next and yes eight is the following year. I mean we're gonna be busy Just keeping up and being a super set with a nice rich type of stuff and tooling that builds on top of that So it's pretty much done and now it's just gonna be in maintenance mode and now just keeping up Or is there additional things that you can do to make a type system better over time as well? Oh, no, there are definitely things we can do to make the type system better You can always make types better.
I mean we were talking with the flow guys about union types And they're like great if you have an if an if statement and then you check what the type is and I say man You know in the body the if what the type is and as we're brainstorming them like oh, that's a no greater Let's throw that in there too. So as people do explorations I think the type system is just as organic as a job is to blame which is going to grow and kind of incorporate patterns and whatnot Yeah, yeah, we're always on the lookout for You know, why did I have to put a type test here? Why did I have to have this annotation or you know, is there a way we can get rid of that? You know, so is there a way you could capture this this pattern or this idiom, you know in the type system So so we could better, you know, so to understand it without you having to annotate anything So that that's gonna be ongoing plus, you know whenever a new feature Is introduced in the language we have to sort of work out the type theory behind that feature right and get that integrated into types So so there's always that ankle to it as well We've got 1.5.
It's an alpha you just announced about 20 days ago You get your road map, which is I love your road map too by the way It's great that how it's linking out to issues that have commentary from you all in the community sort of feeding back into this I think it's a really great way to land out a A road not not just a straight up text But when we're talking about the road map and future versions of types of what do we let's have some fun and hypothesize Each of you towards what the future of that trip might might be where would we be at any what we'd be talking about? Well, I mean I I I I'll be a little bit pedestrian I still think we're gonna be talking a lot about years six and we're gonna be talking a lot about modules because years six Isn't quite done when it comes to to to module, you know, they've specked the language syntax But they haven't actually specked the underlying runtime load or semantics And so so there's still a whole bunch of gyrating going on in the community around that right now I think some of the new years seven features we're gonna be looking at we're gonna be looking at different development tools to integrate with maybe Deeper integration with build systems and and sort of this whole the whole cycle of I added something and now I click on my browser I want to see the result over there and and shortening that as much as possible right and making the compilation step as automatic and as Ephemeral as possible right is this something that we're gonna that we're gonna keep iterating on for sure Are there any particular adoptions that you're looking forward to like is there anyone out there that is a perfect candidate for it that If they were listening to the show right now, you know, they would you would put them on your radar essentially to say y'all should adopt Petrips well, I think you know anyone who has more than say 10 or 20 thousand lines of JavaScript in their app Really owe it to themselves to take a look at this because it really is a time saver I I I I will say, you know, like like just you know the project that we work on daily Which is the types of compiler itself, but it but in a sense, it's just a large JavaScript app, right? It's a 50,000 line JavaScript app. I shudder to think what it would be like to write that without types I don't I can't even I can't even imagine I mean because we refactor that so much right and that's what gives us our agility and the ability to keep up with all of these features and These new things that are happening is like that you can trust the system You can go okay I'm gonna now I'm gonna refactor this last or this interface or this function into these two things and I'm gonna rename these properties and boom boom Done and now I now I get all this time back that I can use to creatively think about the problem instead of doing the manual labor That it otherwise turns into right and to me that is just like that's just bread and butter I mean you just gotta do that if you want to stay competitive, you know, so yeah We have a few closing questions I share with you all via email that we got several more than to do today And the first we can take turns answer you start with you, but who is your programming hero?
Yeah, Jonathan I were actually we're talking about that at lunch I think you know if I have to think background my career and who had the sort of biggest impact and then launched me into this whole thing It's probably the inventor of Pascal and Nick Lasby Who's I I was fondly recounting a bunch of those the book to his book called algorithms, but plus data structures equals programs One of my favorite computing books. I remember reading at cover to cover an understanding every word in there It just makes so much sense. It is so simple That's how I learned about hash tables, which I I didn't know about when I first wrote the first version of turbo Pascal And then I read about these things called hash tables. Wow that what really and then I put them in and I would compile it twice as fast I'm like awesome You know, so it's it's that to me that was that was just that was good stuff, you know And his career has been amazing.
He's had a huge impact on our computer science and on on my career. Yeah, wow I see he took my answer Really? We were talking at lunch. I was like, you know, cost period is like one of the guys that really stuck to his guns and said look Simplicity is important.
Programmer productivity is important Don't complicate it put them as close to solving the problems they can and let them rip and that's why Pascal is so easy to implement as a language So writing on pilot for it is really easy about learning it is really easy And his thoughts like he never he never left that as he made each one like modular and over on he was still always all about Trying to find a simplest way to solve the problems and I I you know whether or not his particular aesthetic is something that that really fits You know, you like I just I just have to respect his velocity and kind of what he brought up Uh something else someone else that I like because he's entertaining us Simon Payton Jones So one of the adventures of pasal is uh really fun to listen to really fun to kind of get excited about what is possible in programming Which is um, I was always kind of well back to him sometime. Mm-hmm. All right We got uh our last question is coming back to type script here. I guess is uh Either answered together or individually whatever makes sense, but it's pretty simple, but um, I guess we may have answered it to a degree But how can the community listening in so energy answered anybody's got 20,000 lines of job?
That needs to look at type script. Um, but in other ways, how can the community step in and either Take part do something with it or help out with type script How can the community begin to support and show support back to you all and move the the mission forward? Why you know, I invite anyone who cares to come join us on on get up and put up all requests or and and and and and And speak up on issues, you know our post-new issues, you know our new requests for for features That's a great way. We are all up there.
We live and breathe our daily programming lives on on get up So so we're very easy to reach that way. Um, and and there's all these community stuff like anders are talking about definitely types Get on there if you're in the library you love that you don't see or you know, there's like little errors that you can fix I mean, it's gonna be trivial to fix that dts file. You just go in and say oh, no, the type is actually this not this Um, and you're gonna help yourself and others Um, all the editors and whatnot just using these tools and sending feedback And making it a better tools. I think any in the road map that's making take part in under the 1.000 alpha now But you have things like exposing the editor interface to ts servers that's something that is better served by the core team or better served by Those that can be are you looking for adoption support growth?
Where can people I guess is that a good place to look at? I think both I mean, I think it is whatever whatever strikes you fancy if if you have an editor that you're implementing and you have a plug-in model or Or you have a favorite editor and then you know how to write plugins But that editor maybe write a type trip plug-in and try to use our new ts server infrastructure for that Which is what we use for the sublime plug-in for example Or if you're interested in compilers or ices or whatever you are coming to the other side and then help help us out, you know, with With your favorite feature or you know, if you're interested in programming language design I mean one of the things that we've done in the last year or so when we move to github Was we put all this programming language design we're kind of doing behind closed doors We're like enough all the goes on github So all the languages are all of the language design is now done on issues in github And you can jump in and kind of give your two cents on if this feature You know fits with the kind of problems based or there's little gotchas and you realize what the gotchas are and you can let us know It's all kind of out there for people to comment I noticed when I was looking at one of your um actually the ts server wanted to mention the the issue out there You have a label of cli or cla not required is there a cla part at some point? Uh, yeah, so there's uh when you contribute code to the typescript code base Uh, you sign that contributor license agreement And there's uh, there's a little robot behind the scenes that it's checking all the all the pull requests coming in We're trying to make it a little less noisy than it big on every single pull request That's something else you talked about too. I believe it was with go when I was talking to Andrew Durand he was talking about how they Um, we go back to my notes on that way.
They're using a particular external feature if it's called Garrett g-e-r-i-t-t I believe or it um and it's an external code of use system that kind of builds into Um a cla thing because they have a special cla for contributor. So yeah, probably have similar problems You look at that listen that show or talk to andro Well, that's it for the closing questions. Um, I think you know we zoom back out TypeScript seems really neat because it's something you can begin using today without having to Really fully adopt it and sort of inch your way in as you get more and more courageous into the typeScript world So pretty exciting to have this conversation with you guys is there anything else that you want to mention before we tail out and Glad to show Um, no, I can't think of anything. I think we covered a bunch of stuff here.
I I really appreciate the opportunity to show here I think this was on twitter. We're gonna follow you at oh, yeah, we're both on on Twitter. Yeah My handle is a high A-h-e-j-l-s-v-r-g and mine is at jntr-n-r and there's also the TypeScript Project as its own at types would link so feel free to follow those or ask us questions through twitter And one thing actually now that I have time to kind of ask your audience if there are people in the audience that are big TypeScript fans or big TypeScript users Recently we just started putting little logos on the typeScript website to kind of show off all the people that are TypeScript fans Yeah, so we're trying to kind of show off. You know, here's here's the here's our showcase So if your project or if your company or big typeScript users Let us, you know, let us put your logo up there and kind of show off that you're doing all this typeScript awesome That's the friends of TypeScript if I'm that's okay.
Yeah, right awesome Well, definitely uh, if I have any guys on the show today, um, I know we had several conversations earlier to get this show on there And I'm glad it finally worked out to get timing there. We had spring break. We had something so finally got you guys on the call today In the future for listeners of the team while we have a show planned to talk about 17 years of curl with Daniel Steinberg and we're also gonna have that conversation on roots in bedrock. I was sick this week You're listening to this in the future and I'm talking about it in the past but long story short I was six we don't actually have a show that uh, we should for roots so there was a a break there And we had to touch on instead so uh, thanks to the sponsors and thanks to all you for listening and uh with that fellas Let's say goodbye