Hacker News new | ask | show | jobs
by drderidder 4145 days ago
About a year ago I posted "node.js needs a new home" on the mailing list. It started a minor s### storm and a couple of local IBM guys went down to talk to Joyent, which eventually led to the whole advisory board / foundation initiative. Mostly it was all back-room discussions between companies taking place in private from the wider community. They're great people, but that isn't really what I had in mind.

IBM's cloud offering runs on the PowerPC architecture, and older versions of V8 won't run on it, so they can't offer Node hosting. They ported a private build of Node to run on PowerPC using a new version of V8, but Joyent has so far refused to upgrade V8 despite having a pull request with all the work done. It looks a lot like Joyent has been dragging their heels on V8 updates just to fend off an IBM cloud service for node.

The first five words of the announcement are: "Joyent, IBM, Microsoft, PayPal, Fidelity". That says a lot right there. StrongLoop, NPM and a bunch of others are excluded, the whole thing seems to have been baked up in private by people who aren't core contributors, and then sprung on the community like it's some great thing.

Maybe it's a step in the right direction, but as it stands I'd expect this foundation to be about as useful as another hole in the head. I've seen enough corporate bad behaviour from some of them to not care about their special little club right now, and I don't think it will win too many people over.

[Update: Fedor posted about it here https://medium.com/@iojs/io-js-and-a-node-js-foundation-4e14... ]

3 comments

An interesting thing would be to look at the NodeJS issue tracker. I opened an issue in io.js and NodeJS at the same day - the io issue got several responses, was discussed between collaborators, a pull request was made and it is discussed in the next TC meeting for inclusion in the next version.

The NodeJS issue got exactly zero response.

It looks (at least from the outside) that io.js is a maintained project and NodeJS is not.

You didn't get response because all those 5 companies executives not sure about what you asked, rest who knows that moved to iojs.
GitHub's Pulse tab is a pretty good way to get a quick, high level comparison: http://i.imgur.com/zNWj776.png
io.js resembles node prior to 0.11 stalling out for over two years... Responsive community and core contributors. The inclusiveness seems to be much better than it has been under Joyent.

Short of the Node Foundation turning over operations to the io.js TC, I don't see Node remaining the choice platform within the next two years as they diverge farther than they have. I wouldn't mind seeing them re-join, and re-release io.js 1.x as "node" 1.x proper.

It's bad enough that we have to use transpilers (6to5/traceur, etc) for new feature support in the browser... having to use them on the server was a pain... co/koa and similar have been around for over two years waiting for 0.12 to come out of beta... Even then, they were significantly behind v8 and libuv.

If Node Foundation brings io.js back into the fold, great.. if not, I'm with io.js on this one.

Re: Being limited on non-x86 platforms with older versions -- IBM was interested in the work we've done to abstract away from the particulars of modern script engines. At Bloomberg we decided to forego Node itself for the time being and target engines directly. We built an abstraction layer that allows native modules to be completely isolated from the engine they're being attached to while still retaining performance as if they were using the engine API directly. While `nan` provides some abstraction to native module writers, it targets abstraction over `v8` rather than abstracting `v8` itself at a more basic level. I'm working on open-sourcing this layer right now, but even if it was up on GitHub, it doesn't mean the Node (or io.js for that matter) community would be interested in actually adopting it or something like it to not depend directly on `v8`. This was interesting for us and for IBM because Spidermonkey has a bytecode interpreter and does not require a platform JIT to work and we actively use it on both POWER and Sparc hardware right now. It might seem like that is less than ideal compared to building out a JIT backend for each platform, but we've found in practice that for most common tasks the performance characteristics aren't that different. Freely being able to swap out engine backends (we also have it targeting Lua just to prove it isn't tied to JS) also allows direct benchmark comparisons and could help ignite server-side benchmarks that aren't directly tied to browser performance. I'd love to see more people interested in divorcing Node from `v8`, but admit it's a tough sell.
I take it this is different from the NodeRED[0] thing IBM released a year or two ago? So, if node.js proper was closer to v8 HEAD, then they might find that the v8 team has recently been supportive of utilizing "precompiled scripts" (in v8 parlance). And I don't believe divorcing node from v8 is hard. Nobody is interested[1] (long term) in supporting such a divorce. For the most part, creating an API that would support both at the same time is maybe a month's worth of work at most.

[0] https://gigaom.com/2013/09/27/meet-node-red-an-ibm-project-t...

[1] https://github.com/zpao/spidernode

I don't know any details about NodeRED, so not sure how that factors in. All I know is IBM was interested in using Node in products, as OP mentioned and their involvement in the foundation shows. Agreed, divorcing Node from the underlying engine isn't hard -- the point was whether the community would accept such a fundamental change in the project or whether a hard dependency on `v8` forevermore and `nan` as a pill to ease the pain is "good enough". (The `spidernode` project was the work of an intern at Mozilla and really was more like the `nan` abstraction, shoe-horning SM into `v8`'s existing API and isn't the kind of fundamental abstraction I'm referring to.)
Why don't you just switch to io.js, then you won't be limited on platforms?

What did you actually gain by doing all of that work? I think it was a big waste of time.

You forego Node, does that mean you can't run Node modules installed with npm? Sounds like a very dumb decision.

sounds sweet. i'd love to see node decoupled from v8, maybe even get ASM support.
Thanks for the interesting perspective.

One of the things that has always bothered me was that in your thread Isaacs was adamantly against a foundation. Suddenly now he is all for it. Was he simply repeating the Joyent party line then, or has he since changed his mind?

I'm also disappointed about the lack of inclusion of StrongLoop and NPM, who both have key contributors to node.js among their ranks.

Basically anyone who has a business model related to the node.js ecosystem would benefit by not having development under the control of a single corporate entity. Isaac was in a tough place back then. I think spinning off NPM was a good move for him and it's great to see him on board with the community fork.

PS. A number of people were against it at first, including Nodejitsu guys and Michael Rodgers. I wrote that either a foundation or a community fork were inevitable. Eventually people realized it, and it turned out to be a community fork. If a meaningful foundation were to happen at this point it would have to be built around io.js in my opinion.

I agree: I would really like a response from Isaac on this.