From Fedora Project Wiki
(Add trackers)
 
(17 intermediate revisions by 3 users not shown)
Line 42: Line 42:


== Current status ==
== Current status ==
[[Category:ChangePageIncomplete]]
[[Category:ChangeAcceptedF33]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
Line 61: Line 61:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* FESCo issue: <will be assigned by the Wrangler>
* FESCo issue: [https://pagure.io/fesco/issue/2391 #2391]
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1845643 #1845643]
* Release notes tracker: <will be assigned by the Wrangler>
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/511 #511]


== Detailed Description ==
== Detailed Description ==
Line 69: Line 69:
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->


Fedora 33 will ship with the latest LTS version of Node.js by default. This will either be the `nodejs:14` module stream or else replicated to the non-modular repository, depending on the status of other release engineering work around supporting modular content in the non-modular buildroots. To end-users, the experience should be identical: `dnf install nodejs` will give them `nodejs-14.x` and the matching `npm` package.
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 ==
== Benefit to Fedora ==
Line 107: Line 107:
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


The packages are already built for Fedora 33 in a non-default module stream. On June 14th, 2020, the nodejs-14.x packages will become the default in Fedora 33 (either by making the 14.x module stream be the default stream or by rebuilding the packages as non-modular, depending on other factors).
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) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Other developers: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
Line 114: Line 114:
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
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: [https://pagure.io/releng/issues #Releng issue number] (a check of an impact with Release Engineering is needed) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Release engineering: [https://pagure.io/releng/issue/9426 #9426]
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuild required?  include a link to the releng issue.  
<!-- Does this feature require coordination with release engineering (e.g. changes to installer image generation or update package delivery)?  Is a mass rebuild required?  include a link to the releng issue.  
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing, and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing, and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->


Release engineering and FESCo will need to approve the change to the default module stream.
We have requested [https://pagure.io/releng/issue/9427 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) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Policies and guidelines: N/A (not needed for this Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
Line 148: Line 148:
* Confirm that `dnf install nodejs` results in Node.js 14.x being installed.
* 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 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 has `nodejs:14` enabled on Fedora 33.
* 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 has `nodejs:12` enabled on Fedora 33.
* Confirm that upgrading from Fedora 31 or Fedora 32 with the `nodejs:14` module enabled upgrades successfully and still has `nodejs:14` enabled on Fedora 33.
* Confirm that upgrading from Fedora 31 or Fedora 32 with the `nodejs:14` module enabled upgrades successfully and still has `nodejs:14` enabled on Fedora 33.


Line 168: Line 168:
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this change depends?  In other words, completion of another change owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel change)? -->
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this change depends?  In other words, completion of another change owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel change)? -->


All packages prefixed with `nodejs-` depend on this package. They will need to be updated or removed from Fedora 33 if they do not work with Node.js 14.x.
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:
 
<pre>
dnf reset nodejs
dnf module install nodejs:14/development
</pre>
 
Packagers can also test their builds using `mock` by creating the file `/etc/mock/fedora-rawhide-x86_64-nodejs14.cfg` with the following contents:
 
<pre>
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')
</pre>
 
Then call
<pre>
mock -r fedora-rawhide-x86_64-nodejs14 --enablerepo=rawhide-modular nodejs-foo
</pre>
 
(Note that the `--enablerepo=rawhide-modular` portion looks redundant, but this is because of [https://github.com/rpm-software-management/mock/issues/591 a mock bug])


== Contingency Plan ==
== Contingency Plan ==
Line 175: Line 200:
* Contingency mechanism: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Contingency mechanism: <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->


Revert to Node.js 12.x as the default stream. This may require bumping epoch or making the `nodejs:12` stream the default, depending on the status of the modules-in-non-modular-buildroot work at the time.
Revert to Node.js 12.x as the default Node.js interpreter. This will require bumping epoch.


<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
* Contingency deadline: N/A <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Contingency deadline: Beta Freeze <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
<!-- Does finishing this feature block the release, or can we ship with the feature in incomplete state? -->
* Blocks release? No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Blocks release? No <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->

Latest revision as of 17:55, 9 June 2020


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

Current status

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 has nodejs:12 enabled on Fedora 33.
  • Confirm that upgrading from Fedora 31 or Fedora 32 with the nodejs:14 module enabled upgrades successfully and still has nodejs: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

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