
The Future of Node Is in Microsoft’s Fork - bpierre
https://blog.andyet.com/2015/12/31/the-future-of-node-is-microsofts-fork/
======
gauravseth
I am a PM on the Chakra team. It is encouraging to see all the excitement
after we announced at Node Interactive that we’ll be submitting a PR to enable
Node to work with Chakra and bring the power of Node to new platforms
including Windows 10 IoT Core. As we mentioned at that time, our goal is not
to compete/replace but rather help Node and it’s ecosystem grow. ChakraCore is
going open source in January w/ plans to go cross-plat being one of key things
on our roadmap (more details on roadmap to come when we make the sources
public). We’re also working on a patch to submit to Node mainline once
ChakraCore sources are made public, which will help us and hopefully the Node
technical committee establish a neutral binding layer that could eventually be
used by more than one JS engine implementations to work with Node. As one
could imagine, there’s definitely a lot of work ahead. LMK if you have
questions, feedback etc.

~~~
morebetterer
It would be very interesting if you could share your team's challenges and
insights in creating a Chakra shim that exactly mirrors v8's C++ API so that
it's a drop in replacement for v8 for Node. Is it difficult to maintain the
Chakra shim against an ever-changing v8 API?

~~~
gauravseth
We plan to do a blog post about this when we submit a PR to mainline, but you
can see the session at Node Interactive where we discussed some of these -
[https://www.youtube.com/watch?v=Zbc3SwMDWf0&index=14&list=PL...](https://www.youtube.com/watch?v=Zbc3SwMDWf0&index=14&list=PLfMzBWSH11xYjL8oFumSfzOf6-kr8_t-o).

~~~
morebetterer
Good stuff.

Looking forward to the neutral binding layer for different javascript engines
for Node.

Ideally for a given platform a native Node module should be ABI compatible
with v8 Node or Chakra node - without the need for recompilation.

------
krisdol
"The Node.js Foundation would be wise to migrate to Chakra"

Actually it would be extremely unwise, and here's why:

"In order to use Microsoft's fork, you need a Windows 10 machine with the
November update"

When Chakra is open-source and cross-platform, its differentiating "killer"
features will be merged into node's V8.

SpiderMonkey has been beating V8 in ES2015 adoption and V8s own benchmarks,
but even that wasn't enough for it to become the new node.js runtime. We have
yet to see if what Microsoft brings to the table is more convincing.

~~~
mambodog
Google doesn't care about the server-side use case for V8. Microsoft, on the
other hand, has some skin in the game, as they are pushing Node on their Azure
platform. While I wouldn't want to see Node _controlled_ by Microsoft (or any
single vendor for that matter), it's not outside the realm of possibility that
Node will be better off using (open source) ChakraCore over V8.

