New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrading Node.js #5124

Closed
rgoomar opened this Issue Sep 9, 2015 · 179 comments

Comments

Projects
None yet
@rgoomar
Contributor

rgoomar commented Sep 9, 2015

_45 Upvotes_ So, Node.js now has a fully merged codebase between itself and io.js and they released 4.0 which is meant to be LTS.

Since that will be the continuing track for the future, it would probably be a good idea to upgrade to node v4. But, it will be a large task since there are a lot of changes between 10.40.0 and 4.0.0.

To me, it makes sense to upgrade especially since there are built-in ES2015 features and Meteor 1.2+ is all about ES2015

EDIT:
Breaking changes between 0.12 and 4.0 can be found here
Breaking changes between 0.10 and 4.0 can be found here

@emgee3

This comment has been minimized.

Show comment
Hide comment
@emgee3

emgee3 Sep 9, 2015

Contributor

Fibers' tests fail when run in Node 4.0, at least on my computer. I'm also running El Capitan, so there could be another issue going on.

EDIT: Did some additional testing and created an issue laverdet/node-fibers#242

Contributor

emgee3 commented Sep 9, 2015

Fibers' tests fail when run in Node 4.0, at least on my computer. I'm also running El Capitan, so there could be another issue going on.

EDIT: Did some additional testing and created an issue laverdet/node-fibers#242

@Cangit

This comment has been minimized.

Show comment
Hide comment
@Cangit

Cangit Sep 9, 2015

Contributor

Getting on the LTS builds of Node looks like a really good idea for Meteor. (18 months of patches and then a 12 month security and critical bug fix period for a total of 30 months support.)

Its worth mentioning the huge speed and memory gains of Node v4 over 0.10, achieved by a mix of V8 4.5 and improvements to the Node/io.js code base over the last year.

Contributor

Cangit commented Sep 9, 2015

Getting on the LTS builds of Node looks like a really good idea for Meteor. (18 months of patches and then a 12 month security and critical bug fix period for a total of 30 months support.)

Its worth mentioning the huge speed and memory gains of Node v4 over 0.10, achieved by a mix of V8 4.5 and improvements to the Node/io.js code base over the last year.

@web-jenezis

This comment has been minimized.

Show comment
Hide comment
@web-jenezis

web-jenezis Sep 9, 2015

Fibers' tests fail when run in Node 4.0, at least on my computer

I have the same problem. What the highest version of NodeJS we can use with Meteor? I guess 10.40.0?

web-jenezis commented Sep 9, 2015

Fibers' tests fail when run in Node 4.0, at least on my computer

I have the same problem. What the highest version of NodeJS we can use with Meteor? I guess 10.40.0?

@dfischer

This comment has been minimized.

Show comment
Hide comment
@dfischer

dfischer Sep 11, 2015

+1 this is very much needed and the longer it takes the more hurt it will be

dfischer commented Sep 11, 2015

+1 this is very much needed and the longer it takes the more hurt it will be

@gitawego

This comment has been minimized.

Show comment
Hide comment
@gitawego

gitawego Sep 14, 2015

