Node.js 14.x by default
Summary
The latest release of Node.js to carry a 30-month lifecycle is the 14.x series. As with 12.x, 10.x and 8.x before it, Fedora 33 will carry 14.x as the default Node.js interpreter for the system. The 12.x interpreter will remain available as a non-default module stream.
Owner
- Name: Zuzana Svetlikova
- Email: zsvetlik@redhat.com
- Name: Stephen Gallagher
- Email: sgallagh@fedoraproject.org
- Responsible SIG: Node.js SIG
Current status
- Targeted release: Fedora 33
- Last updated: 2020-06-09
- FESCo issue: #2391
- Tracker bug: #1845643
- Release notes tracker: #511
Detailed Description
Fedora 33 will ship with the latest LTS version of Node.js. dnf install nodejs will give users nodejs-14.x and the matching npm package.
Benefit to Fedora
Node.js is a popular server-side JavaScript engine. Keeping Fedora on the latest release allows us to continue tracking the state-of-the-art in that space. For those whose applications do not yet work with the 14.x release, Fedora 33 will also have the 12.x release available as a selectable module stream.
Scope
- Proposal owners:
The packages are already built for Fedora 33 in a non-default module stream. On June 14th, 2020, the nodejs-14.x packages will be built in the non-modular repository and thus become the default in Fedora 33.
- Other developers: N/A (not a System Wide Change)
Any developer with a package that depends on Node.js at run-time or build-time should test with the 14.x module stream enabled as soon as possible. Issues should be reported to nodejs@lists.fedoraproject.org
- Release engineering: #9426
We have requested a side tag to rebuild the Node.js packages against Node.js 14.x, though this may not be necessary.
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
Upgrade/compatibility impact
As with previous releases, users running Fedora 31 or Fedora 32 with the non-modular nodejs-12.x packages will be automatically upgraded to the 14.x packages, which may cause issues. If users are running software known not to support Node.js 14.x yet, they can switch the system to use 12.x with dnf module commands.
How To Test
- Confirm that
dnf install nodejs
results in Node.js 14.x being installed. - Confirm that upgrading from Fedora 31 or Fedora 32 with nodejs-12.x installed (non-modular) results in an upgrade to nodejs-14.x
- Confirm that upgrading from Fedora 31 or Fedora 32 with the
nodejs:12
module enabled does *not* result in an upgrade to 14.x and still hasnodejs:12
enabled on Fedora 33. - Confirm that upgrading from Fedora 31 or Fedora 32 with the
nodejs:14
module enabled upgrades successfully and still hasnodejs:14
enabled on Fedora 33.
User Experience
Users will have the 14.x release of Node.js available by default. See the "Upgrade/compatibility impact" section for specific details.
Dependencies
All packages prefixed with nodejs-
depend on this package. If they do not work with Node.js 14.x, they will need to be updated, made modular and dependent upon the nodejs:12
stream or else removed from Fedora 33.
Prior to the switchover date to Node.js 14.x as the default, packagers are strongly encouraged to test their existing Node modules with 14.x via the Modular version by running:
dnf reset nodejs dnf module install nodejs:14/development
Packagers can also test their builds using mock
by creating the file /etc/mock/fedora-rawhide-x86_64-nodejs14.cfg
with the following contents:
config_opts['target_arch'] = 'x86_64' config_opts['legal_host_arches'] = ('x86_64',) config_opts['enable_disable_repos'] = ['--enablerepo', 'rawhide-modular'] config_opts['module_install'] = ['nodejs:14/development'] include('templates/fedora-rawhide.tpl')
Then call
mock -r fedora-rawhide-x86_64-nodejs14 --enablerepo=rawhide-modular nodejs-foo
(Note that the --enablerepo=rawhide-modular
portion looks redundant, but this is because of a mock bug)
Contingency Plan
- Contingency mechanism:
Revert to Node.js 12.x as the default Node.js interpreter. This will require bumping epoch.
- Contingency deadline: Beta Freeze
- Blocks release? No
- Blocks product? No
Documentation
- https://nodejs.org/dist/latest-v14.x/docs/api/
- https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V14.md
Release Notes
Fedora 33 now ships with Node.js 14.x as the default Node.js JavaScript server-side engine. If your applications are not yet ready for this newer version, you can revert to the 12.x series by running the following commands
dnf remove nodejs dnf module reset nodejs dnf module install nodejs:12