Microsoft's Plans To Fork And Extend Node.js Alarms Developers

Microsoft's Node.js Plans Alarm Developers

Microsoft announced that it is going to fork and extend Node.js, leading to concern over what the move means for the long term future of Node.js.

Microsoft has announced that it is going to fork and extend Node.js. Node.js is a platform for developing server-side applications based on the Javascript language. It was originally developed by Ryan Dahl and the open source community and later adopted by Joyent and runs on Google's V8 Javascript engine. 

The new fork from Microsoft is based on Microsoft's Chakra Javascript engine and is said to facilitate the running of Node.js-based apps on Microsoft's Windows 10 IoT Core on ARM processors. In that environment, a typical Node installation won't work because the environment only supports JIT compiling with Microsoft's Common Language Runtime (CLR) and Chakra. Among the Windows extensions that Microsoft is including in the fork; the ability to access universal Windows Platform APIs. 

The forked version of Node will work on other versions of Windows as well, raising concerns among developers about whether Microsoft's extensions are designed to lock-in developers as well as the users of those developers' apps into Microsoft's operating systems.

Given MIcrosoft's history of forking and extending other technologies like Java (where it also offered availability to Windows APIs), it's hard to tell at this point if this is good or bad news for the Node community. Microsoft's fork of Java, then a technology from Sun Microsystems (now a part of Oracle), sparked significant industry controversy and culminated in a $20 million legal settlement in Sun's favor. 

On one hand, many of Microsoft's recent moves under its new CEO Satya Nadella seem to have it leaning away from the  "all roads lead to Windows" approach it has taken in the past with Java and browser technology. For example, not only is Microsoft contemplating the open sourcing of Windows, it is developing mobile versions of Office for non-Windows operating systems like Android. So, this could be a good thing if Microsoft's motivations aren't about locking developers into Windows and truly guaranteeing portability across Javascript engines over the long run. 

Microsoft appears to be calling this a "temporary fork" implying one of two long term outcomes; (1) somewhere down the line, its fork will be merged back into the official distribution of Node, or (2) it will fix the incompatibility between the official distribution of Node and Windows IoT Core running on ARM. Of the two choices, the former is highly unlikely, particularly if it involves extensions that require a Windows operating system. 

Leaning in the direction of the first choice however, the authors of Microsoft's announcement --- Microsoft Chakra Senior Program Manager Arunesh Chandra and Microsoft Chakra Principal PM Manager Gaurav Seth --- wrote "We will be submitting a pull request to Node.js after stabilizing this code, fixing key gaps and responding to early community feedback." 

Still, some developers like Dave Winer, a software developer that does Node apps, have expressed concern over what the move by Microsoft means for the long term future of the Node.js community and others are responding. 

Said Winer in a blog post

Until now Node has been a pretty stable thing. You can move Node apps from one system to another without much concern about compatibility. Now all of a sudden, that's not true. If you're running on Microsoft's Node you might get a different result than running on some other Node.

Responding to Winer's Facebook post regarding the matter (which was deleted after this article was published), the fear and loathing was palpable as evidenced by the posts displayed below:

Microsoft's Node.js Plans Alarm Devs

In a statement that was clearly designed to assuage the concerns of the developer community, Chandra and Seth also wrote "The current set of changes not only enable developers to use Node.js on all devices running Windows 10, but also provide them an option to choose their preferred app model – Classic Windows v/s Universal Windows apps. Going forward, we plan to work closely with the Node Foundation, the Node.js Technical Committee(s), IO.js contributors and the community to discuss and participate in conversations around creating JavaScript engine agnostic hosting APIs for Node.js, which provide developers a choice of JavaScript engine that they would want to use in their Node.js workflow – all with the goal of making Node.js succeed across all platforms and devices."

Of course actions speak louder than words and so the developer community will no doubt be keeping a close eye on Microsoft as it develops its interests in Node.js.

Be sure to read the next Application Development article: Why Micro Moment Based Workflows Should Inform Your API Strategy


Comments (11)

