Hi Stephen,
Stephen Gallagher <sgallagh(a)redhat.com> writes:
On Tue, Sep 6, 2022 at 2:29 PM Ben Cotton <bcotton(a)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:
1) Upgrading from either F36 or F37 will result in you getting Node.js
18. (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:
1) 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)
2) 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