Hi Stephen,
Stephen Gallagher sgallagh@redhat.com writes:
On Tue, Sep 6, 2022 at 2:29 PM Ben Cotton bcotton@redhat.com wrote:
*snip*
When a Node.js release goes out of support, we have a question to answer: do we Obsolete it with a newer version? If so, which one? The most recent version or the oldest one? It will not be 100% compatible in either case. Do we Obsolete it with fedora-retired-packages? Do we just leave the packages in Fedora forever (possibly patching the `/usr/bin/node` binary to warn that it's out of support)?
I would definitely obsolete it. I personally would obsolete it with the default nodejs version, if there is one.
There's another potential upgrade issue: We have multiple choices of how to upgrade from the nodejs package to the nodejsXX packages:
- Upgrading from either F36 or F37 will result in you getting Node.js
- (This method is closest to how things worked prior to this Change,
where the nodejs package would just get updated to the latest stable release) 2) Upgrading from F36 will move you onto nodejs16 in F38. Upgrading from F37 will move you onto Node.js 18 in F38. (This method maintains compatibility with applications running on the current system) 3) Upgrading from F36 or F37 will *remove* the nodejs package and the user will need to manually select one to install. (This method has increased friction, but more user choice) 4) Upgrading from F36 or F37 will leave the existing nodejs package on the system, receiving no updates. Users of F38 will need to manually remove and install a newer version. (This method is high-friction, offers nothing over any of the others and potentially leaves people vulnerable)
With options 1), 3) and 4), we can make the change in F38 exclusively. However if we want to do 2), we *also* need to either backport this Change to Fedora 37 and Fedora 36 because otherwise we would have to continuously update the Obsoletes: values in F38. With 1) I can update the Obsoletes: to just treat any Node.js with an epoch < 3 as the trigger to move to nodejs18.
My questions to those brave souls who have read this far:
- Which do you think is the best of the above options for upgrades to F38?
My personal preference would be Option 1. Imho it's a bit expected that you might have to do some cleanup after a system upgrade. So moving to the latest stable version sounds like a good overall compromise for most users: you'll get the latest stable version and if you need an older version, you'll (hopefully) figure it out during the post-upgrade cleanup. (And we could implement it without backporting)
- What do we do about future upgrades in the following scenarios: a. The user has nodejsXX installed as the default interpreter. The
nodejsXX package is no longer available upon upgrade (EOL).
I would upgrade to the new default version.
b. The user has nodejsXX installed as the default interpreter. The
nodejsXX package is available but non-default upon upgrade.
Unless it is very simple to upgrade to that non-default version on upgrade, I'd just upgrade to the new default/latest stable as well in this case.
Cheers,
Dan