#3567 Revert Node.js NPM Change
Closed: Rejected by decathorpe. Opened by owensz.

We aim to revert the proposal https://pagure.io/fesco/issue/3452 ("Proposal in Question"), which introduces breaking changes to all packages relying on npm, breaking the compromise documented at https://fedoraproject.org/wiki/Changes/NodejsAlternativesSystem#Dependencies.

To summarize the Proposal in Question, the /usr/bin/npm binary was moved into an optional subpackage, causing all packages that require npm to not pull in this binary when install_weak_deps=0 (which most build systems, including Koji, have set). This is breaking both for users and in development environments, as many projects using NPM expect the npm binary to be present. Users understandably expect the same, and will be confused when current project documentation (both for general NPM usage and for Fedora) incorrectly confirms what they think is correct.
We believe this Proposal in Question is harmful to the Node.js and Fedora ecosystem and must be (i) reverted in Rawhide; and (ii) not be propagated to Fedora Linux 44.

We propose reverting the above proposal, thereby satisfying the following conditions:
- all nodejs*-npm packages should provide the npm or npm-* binaries.
- all misleading -bin subpackages should be removed.
- The default nodejs-npm package must provide the default npm binary.

  • Owners:

Fyra Labs, represented by:
- Name: Owen Zimmerman, Gilver Eckhart, Lleyton Grey, Jaiden Riordan, Madonuko, Pornpipat Popum
- Email: owen@fyralabs.com, roachy@fyralabs.com, lea@fyralabs.com, jade@fyralabs.com, mado@fyralabs.com, cappy@fyralabs.com

Universal Blue/Bazzite, represented by:
- Name: Kyle Gospodnetich
- Email: me@kylegospodneti.ch

Nobara Linux, represented by:
- Name: Thomas Crider
- Email: gloriouseggroll@gmail.com


Well, uhh, this is a new one. :sweat_smile:

Are you basically asking for the whole Change for F44 by @aradchen, @jstanek, and @tjuhasz to be reverted?

Yes, that’s correct.

Well, uhh, this is a new one. :sweat_smile:

Are you basically asking for the whole Change for F44 by @aradchen, @jstanek, and @tjuhasz to be reverted?

If I understand correctly, your request here seems to be ~equivalent to requesting FESCo to invoke the contingency mechanism of the change proposal (i.e. reverting the changes in Fedora 44+ and going back to the drawing board).

I'm putting this topic on the agenda for the next meeting, which is scheduled for 2026-02-17 at 18:00 UTC in #meeting:fedoraproject.org on Matrix. All our meetings are public, you're welcome to join.

Metadata Update from @decathorpe:
- Issue tagged with: meeting

If I understand correctly, your request here seems to be ~equivalent to requesting FESCo to invoke the contingency mechanism of the change proposal (i.e. reverting the changes in Fedora 44+ and going back to the drawing board).

I'm putting this topic on the agenda for the next meeting, which is scheduled for 2026-02-17 at 18:00 UTC in #meeting:fedoraproject.org on Matrix. All our meetings are public, you're welcome to join.

That’s correct. I should be able to make it to the meeting as well as some other Fyra members attached to this issue. Thanks!

Would a technical solution that ensures /usr/bin/npm is always installed when any npm version is installed (same for /usr/bin/node) satisfy your request?

Would a technical solution that ensures /usr/bin/npm is always installed when any npm version is installed (same for /usr/bin/nodejs) satisfy your request?

Just for clarity's sake, what would this solution look like?

I have written part of this proposal and my idea is the -bin packages as stated in the aforementioned FESCo ticket needs to be reverted.

Additionally, "all nodejs*-npm packages should provide the npm or npm-* binaries" allows for the cases that the respective binary is provided via a hard dependency or directly. The verb "provides" does not necessitate file provides directly by that package, though this would also solve our concerns. However, we disagree with the naming -bin for the reasons mentioned in the ticket.

And we figured the best thing to do at this time is to revert the entire proposal, akin to the process mentioned by decathorpe.

