Who built Microsoft TypeScript and why

Who built Microsoft TypeScript and why

Summary: Microsoft Technical Fellow Anders Hejlsberg isn't the only big name behind Microsoft's new TypeScript project, codenamed Strada.


Earlier this week, Microsoft went public with the early-preview fruits of a two- to three-year project at the company to create a "superset" of the JavaScript scripting language.


That effort, TypeScript, which was codenamed "Strada" (see more on the codename below), is available in preview form on Microsoft's CodePlex site. The open-source TypeScript compiler and the spec are there, as is a plug-in for Visual Studio.

As interesting -- and controversial, if you check comments around the Web -- as TypeScript is, the back story is equally intriguing.

Microsoft has provided a number of HTML5, CSS and JavaScript tooling as part of Internet Explorer (as of version 8). With IE 9, there were even more of these so-called F12 tools for creating, testing and administering IE sites. Microsoft also introduced "Chakra," the JavaScript engine for Internet Explorer, as part of IE 9.

Even though its roots seemingly are in Internet Explorer, which is part of the Windows client division, the TypeScript team sits in Microsoft's Developer Division.

The most publicly recognizable name behind TypeScript is Microsoft Technical Fellow Anders Hejlsberg, the father of C# and TurboPascal. But Hejlsberg isn't the one who came up with the idea for TypeScript.

TypeScript is actually the product of a team of about 50 people, headed by Microsoft Technical Fellow Steve Lucco. Lucco's title is Chief Architect for Javascript runtime and tools. Lucco led the team of about 30 people or so who built Chakra. According to Lucco's updated bio on LinkedIn (not on Microsoft.com, as Microsoft has removed this year the bios for its Technical Fellows and nearly all other managers from its own Web site), he "started the TypeScript team, co-designed TypeScript and built the first TypeScript compiler."

Another key member of the TypeScript team is Program Manager Luke Hoban, who has been working on the JavaScript language and development experience. His current focus is on ECMAScript standards, Internet Explorer JavaScript engine standards support.

Yet another notable on the TypeScript team is someone Microsoft officials haven't mentioned in a while. Erich Gamma, a high-profile hire from IBM who joined Microsoft in 2011. Gamma is a Distinguished Engineer in Microsoft Zurich. He used to be the technical lead of IBM's Rational Collaborative Application Life Cycle management work and also the former technical lead of Rational Team Concert. Additionally, he was the original lead of the Eclipse Java development environment and one of the leaders of the Eclipse Project.

When he joined Microsoft in 2011, Microsoft officials didn't say exactly what he'd be working on. They did say he'd continue to operate out of Zurich, Switzerland, where Microsoft would be "opening a small Visual Studio development lab with Erich as the lead."

It turns out Gamma is also part of the TypeScript team, as can be seen by his GibHub commit to change the name of TypeScript from its codename, Strada.


Microsoft's JavaScript interest

It's clear Microsoft was quite serious about bringing typing and manageability to JavaScript, given the high-titled names on the team roster. But as interesting as the "who's" are the "why's" behind the project.

