Microsoft and the Open Web

This is the editorial from my latest newsletter, subscribe here.

A fellow developer remarked to me the other day how, in the corporate world, Microsoft’s .NET is one of the principal development stacks, whereas, for most web developers outside of that world, Microsoft is rarely given a look. The company doesn’t exactly have a great track record among web developers (I’m looking at you, IE and FrontPage).

In recent years Microsoft seems to have taken more of an interest in the ecosystem outside of its own technologies, releasing the TypeScript language, Visual Studio Code editor, and the RxJS reactive extensions library. With the release of the Edge browser, MS seems to be interested in shaking off Internet Explorer’s bad reputation and making a commitment to supporting web standards.

For JavaScript developers, one of the big benefits of Edge is the rewritten Chakra JavaScript engine, which Microsoft has declared will be continually updated to reflect the “Living Web”. As such, the latest version of Edge currently supports 95% of the ES6/ES2015 standard.

In January this year MS open sourced ChakraCore, which is essentially the Chakra engine from Edge minus the browser and Windows Universal Platform bindings. But why is this of interest to us JavaScript developers? For a start, MS is actively encouraging application developers to embed ChakraCore in their software, which may lead to more desktop apps offering scripting/automation in JavaScript.

A far more interesting development is Microsoft’s aim of positioning ChakraCore as an alternative JavaScript engine for Node.js. MS has already made available a work-in-progress version for developers to take for a spin.

This will benefit Node developers in the long run, as competition between the engines should see performance and support for standards improve, just as competition in the browser market did. Additionally, those improvements to the Chakra engine will make their way back into Microsoft Edge, which is a win for Windows web users too.

Microsoft is also working on new diagnostic APIs for ChakraCore and new debugging tools, including time traveling debugging, which will allow you to step back through the code (and across callbacks) from a breakpoint.

Node is currently pretty tightly coupled to the V8 engine, so there is still work to be done to allow the engine to be easily swapped out, and there is a small subset of modules that don’t work with ChakraCore due to being natively bound to V8 APIs. With input from the community, though, these issues should hopefully be resolved fairly quickly.

Some have commented that Microsoft seems to be evolving a more positive stance towards open source and web standards, in a break from the company’s past attitudes. Whatever the motivation, a bit of healthy competition for Google’s V8 engine can only benefit the JavaScript ecosystem in the long run.