+1, in meteor world, we can not really benefit the Progress of nodejs :(
with the release of meteor 1.2, I hope they could support node 4.0.0. 'cause that would be much faster at server side with native es6 support.

gitawego commented Sep 14, 2015

+1, in meteor world, we can not really benefit the Progress of nodejs :(
with the release of meteor 1.2, I hope they could support node 4.0.0. 'cause that would be much faster at server side with native es6 support.

@raix

This comment has been minimized.

Show comment
Hide comment
@raix

raix Sep 14, 2015

Contributor

+1

Contributor

raix commented Sep 14, 2015

+1

@jaskinn

This comment has been minimized.

Show comment
Hide comment
@jaskinn

jaskinn commented Sep 14, 2015

+1

@benjamn

This comment has been minimized.

Show comment
Hide comment
@benjamn

benjamn Sep 15, 2015

Member

I'm also really excited about this, but I'm curious if there are any particular new features that people are more excited about than others. Specific compelling motivations will really help us prioritize this work against other projects!

In my mind the biggest hurdles are getting Fibers to work (unknown difficulty) and getting NPM packages with binary dependencies to update to the latest V8 native embedding API.

Member

benjamn commented Sep 15, 2015

I'm also really excited about this, but I'm curious if there are any particular new features that people are more excited about than others. Specific compelling motivations will really help us prioritize this work against other projects!

In my mind the biggest hurdles are getting Fibers to work (unknown difficulty) and getting NPM packages with binary dependencies to update to the latest V8 native embedding API.

@lfilho

This comment has been minimized.

Show comment
Hide comment
@lfilho

lfilho Sep 15, 2015

I'm particularly interested in the ES2015 features of Node 4, so I can develop ES2015 code without Babel.js and etc. Right now there seem not to have a good way of doing ES2015 + Meteor.js.

Thanks, @benjamn !

lfilho commented Sep 15, 2015

I'm particularly interested in the ES2015 features of Node 4, so I can develop ES2015 code without Babel.js and etc. Right now there seem not to have a good way of doing ES2015 + Meteor.js.

Thanks, @benjamn !

@tacone

This comment has been minimized.

Show comment
Hide comment
@tacone

tacone Sep 16, 2015

Using ES2015 does not seems to be a good reason, because on when coding on the client, or isomorphic, you're still stuck to babel.

The better reason I see is compatibility with NPM modules. If you look at that, you also have to consider possible incompatibilities, so I guess is a kind of trade-off. Since node is changing very fast, though, I'd suggest to not lag too much.

tacone commented Sep 16, 2015

Using ES2015 does not seems to be a good reason, because on when coding on the client, or isomorphic, you're still stuck to babel.

The better reason I see is compatibility with NPM modules. If you look at that, you also have to consider possible incompatibilities, so I guess is a kind of trade-off. Since node is changing very fast, though, I'd suggest to not lag too much.

@seeekr

This comment has been minimized.

Show comment
Hide comment
@seeekr

seeekr Sep 17, 2015

@benjamn The real deal here is not and should not really be about features. Node is finally seeing proper updates to its core and is at long last catching up and staying up to date with v8 releases. No matter what those releases bring in features, if we want to follow good modern development and deployment/ops practices and also be a good citizen of the Node community there is no reason to stay behind. We all upgrade all the software that we use regularly, for many good reasons, and now is the time to start moving to Node 4.x and develop plans and systems to make Node upgrades easier and more seamless in the future.
The Node and v8 teams are doing excellent work and the Meteor community deserves to benefit from that regularly, now that that has actually become possible and workable.

seeekr commented Sep 17, 2015

@benjamn The real deal here is not and should not really be about features. Node is finally seeing proper updates to its core and is at long last catching up and staying up to date with v8 releases. No matter what those releases bring in features, if we want to follow good modern development and deployment/ops practices and also be a good citizen of the Node community there is no reason to stay behind. We all upgrade all the software that we use regularly, for many good reasons, and now is the time to start moving to Node 4.x and develop plans and systems to make Node upgrades easier and more seamless in the future.
The Node and v8 teams are doing excellent work and the Meteor community deserves to benefit from that regularly, now that that has actually become possible and workable.

@rgoomar

This comment has been minimized.

Show comment
Hide comment
@rgoomar

rgoomar Sep 18, 2015

Contributor

@benjamn There are a lot of performance improvements and if we move to Node 4.x faster, it will allow for us to use the native functions rather than relying on a transpiler for certain functionality.

Also, if Meteor gets upgraded to Node 4x, it should gain more adoption because you can write a blog post about it ;) And if people are wanting to use the latest node and look for a platform or framework to use and they see Meteor is still at 0.10.x, it can make them stray away from it.

Contributor

rgoomar commented Sep 18, 2015

@benjamn There are a lot of performance improvements and if we move to Node 4.x faster, it will allow for us to use the native functions rather than relying on a transpiler for certain functionality.

Also, if Meteor gets upgraded to Node 4x, it should gain more adoption because you can write a blog post about it ;) And if people are wanting to use the latest node and look for a platform or framework to use and they see Meteor is still at 0.10.x, it can make them stray away from it.

@rclai

This comment has been minimized.

Show comment
Hide comment
@rclai

rclai Sep 18, 2015

@benjamn I was able to confirm that Fibers 1.0.7 still works in Node 4.1.0.

rclai commented Sep 18, 2015

@benjamn I was able to confirm that Fibers 1.0.7 still works in Node 4.1.0.

@raix

This comment has been minimized.

Show comment
Hide comment
@raix

raix Sep 19, 2015

Contributor
  1. security
  2. Stability (it contains alot of fixes from io.js)
  3. performance / es2015 native

(I'm concerned about fibers blocking node upgrading, might be a good idea to start thinking about async support within the next 12month, and get off fibers asap?)

Maybe call 1.2 "2.0" and get it over with (the missing jquery+tracker is breaking things anyways, following semver)

Contributor

raix commented Sep 19, 2015

  1. security
  2. Stability (it contains alot of fixes from io.js)
  3. performance / es2015 native

(I'm concerned about fibers blocking node upgrading, might be a good idea to start thinking about async support within the next 12month, and get off fibers asap?)

Maybe call 1.2 "2.0" and get it over with (the missing jquery+tracker is breaking things anyways, following semver)

@nicolasparada

This comment has been minimized.

Show comment
Hide comment
@nicolasparada

nicolasparada Sep 19, 2015

ʕつ ͡◔ ᴥ ͡◔ʔつ

nicolasparada commented Sep 19, 2015

ʕつ ͡◔ ᴥ ͡◔ʔつ

@benjamn

This comment has been minimized.

Show comment
Hide comment
@benjamn

benjamn Sep 19, 2015

Member

Just to prevent further speculation, fibers work perfectly well with Node 4.0 and will not be a barrier to upgrading.

Member

benjamn commented Sep 19, 2015

Just to prevent further speculation, fibers work perfectly well with Node 4.0 and will not be a barrier to upgrading.

@evenfrost

This comment has been minimized.

Show comment
Hide comment
@evenfrost

evenfrost Sep 23, 2015

Would love to see Meteor operating on top of Node.js 4+. It's a bit of a shame that the most advanced JS framework still depends on version of node outdated years ago.

evenfrost commented Sep 23, 2015

Would love to see Meteor operating on top of Node.js 4+. It's a bit of a shame that the most advanced JS framework still depends on version of node outdated years ago.

@seeekr

This comment has been minimized.

Show comment
Hide comment
@seeekr

seeekr Sep 23, 2015

@evenfrost Just to clarify -- Node 0.10.x was not an outdated version of Node. It is still the version that most production deployments of Node run on and it has been and still is fully supported. Node 0.12.x took years to develop (or rather finish up because momentum of contributions and excitement about it had dried up) and its adoption has also been going slowly, from what I can tell, one reason certainly being that it still did not ship with an up to date version of v8.
And only very recently there has been a push towards a new, modern, fully up to date Node release -- led by the iojs team -- which only a few weeks ago produced its first fully Node-compatible release that will also be supported in the long term, Node 4.x LTS (currently at 4.0 or 4.0.1 today/tomorrow -- EDIT: correction, it's at 4.1 atm with 4.1.1 being released right now), with the LTS tag getting officially added in October.
So Meteor really did do the best job choosing the appropriate version of Node that was available up until this point. From here on out I'm fairly certain 4.x will be adopted reasonably quickly, maybe and desirably with 1.3 or even with an 1.2.x patch release.

seeekr commented Sep 23, 2015

@evenfrost Just to clarify -- Node 0.10.x was not an outdated version of Node. It is still the version that most production deployments of Node run on and it has been and still is fully supported. Node 0.12.x took years to develop (or rather finish up because momentum of contributions and excitement about it had dried up) and its adoption has also been going slowly, from what I can tell, one reason certainly being that it still did not ship with an up to date version of v8.
And only very recently there has been a push towards a new, modern, fully up to date Node release -- led by the iojs team -- which only a few weeks ago produced its first fully Node-compatible release that will also be supported in the long term, Node 4.x LTS (currently at 4.0 or 4.0.1 today/tomorrow -- EDIT: correction, it's at 4.1 atm with 4.1.1 being released right now), with the LTS tag getting officially added in October.
So Meteor really did do the best job choosing the appropriate version of Node that was available up until this point. From here on out I'm fairly certain 4.x will be adopted reasonably quickly, maybe and desirably with 1.3 or even with an 1.2.x patch release.

@rgoomar

This comment has been minimized.

Show comment
Hide comment
@rgoomar

rgoomar Sep 23, 2015

Contributor

Another document to add on to look at. @benjamn keep these changes in mind between v0.10 and v4:
https://github.com/nodejs/node/wiki/API-changes-between-v0.10-and-v4

Contributor

rgoomar commented Sep 23, 2015

Another document to add on to look at. @benjamn keep these changes in mind between v0.10 and v4:
https://github.com/nodejs/node/wiki/API-changes-between-v0.10-and-v4

@jperl

This comment has been minimized.

Show comment
Hide comment
@jperl

jperl Sep 29, 2015

Contributor

👍

Contributor

jperl commented Sep 29, 2015

👍

@epaminond

This comment has been minimized.

Show comment
Hide comment
@epaminond

epaminond commented Oct 5, 2015

+1

@dalcib

This comment has been minimized.

Show comment
Hide comment
@dalcib

dalcib commented Oct 6, 2015

+1

@guilhermedecampo

This comment has been minimized.

Show comment
Hide comment
@guilhermedecampo

guilhermedecampo commented Oct 6, 2015

+1

@vamsivarikuti

This comment has been minimized.

Show comment
Hide comment

vamsivarikuti commented Oct 13, 2015

@aaronjudd

This comment has been minimized.

Show comment
Hide comment
@aaronjudd

aaronjudd Oct 15, 2015

+1

security, security, security. performance.

aaronjudd commented Oct 15, 2015

+1

security, security, security. performance.

@GJean

This comment has been minimized.

Show comment
Hide comment
@GJean

GJean commented Oct 20, 2015

+1

@fredevery

This comment has been minimized.

Show comment
Hide comment
@fredevery

fredevery commented Oct 21, 2015

+1

@lukeadams

This comment has been minimized.

Show comment
Hide comment
@lukeadams

lukeadams Apr 27, 2016

Check out the PR's that Benjamn posted
v4
v5
v6

lukeadams commented Apr 27, 2016

Check out the PR's that Benjamn posted
v4
v5
v6

@benjamn

This comment has been minimized.

Show comment
Hide comment
@benjamn

benjamn Apr 27, 2016

Member

Yes, note that those PRs were posted between the previous two comments!

Member

benjamn commented Apr 27, 2016

Yes, note that those PRs were posted between the previous two comments!

@merlinpatt

This comment has been minimized.

Show comment
Hide comment
@merlinpatt

merlinpatt Apr 28, 2016

Collaborator

With 3 PRs, does that mean Meteor is getting support for each version of Node? Or is it whichever gets finished first gets support?

Collaborator

merlinpatt commented Apr 28, 2016

With 3 PRs, does that mean Meteor is getting support for each version of Node? Or is it whichever gets finished first gets support?

@laosb

This comment has been minimized.

Show comment
Hide comment
@laosb

laosb Apr 28, 2016

Collaborator

I guess, commits which apply to all node versions is pushed to repo immediately, and for now we have 3 version to choice?

Collaborator

laosb commented Apr 28, 2016

I guess, commits which apply to all node versions is pushed to repo immediately, and for now we have 3 version to choice?

@dandv

This comment has been minimized.

Show comment
Hide comment
@dandv

dandv Apr 29, 2016

Contributor

Quick fyi for all interested -- node v6 is scheduled for release on Tue, April 26th

It happened, Node 6 is out!

Contributor

dandv commented Apr 29, 2016

Quick fyi for all interested -- node v6 is scheduled for release on Tue, April 26th

It happened, Node 6 is out!

@laosb

This comment has been minimized.

Show comment
Hide comment
@laosb

laosb Apr 29, 2016

Collaborator

What a long issue! Should we close this and open another one?

Collaborator

laosb commented Apr 29, 2016

What a long issue! Should we close this and open another one?

@livimonte

This comment has been minimized.

Show comment
Hide comment
@livimonte

livimonte Apr 29, 2016

Before closing, I think we should get a Meteor team feedback confirming the chosen version of the node to the next version of Meteor.

Roadmap

#6921 - PR in progress, Upgrade to Node 4

#6923 - PR in progress, Upgrade to Node 6

livimonte commented Apr 29, 2016

Before closing, I think we should get a Meteor team feedback confirming the chosen version of the node to the next version of Meteor.

Roadmap

#6921 - PR in progress, Upgrade to Node 4

#6923 - PR in progress, Upgrade to Node 6

@seeekr

This comment has been minimized.

Show comment
Hide comment
@seeekr

seeekr Apr 29, 2016

Guys, relax. The difference between Node version 4, 5 and 6 are relatively minor, and so if Meteor can support one, it can and will support all others. Ben created PRs for every currently active and supported Node version, but the fundamental part of the work is about making Meteor work with any (recent, non-legacy) Node version, and from there basically everyone should be able to freely select whichever one fits their goals and intentions best (i.e. 4.x if you don't care for bleeding edge Node, 6.x if you do; 5.x is not going to stick around for very long as it's not an LTS version).

So come and check out and help with the PRs if you're interested and you can, but if not, just rest assured this is being worked on and prioritized appropriately and I'm pretty sure Ben (and/or others working on this) will keep everyone posted on any meaningful progress.

seeekr commented Apr 29, 2016

Guys, relax. The difference between Node version 4, 5 and 6 are relatively minor, and so if Meteor can support one, it can and will support all others. Ben created PRs for every currently active and supported Node version, but the fundamental part of the work is about making Meteor work with any (recent, non-legacy) Node version, and from there basically everyone should be able to freely select whichever one fits their goals and intentions best (i.e. 4.x if you don't care for bleeding edge Node, 6.x if you do; 5.x is not going to stick around for very long as it's not an LTS version).

So come and check out and help with the PRs if you're interested and you can, but if not, just rest assured this is being worked on and prioritized appropriately and I'm pretty sure Ben (and/or others working on this) will keep everyone posted on any meaningful progress.

@zeroasterisk

This comment has been minimized.

Show comment
Hide comment
@zeroasterisk

zeroasterisk May 2, 2016

http://node.green/ <-- there are certainly some serious improvements as versions evolve... but the big one is moving from 0.10 >> 4+ Anything 4+ will make me happy.

zeroasterisk commented May 2, 2016

http://node.green/ <-- there are certainly some serious improvements as versions evolve... but the big one is moving from 0.10 >> 4+ Anything 4+ will make me happy.

@joncursi

This comment has been minimized.

Show comment
Hide comment
@joncursi

joncursi May 8, 2016

jsdom (https://github.com/tmpvar/jsdom) requires Node >= 4 and this has been a requirement as far back as 4.x. Eagerly awaiting this bump.

No jsdom = no enzyme (https://github.com/airbnb/enzyme) for testing React components.

joncursi commented May 8, 2016

jsdom (https://github.com/tmpvar/jsdom) requires Node >= 4 and this has been a requirement as far back as 4.x. Eagerly awaiting this bump.

No jsdom = no enzyme (https://github.com/airbnb/enzyme) for testing React components.

@benjamn

This comment has been minimized.

Show comment
Hide comment
@benjamn

benjamn May 8, 2016

Member

jsdom might also be a (much) better solution for headless DOM testing than PhantomJS

Member

benjamn commented May 8, 2016

jsdom might also be a (much) better solution for headless DOM testing than PhantomJS

benjamn added a commit that referenced this issue May 11, 2016

Rebuild non-portable Meteor packages when downloaded.
Together with c18c1f5, this commit is a
big step towards liberating Meteor from Node 0.10.

Part of #5124.

benjamn added a commit that referenced this issue May 16, 2016

Rebuild non-portable Meteor packages when downloaded.
Together with c18c1f5, this commit is a
big step towards liberating Meteor from Node 0.10.

Part of #5124.

benjamn added a commit that referenced this issue May 17, 2016

Rebuild non-portable Meteor packages when downloaded.
Together with c18c1f5, this commit is a
big step towards liberating Meteor from Node 0.10.

Part of #5124.
@cesarve77

This comment has been minimized.

Show comment
Hide comment
@cesarve77

cesarve77 commented Jun 12, 2016

+1

@doriansmiley

This comment has been minimized.

Show comment
Hide comment
@doriansmiley

doriansmiley commented Jun 27, 2016

+1

@benjamn

This comment has been minimized.

Show comment
Hide comment
@benjamn

benjamn Jun 27, 2016

Member

The next release of Meteor (1.4) will include Node 4. Please follow the latest developments here.

Member

benjamn commented Jun 27, 2016

The next release of Meteor (1.4) will include Node 4. Please follow the latest developments here.

@meteor meteor locked and limited conversation to collaborators Jun 27, 2016

@mitar

This comment has been minimized.

Show comment
Hide comment
@mitar

mitar Aug 20, 2016

Collaborator

This has been released. Meteor 1.4 and newer has node.js 4 (TLS).

Collaborator

mitar commented Aug 20, 2016

This has been released. Meteor 1.4 and newer has node.js 4 (TLS).

@mitar mitar closed this Aug 20, 2016

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.