Fedora 31 System-Wide Change proposal: Node.js 12.x by default

<a href="" title=""></a>

== Summary ==
The latest release of Node.js to carry a 30-month lifecycle is the
12.x series. As with 10.x and 8.x before it, Fedora 31 will carry 12.x
as the default Node.js interpreter for the system. The 10.x
interpreter will remain available as a non-default module stream.

== Owner ==
* Name: [[User:Sgallagh| Stephen Gallagher]]
* Email: <a href="mailto: ... at fedoraproject dot org"> ... at fedoraproject dot org</a>
* Responsible SIG: Node.js SIG

== Detailed Description ==
Fedora 31 will ship with the latest LTS version of Node.js by default.
This will either be the `nodejs:12` 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-12.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
12.x release, Fedora 31 will also have the 10.x release available as a
selectable module stream.

== Scope ==
* Proposal owners:
The packages are already built for Fedora 31 in a non-default module
stream. On June 14th, 2019, the nodejs-12.x packages will become the
default in Fedora 31 (either by making the 12.x module stream be the
default stream or by rebuilding the packages as non-modular ,
depending on other factors).

If the non-modular buildroot work is finished and available by July
17th (a week before the mass-rebuild), Node.js 12.x will drop the
non-modular packages and make the 12.x stream the default.

* Other developers:
Any developer with a package that depends on Node.js at run-time or
build-time should test with the 12.x module stream enabled as soon as
possible. Issues should be reported to <a href="mailto: ... at lists dot"> ... at lists dot</a>

* Release engineering: [ #8388]

Release engineering and FESCo will need to approve the change to the
default module stream.

* 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 29 or Fedora 30 with
the non-modular nodejs-10.x packages will be automatically upgraded to
the 12.x packages, which may cause issues. If users are running
software known not to support Node.js 12.x yet, they can switch the
system back to using 10.x with yum commands (to be documented in
release notes).

== How To Test ==
* Confirm that `yum install nodejs` results in Node.js 12.x being installed.
* Confirm that upgrading from Fedora 29 or Fedora 30 with nodejs-10.x
installed (non-modular) results in an upgrade to nodejs-12.x
* Confirm that upgrading from Fedora 29 or Fedora 30 with the
`nodejs:10` module enabled does *not* result in an upgrade to 12.x and
still has `nodejs:10` enabled on Fedora 31.
* Confirm that upgrading from Fedora 29 or Fedora 30 with the
`nodejs:12` module enabled upgrades successfully and still has
`nodejs:12` enabled on Fedora 31.

== User Experience ==
Users will have the 12.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. They will
need to be updated or removed from Fedora 31 if they do not work with
Node.js 12.x.

== Contingency Plan ==
* Contingency mechanism:
Revert to Node.js 10.x as the default stream. This may require bumping
epoch or making the `nodejs:10` stream the default, depending on the
status of the modules-in-non-modular-buildroot work at the time.

* Contingency deadline: August 5th, 2019
* Blocks release? No

== Documentation ==
* <a href="" title=""></a>
* <a href="" title=""></a>

== Release Notes ==
Fedora 31 now ships with Node.js 12.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 10.x series by running
the following commands

dnf remove nodejs
dnf module reset nodejs
dnf module install nodejs:10