Man, Microsoft is responsible for messing up js in the first place by strong arming the committee into not fixing early errors. Then it tortures us for years with their horrible ie browser and how it "interprets" js. Now they want stick their dirty paws up in node. It can only be a good thing.


Nothing you wrote there makes the slightest bit of sense.


Has Git been destroyed?  Microsoft are contributors to that project as well.


Why customize and make your flavour if you can make adapters around the current platform? Let's brand it Microsoft's NodeJS and package it into Visual Studio, there you go!



Tahnks for responding Ramonck.  Very true.  As you can imagine, there are many forces at work here. I'm guessing, to the extent that Microsoft is trying to persuade the bearers of the Node.js standard, that what you propose will be the outcome. Otherwise, portability is shot. Either that, or, maybe we'll see an evolution in standard operating system API calls (along the lines of the standard  Javascript APIs turning up in the browsers).  Then, the same call to the underlying OS in Windows will work on Linux, etc. I'm sure this raises all sorts of security concerns. But OS level access for some things, like directory service (authentication, access control, etc) might be advantageous for performance reasons.


This is quite the hit job. The readme for the fork *clearly* indicates that they intend to contribute this work (to make the JS engine used by Node to be pluggable) back to the main branch. Basically they're making a great contribution to the Node community and doing it in exactly the standard way that open source projects work today.

​Having the engine be pluggable is really valuable. It means Node gains independent implementation of the ECMAScript standard. It means better support for non-Google platforms (e.g. JIT on iOS via JavaScriptCore could build on this), and that developers can get better support for ES6, for example, and the better performance offered by Chakra over V8.

​I don't see any basis for the fear-mongering you and Winer are pushing here. If Mozilla did exactly the same thing, I wonder how you'd have reacted.


Hey Brandon,  thanks for commenting on the article.  I am not sure how you can say it is a hit job given the fact that I clearly presented both sides of the coin, saying it could be good or it could be bad. In fact, the thread(s) that I picked up on were decidedly negative and my approach here was to report on them, but also report on the clear signals from Microsoft that it is changing its culture. That said, fair reporting means also reporting on past behaviours. Also, just because Microsoft or any company says its going to do something, especially in the standards realm, does not mean that it will eventually do that, or that the standards regime in question will accept it. So, it is very much a wait and see situation and I for one hope that it amounts to the huge net positive that you're so optimistic about.


I think people are overlooking Microsoft as of late. They've made a lot of important steps that I never thought they'd take. Their support of node and the node community has been huge and it's sad how few people realize it. Windows Azure has some of the best node support you can find. It was one of the first hosts to support both node, websockets, and continuous deployment all at once. That originally attracted me to the platform, but since then I've gotten nothing but awesome updates that continue to make things smoother and easier.

I wouldn't condemn this fork just yet if recent MS actions are any indication of the kind of thinking they are doing. I'm not saying they couldn't royally fuck it up like they have so many other things, but I feel like there is plenty of reasons to reserve judgement and hope they continue their positive trend.


@chevex... great reply and I think you speak to the larger question as to whether a leopard can change its spots. Under its new CEO,  it certainly appears to have the will. On the same token, history has proven that old habits die hard. Microsoft is a huge organization with enough cash to play the long game.  The question is what long game? For example, with the pendulum swinging all the way towards mobile computing, Microsoft is having a tough time gaining traction against Google and Apple. And, if all roads don't lead to Windows or Azure in one form or another, then what? 

The key to success will, as usual, be the developers.  Developers were what made DOS and later Windows the successes that they were.  Microsoft must not only compel existing MS developers to stay in the ecosystem, but lure others to it.  It has to win the hearts and minds of developers like the ones at Parse who picked Google's Go over C# because of the perception that, despite all the moves Microsoft is making, Linux is a second-class citizen in Redmond. 

Finally, from where I sit, the pace of innovation on the developer front is moving so fast that  I'm not sure any single vendor can keep up. Microsoft, and any vendor looking to win the hearts and minds would do well to heed the message in this bit of satire. Not only is there more than a shred of truth to it, it speaks to how easily legacies can and will be left behind.


So I guess Open Source is everything BUT Microsoft then? Wierd mentality expressed here.