The Future of Node Is in Microsoft’s Fork
blog.andyet.com
blog.andyet.com
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.
I ask because I am getting downvoted for my other comment, but even you seem to be saying it's not what the blog author claims.
People say your company has changed, I hope it has, but I can't help but notice on a weekly basis that I can't print from my office because of your company, that there are constant problems with document formats everywhere because of your company and your email client is actively working against me, the user, all the time by trying to block simple things like cutting and pasting email addresses. Maybe those are all just legacies of the old Microsoft, but all the same there they are slapping me in the face every week.
[0] https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish
Microsoft is outputting lot of Open Source into their github repos, so there is evidence of Microsoft's change of attitude towards open source, it started few years back and picked up with the change of guard.
Here is some food for your thought: http://www.hanselman.com/blog/MicrosoftKilledMyPappy.aspx
I just checked and that condescending blog post hasn't enabled me to print from my office. You know what the IT guys told me? That I should run Microsoft Windows in a VM to be able to print. This is at a large Australian university. The operating system of one of the fastest supercomputers in the southern hemisphere, down the road, is Linux. I am writing software to run on that machine but but in my office I can't even print from Ubuntu. Seriously?
Microsoft is a corporation not a charity, the managers and directors have incentives to make a profit for the shareholders. Even without a track record, or the Department of Justice investigations and the numerous leaks we've seen, it's not like Microsoft should be trusted off the bat in the first place.
Additionally, beyond the things I've mentioned that I currently face, I've been programming since the early 1990s and I lived through the damage that Microsoft did. I didn't mindlessly inherit a distrust of Microsoft. I'm not that much younger than the guy who wrote that blog; I watched it all go down in realtime.
Returning to the point, when I see a Pied Piper blogger saying that Microsoft is "the Future" of some open source project that's ok. But when they haven't even got their implementation running on a non-Microsoft platform I think "maybe we should wait until they've got it running on at least one other platform before declaring anything is 'the Future'". Is that unreasonable? Maybe the blogger should have picked a less outrageous headline. And it is outrageous, it's got people on Reddit saying &yet have "jumped the shark"[1] and others saying "I thought &yet was smarter than this".[2] I am not even going that far, I am just saying they should lay off the hyperbole, given the history of Microsoft.
[0]https://news.ycombinator.com/item?id=7281283 [1]https://www.reddit.com/r/javascript/comments/3z302e/the_futu... [2]https://www.reddit.com/r/node/comments/3z303d/the_future_of_...
- Historically the V8 team simply did not care about node, and would introduce breaking changes that would come as a surprise to node core
- It's better now, and V8 folk are on one of the steering committees for node. Also Google Compute Engine team needs node to work so also brings in a real business case for the V8 team to care about node
- Chakra is also a pretty good contingency plan.
As a hardcore node dev I don't care for too much with engine x, y, z. As long as the community is given the keys from "dad". Adoption must be made part of the conversation, and we should have say over fixes, enhancements, and roadmap.
Seems like a lot but we saw the issues with Node pre-io and other products in tech when one voice is the majority or when a puppet board is put in place.
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.
That does take the wind out of the post's sails a bit.
"...we are committed to bringing ChakraCore to other platforms in the future."
You don't just merge features between JS engines - there may be one or two big wins that others will copy, but they're not like, say, C compilers, where different compilers by and large produce fairly similar machine code, because for the most part the language semantics correspond reasonably directly to machine semantics and the problems involved are well-studied, so the machine code is pretty close to optimal. JS has higher level semantics that admit varying implementation strategies - for example, all major engines use tagged pointers, but they all do it somewhat differently (e.g. V8 does not use NaN-boxing but others do); or on a macro level, those semantics require a garbage collector, which has a ton of implementation choices. Because JS engines are JITs, they perform optimizations informed by runtime information, which are more flexible but for that reason far more prone to guesswork, e.g. about what information to record, what kinds of assumptions to make about types mostly being static in practice, etc. And all JS engines have to balance runtime against compilation time, even to some extent for very hot loops, so they tend to have relatively simple optimization pipelines that value pragmatism over being able to cover every possibility.
The result is a lot of idiosyncrasy and a large number of little decisions and strategies that together can be highly significant but are hard to just port from one engine to another.
Notably, perhaps as a result, there seems to be a trend to basically rewrite JS engines' JITs while keeping the same name. V8 did this with Crankshaft in 2010 and is in the process of doing it again with Turbofan (dunno whether it will ultimately replace Crankshaft or just complement it, but I wouldn't be surprised at the former, considering that there is currently a large amount of duplicated functionality between them). I know SpiderMonkey has done it too but not the details.
> 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.
citation needed. "V8's own benchmarks" would be Octane, so this, which seems to be about evenly split between V8 and SpiderMonkey in the lead:
http://arewefastyet.com/#machine=28&view=breakdown&suite=oct...
[0]: https://kangax.github.io/compat-table/es6/
(Disclaimer: I'm a PM on the V8 team)
People should read "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.
However, qualifying every interest that MS has in tools or languages with the 3E scare is like crying wolf: people will simply stop listening to you and take you seriously. History should not be ignored but people and companies change, especially if they want to stay relevant.
Last I heard, Java was still pretty popular on every platform and the scandalous birth of .Net has been a boon to everyone interested in programming for Windows. So much so that almost every aspect of .Net is getting open sourced and its cross-platform story is really shaping up to something decent.
Browser wars were in the 90s... how far back do we have to hate? Netscape didn't deserve to down that way, but don't forget that the Netscape Navigator was not free. MS forced it free and made Netscape disappear in the process. Good thing or bad thing? We can speculate on what could-have been but no-one is paying for their browser today and yet there are at least 5 or 6 good ones to choose from. We can also argue browsers may still be closed source today if Netscape had been profitable and if Netscape (the company) still had its way with the various standards that underpin the web. MS was punished for their strong-arm tactics. Not punished in a particularly effective way, but it still cost them quite a bit and tarnished their reputation even further.
Javascript is a standard and as such all those people creating the standard represent their own interests. It happens on every single standard in the world and it's certainly not limited to those of our industry. I don't like it, it's not always done in the interest of those implementing those standards, but I don't think singling-out MS is entirely fair, especially considering that they do have the right to participate since they still provide some of the most used browsers (even if it's by default).
TypeScript is good. It changes nothing to JavaScript, it's open source and there are plenty of people who use it to great advantage. I really don't understand what MS is supposed to do here? Nothing? TypeScript is so good the Angular guys at Google have switched to it. Why? Because you can build lots of interesting tooling around it and have a whole classes of issues statically checked, something plain old JS doesn't really provide.
Lots of people have forked Node. The Node people have forked Node. It's Open Source, that's the nature of the game. It's good, Node will improve and if what MS does is rubbish then no-one will use it because no-one is forced to.
There is no reason for MS to invest in these technologies to see them fail (the extinguish part of 3E). MS is heavily invested in them and need them to work well on their platform and services because programmers of today use Open Source by default and expect a good experience. There has been a huge shift in mentality at MS over the years. Open Source won, we should be happy that the majority of the web is built on it, even MS is aware of that.
It's not the nineties any more. Doesn't say we shouldn't be vigilant, but but not every decision out of MS is to be viewed with paranoid suspicions, there are lots of very great and very respectable folks who work there and take pride in what they do, we should give them a little credit.
Embrace (JavaScript/Node CHECK), extend (TypeScript, ES6 CHECK) and extinguish (JavaScript5 CHECK, V8 based Node IN-PROGRESS, ES6 TODO)
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.
?? 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.
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.
Definitely not indicative of all the myriad of business applications that are created and not release on github
That would be pretty cool if they can pull it off.
It clearly says it goes open source and multi platform this month.
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.
I needed to plug this in the package.json of my private modules:
"browserify": {
"transform": [
"brfs",
[
"babelify",
{
"presets": ["es2015"]
}
]
]
}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.
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_... [1] https://www.reddit.com/r/javascript/comments/3z302e/the_futu...