Since Microsoft took the public wraps off TypeScript on October 1, there have been plenty of "here we go again with the embrace and extend thing" charges levied against it. Why didn't Microsoft just back Google's Dart instead? (Besides the fact that Dart is attempting to replace JavaScript with a new language and type system, it seems kind of obvious to me Microsoft wouldn't back it, given it's arch-enemy Google's thing, but...) Why not rely Script# or CoffeeScript to make JavaScript programming easier? And does JavaScript really even need static typing, some have asked aloud?

As fun (and believable) as some conspiracy theories are, there is a practical side as to why Microsoft jumped into the JavaScript tooling space in a much bigger way. Some Microsoft teams are programming in JavaScript, too.

In a Microsoft Channel 9 video posted this week, Hejlsberg, Lucco and Hoban mentioned in passing some of the driving forces behind the company's decision to get into the JavaScript tooling space. It turns out one of the big motivations was the experience of other teams at Microsoft who were attempting to develop and maintain Microsoft products in JavaScript.

Lucco cited the Bing Maps team as one that has encountered difficulties in making JavaScript scale. He also mentioned that the TypeScript team has worked with the Office 365 team. (He didn't specify what that team is doing with JavaScript, but it's likely connected to the development of Office Web Apps, the Webified versions of Word, Excel, PowerPoint and OneNote.) Hoban said that the TypeScript team also has done work internally with the Microsoft teams building Windows 8 apps -- including, I'd assume, the Bing AppEx team.

None of the TypeScript folks in the Channel 9 video mentioned any connection between the TypeScript team and the "Isotope" team that is working on the Windows Azure and Windows Server Hadoop variants. But it wouldn't surprise me if these two groups have or will collaborate, given the coming Microsoft Hadoop flavors will include  a "JavaScript framework for Apache Hadoop that will enable JavaScript developers to perform iterative prototyping and interactive exploration of data in Hadoop."

The TypeScript team has tried to be almost anthropological in its work, said Lucco during the Channel 9 interview. The focus has been on "what people do in JavaScript and what it really means."

What's your take? Do you think Microsoft's decision to create a JavaScript superset was driven by practicality and internal need? By wanting to put its own stamp on JavaScript? Both? Neither? 

Topics: Software Development, Microsoft


Mary Jo has covered the tech industry for 30 years for a variety of publications and Web sites, and is a frequent guest on radio, TV and podcasts, speaking about all things Microsoft-related. She is the author of Microsoft 2.0: How Microsoft plans to stay relevant in the post-Gates era (John Wiley & Sons, 2008).

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.


Log in or register to join the discussion
  • What I wonder is why they havent released a C# to js compiler.

    That way everyone could use the best language to develop in when also building browser client code that have to run in any browser. I'm sure their internal teams would rather use C# than either typescript or javascript.
    Johnny Vegas
    • Script#

      It's called Script# and it's a project by MS employees. More info here: http://scriptsharp.com/
      • script#

        Do yourself and anyone who has to maintain your code a favor and do not use script#.
  • Obvious Step

    When Microsoft is pushing HTML5 + JavaScript all over the place, great tools are a must. Until today, I'd pick C# over that combination anytime because there are much better tools for C#. IntelliSense alone is worth this project IMO.
    • Too little too late to save JS

      The right fix for HTML/JS is simply copying everything SilverLight does and then renaming it to HTML Six and be done with it.
      • Joke?

        Not sure if is a Joke or the most stupid comment i've ever seen.
        Jaydson Gomes
    • Re: I'd pick C# over that combination anytime...

      Certainly, and that’s what Microsoft has been pushing the last ten years.

      Except, the rest of the world refused to follow, for some reason.

      So now Microsoft has to backtrack and admit that HTML/CSS/JavaScript leaves C#/DotNet dead in the water. That’s life, you can either deal with it, or go back to burying your head in the sand.
      • What a foolish thing to say

        People like you Ido17 give intelligent people a bad rap. What an out right stupid thing to say. If your education and experience(or lack thereof) was more than a thimble full, you would know a few things. First, every tool has its place. Second, JavaScript has long since outgrown its intended purpose and now needs a major overhaul. Having proven to all readers that your capacity for deep thinking is severely incumbered, I would expect you to understand the benefits of a typed system. However, in the event that you have a fleeting moment of enlightenment at the exact moment you are reading this, typed systems increase speed of development, reduce errors, and increase adopt ability through published interfaces. To say this at a level you can understand , JavaScript blows.
      • What about

        Java, Ruby, Php, Python or anything that's not HTML/CSS/JavaScript?
        They're dead too then.
        Nice work troll.
        • Re: What about Java, Ruby, Php, Python ...

          Interestingly, Microsoft tried to build implementations of Ruby and Python on top of its Dotnet runtime--anybody remember IronRuby and IronPython?

          They didn't succeed either.

          And what's with calling people "troll" just because you don't agree with them? Isn't that trolling? Or is it something Microsoft fanbois have to do as part of their rewards scheme?
          • Success?

            Not sure how you measure the "success" in something like this as it pertains to Microsoft since the fate of the "iron" languages is not really decided in their realm anymore.

            Microsoft donated these projects to the open source. I believe the Mono project handles most of this now. In open source, success is generally measured to a degree by maintenance and support.

            And while I agree IronRuby has sort of fell by the way side on that front, IronPython is still being actively supported, and just had a new major release just a couple months ago.
      • Joke? Serious?

        How ironic that I was still laughing after reading Jaydson's "Joke?" reply above, which I agreed with until I read the very next blog... yours. Is Ido17 and Lbeige the same person? Perhaps twins separated at birth? Open your minds... sheesh!
  • Not a " java script subset"

    From wtaching the cahnnel 9 video, I ouldn't call it a java script subset becuse it doesn't chnage the java script language. It uses celever techniques to infer types. This will be very useful for development and debugging. But the code it generates is 100% java script.
    Gary Rostami
    • That's why ...

      ... they explicitly stated that TS is a SUPER-set of JS - it adds things to JS while fully supporting JS itself.
  • Erich Gamma's primary "fame" is being part of the "Gang of Four"

    The "gang" is made up of the authors of the classic text: "Design Patterns: Elements of Reusable Object-Oriented Software"

    It sits on the bookshelves of a *lot* of people in this business.
  • As someone who is building a startup ...

    ... atop web technologies, I applaud Microsoft's direction with TypeScript (TS).

    JavaScript (JS) is a mess. While you can eventually coerce it to do most of what you want, doing so results in highly impenetrable code that is very hard to decipher, support and maintain.

    We tried writing in CoffeeScript (CS) but since this is an entirely different syntax to JavaScript, developers often have to translate in their minds what JavaScript they want to see output into the CoffeeScript they type.

    CoffeeScript also has its own idiosyncrasies such as its tab scoping (compared to JS' {} scoping) which throws A LOT of developers off and which can make it VERY hard to find bugs caused by one space mistyped in the wrong place.

    Script# (which converts C# to JS) introduces similar issues to CS in that has a substantially different syntax semantics to JS and thus results in the developer having to continually check whether the generated JS is what they wanted/meant.

    For us, TypeScript (TS) is VERY interesting because:

    1) It's just the right amount of syntactic sugar over JS providing explicit module, class, interface and inheritance syntax and semantics.
    2) TS' type-checking mechanisms have also helped us identify several issues in our code that 4 thorough code-reviews failed to identify.
    3) TS is just JavaScript-with-benefits so pasting existing JS into our code is quick and simple.

    I just want to re-state a FACT that many are too arrogant/ignorant to accept: Humans are LOUSY compilers. Compilers/code-analyzers do a MUCH better job of identifying human-written code that breaks the rules. TS is a powerful tool that helps developers (even very experienced developers like us) find and eliminate subtle, but impactful bugs BEFORE we test/ship/deploy. This is A GOOD THING!
    • javascript++

      then what we want is a new javascript - based on the old, but with a fair chunk of backwards compatibility still in place, ready for the next iteration where some of the old cruft is really removed for good. The standardisation effort to do this must come from the JS standards body and find its way into all the browsers. Otherwise, its just junk. Dart is practically an experiment, Typescript is a Microsoft extend (etc) thing.

      If you really wanted something new and good, you'd support NaCl in the browser - performance is the key to browser-based apps replacing the desktop UIs.
      • Ecmascript Edition 6

        ...is doing a lot to move towards the next evolution of javascript in a great direction. A lot of what makes TypeScript great besides the design time tooling is going to be part of Ecma script Edition 6.
      • The thing is...

        This is a super-script languange (all JavaScript is TypeScript, not all TypeScript is JavaScript) that compiles into 100% compatible JavaScript.

        In a lot of ways, this satisfies your what you are asking for:

        1) it's a "new JavaScript" - based on the old but with 100% compatibility in place
        2) it's output runs in any environment modern JavaScript runs (all modern browsers, Node, Win8/WinRT)

        It's not a "Microsoft Extend" thing in the traditional sense of a "Microsoft Extend" thing. If I use it, there's no lock in to Microsoft anything (I don't even need VS to run it, the compiler runs on any platform). Even the development environment tools (like the goop needed to get "Intellisense" (statement completion) to work are written in TypeScript and so are completely transportable.

        Even if Microsoft goes out of business next month, I'm not that screwed. The output from Typescript is "idiomatic" JavaScript; it's readable and written using the standard JS idioms. I can just throw away my TypeScript source (while whimpering) and start supporting the JS that it outputs. Look at the "Playground" samples in the Anders video. The JS it produces looks like JS that I might write
      • NaCl is not the answer...

        I agree performance is the key but NaCl is not the answer. It doesn't fit the web paradigm very well. You would have no support for deep linking or integration with other SAAS's. I only see NaCl good for games or simulation apps.