-
Notifications
You must be signed in to change notification settings - Fork 53
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
What's our Node.js versioning strategy? #81
Comments
Sounds interesting. I'm curious how this would work. Right now, if the user sets This is one of the reasons we need to be careful about node features/deps that won't work in older versions unless we transpile back. If we can use newer node AND let users define the node version that sounds good. It also might be complex and perhaps can cause unforeseen issues 😅 |
I think this is doable. I have actually a project that does just that (although other projects would also work just fine). What about plugins? Some possibilities: |
Hmmm not sure. There are other impacts this will have for example: the different versions of node will need to be downloaded + installed. This could add to build times and stack up quickly. Maybe the answer is to go node 8+ and not support these edge cases.
|
Only Besides, Node.js executables could be (and probably should be) cached once for all users to avoid downloading them. This would also prevent network connectivity potential issues. From your answer, I am taking that you were commenting on One potential issue with this is that plugin authors will have to upgrade when we upgrade. So this would force us to either not upgrade our core Node.js version, or to stop supporting plugins that don't upgrade. This also means plugin authors need to be in sync with us. Plugin-based libraries like ESLint, Gulp, etc. are in a different situation because users can choose which version of the core they want to use. Our users don't have that choice, they always get the latest version of Since installing a specific plugin is a user choice, should plugins use the same version as user's code instead?
This means plugin authors would need to be in sync with their users, instead of being in sync with us, which might make more sense? What do you think? |
I don't think we need to tackle this just yet. We should keep it on the radar though. For the initial release, keeping it simple with 1 version of node should work™. |
This is definitely a key question that would impact some important aspects of the architecture. There are several pending questions I have that depend on this issue to be designed first. This also might be hard to change later on as it might break code (e.g. plugins) and not be backward compatible. We should have a strategy there, even if we don't implement it yet. What do you think of the following one?
This means neither users nor plugin authors need to worry about being in sync with our Node.js version. So user's code and plugins will keep working even 10 years from now. |
This issue has been automatically marked as stale because it has not had activity in 1 year. It will be closed in 14 days if no further activity occurs. Thanks! |
This issue was closed because it had no activity for over 1 year. |
Co-authored-by: Renovate Bot <bot@renovateapp.com>
What's our strategy for Node.js versions?
This issue is not about how do we implement it (transpiling, etc.) nor which specific version we want to target, but about the requirements, i.e. what do we need to support from a business/end-user standpoint?
We have three parts that could be thought independently when it comes to Node.js versions:
At the moment those three parts use the same Node.js version. Since we run each of those parts in different processes, we could technically use different Node.js versions so they are decoupled in that respect.
The reason is that each part has different business requirements:
a. To benefit from security fixes. Node.js security patches only apply to the latest minor/patch versions of each major release. Being stuck on let's say
8.3.0
means we don't get any of those.b. To benefit from the speed boost of the new V8 releases. Newer Node.js releases can be significantly faster.
c. To be able to update our dependencies. Most dependencies follow the Node.js release cycle. For example most libraries have now dropped support for Node 6/7, and we can expect Node 8/9 to follow the same fate in about one year.
For this reason, I think we should probably run those different parts with different Node.js versions. What do you think?
The text was updated successfully, but these errors were encountered: