NodeJS 10 is EoL on April 30, any plans of moving out of main repo?

Hello, A user on Reddit pointed me a weird oddities about nodeJS in TW repos (https://old.reddit.com/r/openSUSE/comments/n0d65s/nodejs_missing_versions_in...) Only Node 10 and 15 are on main repo, but one in EoL in 2 days, and the other is not recommended for production use. There should be only 14 (Latest LTS), 15 (latest current version) and 16 (upcoming LTS) in the main repos. Is there a plan to change that? Nicolas

On Wed, 2021-04-28 at 17:30 +0200, Nicolas FORMICHELLA wrote:
Just for reference: these are the packages currently building against nodejs10:
The rest in TW builds aganints nodejs15. So we need at least a push to get those consumers off of nodejs10 (or we accept to no longer be able to build them - which is likely not what we want) Cheers, Dominique

On Wed, Apr 28, 2021 at 05:30:41PM +0200, Nicolas FORMICHELLA wrote:
This is on purpose. 1. nodejs10 is there because of build dependencies and 32-bit. It's the last version of node on 32-bit arches. It will have to stay there as long as we ship 32-bit and there are BR on it, like Firefox. Probably not good to have too much production on that. At the same time it would feel odd to remove 64bit builds. 2. nodejs15 is a stable version of Node and there is nothing preventing it from running on production. This topic is rather common on Node's Release repo. There is always someone that comes along and wants to change the name of CURRENT to something like unstable or otherwise scary. And it keeps getting repeated to them by the Node developers that CURRENT does NOT mean unstable or otherwise Beta branch. It simply means that new features can be added and release cadence is much higher. This is also the reason why I pulled the non-current versions from TW and only ship CURRENT. And yes, the plan is to update this to 16 in next few days :-) Soon after, 15 will also be pulled from TW especially since it is EOL in a few weeks. The purpose of factory is to have rapid update cadence. This is exactly why anyone using TW and Node should use nodejs15. If you wish for slower update cadence, we have nodejs10, nodejs12 and nodejs14 in Leap. And even nodejs8 is there. - Adam

Why are not 12 and 14 in the repos? 14 is the latest LTS and it does not make sense to not have it there, and it created a lot of issues for many people when it suddenly got pulled for no reason about a month ago. Keeping all nodejs versions that are not EOL would be the best approach here, similar to how Go is treated in Tumbleweed repos. Nodejs is one of the largest development platforms and a lot of people will run into issues when the major versions are not included in the main repo.

On Thu, Apr 29, 2021 at 07:27:42PM -0000, Gus Fos wrote:
We are trying now to remove nodejs10 and only have the current version in TW. TW is meant to be a rolling distribution that have the latest and the greatest, or something like this. It is also meant to be a testing ground for any integration issues. We can't do testing if everyone is using legacy versions because upstream indicated LTS support -- LTS is actually the antithesis of what TW is suppose to be. Having said that, nodejs is a very stable product. From one major version to another there are very few incompatibilities. The incompatibilities are mostly in the ecosystem and not the core. Anyway, if you need an old nodejs engine on TW, you can install it from the devel project. I will keep all versions there. But in TW, it really makes sense just to have the latest version, irrespective of LTS status. If you wish to only have LTS nodejs versions that are officially supported by us, then I would suggest Leap as an alternative. You can get nodejs{10,12,14} in 15.2 and 16 will be added later. - Adam PS. just out of curiosity, what is broken with nodejs16 that was working with 14 or older?

Hi Adam, Am Fr., 28. Mai 2021 um 13:42 Uhr schrieb Adam Majer <amajer@suse.de>:
PS. just out of curiosity, what is broken with nodejs16 that was working with 14 or older?
I don't think thats the right question - nodejs14 is LTS and supported upstream and imho should be available in tumbleweed because there are popular open source projects (not in tumbleweed) currently still requiring nodejs 14. I personally started developing on one of them in the last few weeks and while I thought "nah, it can't be that hard to go with nodejs16", about two days later I just deleted the whole effort as I had tens of little issues here and there, and upstream was not willing to move to nodejs16 yet because not all dependencies were compatible with 16, or required a major version update that caused fallout in the project itself that is non-trivial to resolve. I think a distro should serve its users, and not force the user to adjust to the needs of the distro. Yes, there is always a bit of a balance in that, but the balance needs to be more towards the user. Greetings, Dirk

On Thu, Jun 03, 2021 at 11:17:44AM +0200, Dirk Müller wrote:
Of course, that is fair comment. At the same time, nodejs14 no longer seems to build for TW because of ICU issues -- ICU in TW is too new. https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs14 So, we either go to bundled version again, which is something I generally would not do for TW, or we need a backport for https://github.com/nodejs/node/pull/38497/commits/e6da39cc1754b827ea702d6e07... looks not too difficult so I'll backport that in there and probably older node versions too. So at least we have them building in devel project if nothing else.
Yes, in this case the lesser evil is to stick with an older version of node.
There always need to be a balance and that is correct. If one or two users complains, I think a valid comment would be to direct them to use the package from the devel project, especially in this case when dealing with a leaf package and a developer oriented package. If we have a bug report and more than a handful of 'me too' comments (so like 5ish?), maybe even just here, I have no issue with having nodejs14 in TW longer or reintroduced. On the other hand, if no one complains, then maybe there are not many users impacted and the problem is not really a problem. 873209 State:accepted By:RBrownSUSE When:2021-02-22T13:58:03 delete: openSUSE:Factory/nodejs14 So yes, if you need nodejs14, complain. The squicky wheel gets the grease, or so the saying goes. At very least, it tells me we have users :-) The question of balance also comes to the audience -- 3rd party user of node is more understood to be more conservative and constrained by dependencies than for example a build system used to build a package in TW. I think we can expect maintainers to push the build system to use the latest versions while at the same time be more understanding to non-maintainers running production. - Adam

Hi Adam, Am Mo., 7. Juni 2021 um 13:48 Uhr schrieb Adam Majer <amajer@suse.de>:
Of course, that is fair comment. At the same time, nodejs14 no longer seems to build for TW because of ICU issues -- ICU in TW is too new.
I submitted a fix for that last weekend.
I'm happy to help maintaining it for the next few months (although I am not sure I can help a lot with the nodejs-packaging git magic) Greetings, Dirk

On Mon, Jun 07, 2021 at 01:48:57PM +0200, Adam Majer wrote:
On Thu, Jun 03, 2021 at 11:17:44AM +0200, Dirk Müller wrote:
Hi Adam,
It's a leaf package because applications using npm are pretty much unpackageable.
Or people just move somwhere where the tools are not broken. Thanks Michal

Am Mo., 7. Juni 2021 um 13:48 Uhr schrieb Adam Majer <amajer@suse.de>:
I tried that, but then I noticed the weakremover(nodejs14) in tumbleweed, which means the next time you update tumbleweed the package gets deinstalled, unless you add a lock (which prevents you from getting updates to the package, so also not great). I think this might work if we'd not have the weakremover but I don't know how to opt out of generating that.. Greetings, Dirk

On Thu, Jun 03, 2021 at 11:17:44AM +0200, Dirk Müller wrote:
I tried to build a couple of projects using npm, and while one mysteriously fails with node16 without any explanation another builds but fails to find its native libraries once started. Switching to node10 - the only other one available in Tumbleweed resolved both issues. So no, upstream projects are generally not ready to build with the latest and greates node. It is great to have it available to debug such issues but to actually use software that uses node the LTS vestions are needed. Thanks Michal

On Wed, Apr 28, 2021 at 10:11:23PM +0200, Adam Majer wrote:
I would like to add to this answer - it's incorrect. At some point support for s390 (the special 31-bit arch) was dropped and *chromium* dropped support for 32-bit arches. My mistake was to assume that v8's support for ALL 32-bit also was finished -- this is not true and so nodejs16 currently in Factory is for 32bit arches as well. https://github.com/nodejs/node/issues/28866 So, nodejs10 is going to be removed from TW too. :-) - Adam

On Wed, 2021-04-28 at 17:30 +0200, Nicolas FORMICHELLA wrote:
Just for reference: these are the packages currently building against nodejs10:
The rest in TW builds aganints nodejs15. So we need at least a push to get those consumers off of nodejs10 (or we accept to no longer be able to build them - which is likely not what we want) Cheers, Dominique

On Wed, Apr 28, 2021 at 05:30:41PM +0200, Nicolas FORMICHELLA wrote:
This is on purpose. 1. nodejs10 is there because of build dependencies and 32-bit. It's the last version of node on 32-bit arches. It will have to stay there as long as we ship 32-bit and there are BR on it, like Firefox. Probably not good to have too much production on that. At the same time it would feel odd to remove 64bit builds. 2. nodejs15 is a stable version of Node and there is nothing preventing it from running on production. This topic is rather common on Node's Release repo. There is always someone that comes along and wants to change the name of CURRENT to something like unstable or otherwise scary. And it keeps getting repeated to them by the Node developers that CURRENT does NOT mean unstable or otherwise Beta branch. It simply means that new features can be added and release cadence is much higher. This is also the reason why I pulled the non-current versions from TW and only ship CURRENT. And yes, the plan is to update this to 16 in next few days :-) Soon after, 15 will also be pulled from TW especially since it is EOL in a few weeks. The purpose of factory is to have rapid update cadence. This is exactly why anyone using TW and Node should use nodejs15. If you wish for slower update cadence, we have nodejs10, nodejs12 and nodejs14 in Leap. And even nodejs8 is there. - Adam

Why are not 12 and 14 in the repos? 14 is the latest LTS and it does not make sense to not have it there, and it created a lot of issues for many people when it suddenly got pulled for no reason about a month ago. Keeping all nodejs versions that are not EOL would be the best approach here, similar to how Go is treated in Tumbleweed repos. Nodejs is one of the largest development platforms and a lot of people will run into issues when the major versions are not included in the main repo.

On Thu, Apr 29, 2021 at 07:27:42PM -0000, Gus Fos wrote:
We are trying now to remove nodejs10 and only have the current version in TW. TW is meant to be a rolling distribution that have the latest and the greatest, or something like this. It is also meant to be a testing ground for any integration issues. We can't do testing if everyone is using legacy versions because upstream indicated LTS support -- LTS is actually the antithesis of what TW is suppose to be. Having said that, nodejs is a very stable product. From one major version to another there are very few incompatibilities. The incompatibilities are mostly in the ecosystem and not the core. Anyway, if you need an old nodejs engine on TW, you can install it from the devel project. I will keep all versions there. But in TW, it really makes sense just to have the latest version, irrespective of LTS status. If you wish to only have LTS nodejs versions that are officially supported by us, then I would suggest Leap as an alternative. You can get nodejs{10,12,14} in 15.2 and 16 will be added later. - Adam PS. just out of curiosity, what is broken with nodejs16 that was working with 14 or older?

Hi Adam, Am Fr., 28. Mai 2021 um 13:42 Uhr schrieb Adam Majer <amajer@suse.de>:
PS. just out of curiosity, what is broken with nodejs16 that was working with 14 or older?
I don't think thats the right question - nodejs14 is LTS and supported upstream and imho should be available in tumbleweed because there are popular open source projects (not in tumbleweed) currently still requiring nodejs 14. I personally started developing on one of them in the last few weeks and while I thought "nah, it can't be that hard to go with nodejs16", about two days later I just deleted the whole effort as I had tens of little issues here and there, and upstream was not willing to move to nodejs16 yet because not all dependencies were compatible with 16, or required a major version update that caused fallout in the project itself that is non-trivial to resolve. I think a distro should serve its users, and not force the user to adjust to the needs of the distro. Yes, there is always a bit of a balance in that, but the balance needs to be more towards the user. Greetings, Dirk

On Thu, Jun 03, 2021 at 11:17:44AM +0200, Dirk Müller wrote:
Of course, that is fair comment. At the same time, nodejs14 no longer seems to build for TW because of ICU issues -- ICU in TW is too new. https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs14 So, we either go to bundled version again, which is something I generally would not do for TW, or we need a backport for https://github.com/nodejs/node/pull/38497/commits/e6da39cc1754b827ea702d6e07... looks not too difficult so I'll backport that in there and probably older node versions too. So at least we have them building in devel project if nothing else.
Yes, in this case the lesser evil is to stick with an older version of node.
There always need to be a balance and that is correct. If one or two users complains, I think a valid comment would be to direct them to use the package from the devel project, especially in this case when dealing with a leaf package and a developer oriented package. If we have a bug report and more than a handful of 'me too' comments (so like 5ish?), maybe even just here, I have no issue with having nodejs14 in TW longer or reintroduced. On the other hand, if no one complains, then maybe there are not many users impacted and the problem is not really a problem. 873209 State:accepted By:RBrownSUSE When:2021-02-22T13:58:03 delete: openSUSE:Factory/nodejs14 So yes, if you need nodejs14, complain. The squicky wheel gets the grease, or so the saying goes. At very least, it tells me we have users :-) The question of balance also comes to the audience -- 3rd party user of node is more understood to be more conservative and constrained by dependencies than for example a build system used to build a package in TW. I think we can expect maintainers to push the build system to use the latest versions while at the same time be more understanding to non-maintainers running production. - Adam
participants (6)
-
Adam Majer
-
Dirk Müller
-
Dominique Leuenberger / DimStar
-
Gus Fos
-
Michal Suchánek
-
Nicolas FORMICHELLA