~~~
scriptproof
See at Google Coder
([https://googlecreativelab.github.io/coder/](https://googlecreativelab.github.io/coder/)).
A Node based server of applications.

------
s3th
If you want to test out ES2015 features (incl. proxies) coming soon in V8, you
can download Chrome Canary and turn on the Experimental JavaScript flag (under
chrome://flags). With the flag enabled, Chrome reaches 91% percent on the
Kangax table [0]. We're working hard to turn these features on by default as
soon as possible.

[0]: [https://kangax.github.io/compat-
table/es6/](https://kangax.github.io/compat-table/es6/)

(Disclaimer: I'm a PM on the V8 team)

~~~
sremani
Sorry, I down-voted instead of up-voting.

------
frik
> The future of Node is in Microsoft's fork

People should read "Embrace, extend and extinguish":
[https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish](https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish)

It happend with Java. Microsoft created their own slightly improved Visual J++
and then Visual J#, and after Sun sued them and MS had to remove their
proprietary MSJava from WindowsXP, they forked it with C# 1.0).

It happens with JavaScript. They tried to kill Netscape (Browser Wars) with
their powerful but slightly incompatible JScript. Remember the IE 6 problems,
it's the result. The XHR/AJAX came out of these era too.

It almost happend again with JavaScript. First they tried it with JavaScript 4
that never got mainstream (tried to added classes and XML syntax). Thanks god
JavaScript 5 came along as lean barely changed succesor.

It happens again with JavaScript / ES6/7 and TypeScript. They lobbied to add
"class" syntax and at the same time create an competiting language on top of
ES6 (optionsl typing, like HACK does for PHP).

It happens with Node. The plan to release (we heard that often from MS, it my
take a while...) their JavaScript engine and forked Node.

Please wake up, and learn from the past history of Microsoft. They are not
saints and judge them by their past actions and also their recent Windows 10
forced phone home and forced update disasters, the expensive license changes,
etc. I am certainly happy as long as the official Node will continue to run on
V8 on all platforms.

~~~
bitmapbrother
>It happend with Java

And spectacularly backfired with Java. Java is at an all time high and ranks
#1 in the TIOBE index at 20.97 (up 6% from 2014). C#, on the other hand, is at
4% - which is probably why they decided to open source it before it dropped
even further. Even Python has surpassed C#. Moral of the story is that the
days of Microsoft extinguishing anything are over.

~~~
frik
> spectacularly backfired

?? First TIOBE index cannot be taken seriously. Second a hypothetical forth
place isn't that bad, right? MS managed to fragment the community. And they
actively try to fragment the JavaScript community with ES6 and TypeScript. And
with their Visual Studio Code (based on Electron/Atom editor).

> Microsoft extinguishing anything are over

Sure with $100+ billion in cash it's over. Microsoft was far less evil company
between 2005 and 2011 than before or after that timeframe. Sorry for waking
you up from your dream.

~~~
bitmapbrother
I think TIOBE is a good indication and so are the number of GitHub projects
that exist and are being created with these languages. Also, I keep hearing
this talk about a new Microsoft. Where's their support for the #1 language in
the world in their IDE?

As for Microsoft's cash reserves, I heard it was close to 90 Billion with over
90% of that overseas. Google, on the other hand, has about 64 Billion and only
60% overseas.

~~~
skeletonjelly
> the number of GitHub projects that exist and are being created with these
> languages

Definitely not indicative of all the myriad of business applications that are
created and not release on github

------
melted
One thing I learned in my 20+ years in this field is that relying on anything
from Microsoft leads to inevitable regret down the road as they cannot
restrain themselves from turning every thing they do into a means of vendor
lock-in.

------
0x0
Doing a wholesale replacement of the JS engine in node sounds like bad news
for native npm modules. There's even another frontpage story right now about
dealing with the native API breakage between various V8 versions in node.

~~~
BinaryIdiot
While your right this neutral bindings layer that the Microsoft team is
working on could alleviate some of that and hopefully make it so the interface
on the C++ and JavaScript side are the same for module developers but the
engines are completely pluggable.

That would be pretty cool if they can pull it off.

------
kyriakos
Did anyone complaining about the windows 10 requirement read the while
article?

It clearly says it goes open source and multi platform this month.

~~~
kemitchell
They've announced they will release source this month. Multiple platform
support will be on the roadmap. That will take time.

------
1971genocide
Babel has way too many errors.

I do not care if I am a grandpa for using 2014 tools - but I am not pushing
ahead until things calm the fuck down.

~~~
mattkrea
Node 4/5 (really arrow functions alone) largely eliminated the need for Babel
on backend code IMO.

~~~
mercer
To some extent, yes. In some of my projects I decided to avoid using Babel and
just limit myself to Node's (new) features. The advantages of not having a
build step for the backend js is sometimes worth it.

However, there are so many cases where Babel is useful, or turns out to be
'necessary', that I'm considering just using Babel by default again.

Some examples:

    
    
      - JSX for using React in the back-end (almost a default for me nowadays)  
      - async/await for async-heavy code  
      - a miscellaneous few still-unsupported ES2015 features that   occasionally are sorely missed
    

And finally, it's happing more and more regularly that I end up wanting to use
some server-side modules on the client-side, in which case I need to set up
Babel anyways.

That said, if I'm pretty sure I'm not going to need Babel, I still try to
leave it out. It adds complexity that I'd rather avoid.

------
jkldotio
Nonsense on stilts, how did this even get on HN? "In order to use Microsoft's
fork, you need a Windows 10 machine with the November update", really.

In response to the downvotes. The author is suggesting that "the Future" of a
major open source web technology belongs with a notorious monopolist
corporation that's known for lock-ins and other anti-competitive practices
even to this day. Given their past behaviour, and given they haven't yet
managed to get this to operate on a platform other than their own, calling it
"the Future" is pretty silly and worthy of being mocked for the hyperbole. I
wouldn't mock it if the headline was "Microsoft is making a play in the Node
ecosystem". The two responses on Reddit have also been sceptical of this as
well.[0][1] Any of the (4+) downvoters care to share your thoughts?

[0]
[https://www.reddit.com/r/node/comments/3z303d/the_future_of_...](https://www.reddit.com/r/node/comments/3z303d/the_future_of_node_is_in_microsofts_fork/)
[1]
[https://www.reddit.com/r/javascript/comments/3z302e/the_futu...](https://www.reddit.com/r/javascript/comments/3z302e/the_future_of_node_is_in_microsofts_fork/)