Would a technical solution that ensures /usr/bin/npm is always installed when any npm version is installed (same for /usr/bin/nodejs) satisfy your request?

Just for clarity's sake, what would this solution look like?

I tried to provide more background and proposed a technical solution in the Change's Fedora Discussion post: https://discussion.fedoraproject.org/t/f43-change-proposal-use-update-alternatives-for-managing-nodejs-symlinks-self-contained/158042/.

It needs testing, but bottom line, I think we can fix this with a simple packaging fix without having to yank out the entire Change a week before the beta freeze.

Also, we should make sure to create/update the documentation for this. At least currently, https://fedoraproject.org/wiki/Changes/NodejsAlternativesSystem#Release_Notes is blank.

Would a technical solution that ensures /usr/bin/npm is always installed when any npm version is installed (same for /usr/bin/nodejs) satisfy your request?

Just for clarity's sake, what would this solution look like?

https://src.fedoraproject.org/rpms/nodejs24/pull-request/30

Speaking for the change owners, we are trying hard to incorporate the feedback and proposals from here as fast as we can, in order to unbreak what has been broken. Thanks @gotmax23 and @churchyard for the technical proposals especially.

Also, we should make sure to create/update the documentation for this. At least currently, https://fedoraproject.org/wiki/Changes/NodejsAlternativesSystem#Release_Notes is blank.

I'll draft something today; feedback will be appreciated.

Release notes drafted: https://fedoraproject.org/wiki/Changes/NodejsAlternativesSystem#Release_Notes

Builds with https://src.fedoraproject.org/rpms/nodejs24/pull-request/30 merged are now in progress for rawhide and F44.

Package naming change is still pending suggestions or at least acks for -unversioned-command suffix (chosen to mirror what python is/has been doing).

There are many problems with how this ticket was formulated. The general tone was already discussed and summarized in https://discussion.fedoraproject.org/t/f43-change-proposal-use-update-alternatives-for-managing-nodejs-symlinks-self-contained/158042/20, so I won't comment on that further. The second problem is that it describes a solution, but never the issue to be solved. So the reader is left guessing what the problem to be solved actually is.

My guess:
- Installations of nodejs*-npm with install_weak_deps=0 do not get /usr/bin/npm
- ArchLinux (?) uses -bin suffix for packages not built from source (?) and people assume that Fedora has a similar convention

Item one seems be solved by the latest update. I tested a bunch of different dnf install commands on my F44 box and I get the -bin subpackages pulled in in all cases.

Item two is a matter of opinion. There is no guideline or even expectation about -bin in Fedora. We have golang-bin libproxy-bin lis-bin mlpack-bin seabios-bin seavgabios-bin smbios-utils-bin tlpi-examples-bin ucommon-bin. Most of those contain binaries, golang-bin uses alternatives and contains symlinks. But I agree that -unversioned-suffix is a better name.

-1 on the proposal to revert the change.

I support the rename to -unversioned-suffix, but I don't think we should vote on that. If anything, that'd be something for the FPC to codify.

Release notes drafted: https://fedoraproject.org/wiki/Changes/NodejsAlternativesSystem#Release_Notes

Builds with https://src.fedoraproject.org/rpms/nodejs24/pull-request/30 merged are now in progress for rawhide and F44.

Package naming change is still pending suggestions or at least acks for -unversioned-command suffix (chosen to mirror what python is/has been doing).

I don't mind standardizing it in Fedora, opened https://pagure.io/packaging-committee/pull-request/1526.
According to docs on contributing to docs this should spin a discussion.

This was discussed during today's meeting (meeting log starting at 18:22:59).

REJECTED: Invoke the contingency mechanism for the NodeJS / NPM swappable alternatives Change Proposal for Fedora 44. (+0, 0, -5)

Also announced on the mailing list: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/AQ3GLYMHGEUYVHMEHOLKEWQTZ52AURFN/

Metadata Update from @decathorpe:
- Issue untagged with: meeting
- Issue close_status updated to: Rejected
- Issue status updated to: Closed (was: Open)

Metadata