From Fedora Project Wiki
(Initial Change Page)
 
(Feedback section)
Line 3: Line 3:
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->


= Nodejs libraries should be bundled by default =
= Stop Shipping Individual Nodejs Library Packages =


== Summary ==
== Summary ==
The nodejs libraries have been approved to be bundled, and there is infrastructure in place for the bundling to work properly. Currently, it is recommended that packagers should create individual nodejs library packages instead of bundling all of the libraries into the package requiring them.
 
This change is to make it default to bundle the nodejs libraries with the package that needs then, and retire the vast majority of nodejs library packages.
For Nodejs, Fedora should only package:
Creating a nodejs library package will be the exception, instead of the rule.
* The interpreter, development headers/libraries, and the assorted tools to manage project-level installations (NPM, yarn, etc.).
* Packages that provide binaries that users would want to use in their shell.
* compiled/binary nodejs modules (for now)


== Owner ==
== Owner ==
<!--
 
For change proposals to qualify as self-contained, owners of all affected packages need to be included here. Alternatively, a SIG can be listed as an owner if it owns all affected packages.
* Name: [[https://developer.fedoraproject.org/tech/languages/nodejs/SIG.html| Nodejs SIG]]
This should link to your home wiki page so we know who you are.
* Email: nodejs@lists.fedoraproject.org
-->
* Name: [[User:FASAcountName| Your Name]]
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
* Email: <your email address so we can contact you, invite you to meetings, etc. Please provide your Bugzilla email address if it is different from your email in FAS>
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
Line 37: Line 35:
<!-- [[Category:SystemWideChange]] -->
<!-- [[Category:SystemWideChange]] -->


* Targeted release: [[Releases/<number> | Fedora <number> ]]  
* Targeted release: [[Releases/34 | Fedora 34 ]]  
* Last updated: <!-- this is an automatic macro — you don't need to change this line -->  {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}  
* Last updated: <!-- this is an automatic macro — you don't need to change this line -->  {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}  
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
Line 52: Line 50:
== Detailed Description ==
== Detailed Description ==


<!-- Expand on the summary, if appropriate. A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
The nodejs libraries have been approved to be bundled, and there is infrastructure in place for the bundling to work properly.  Currently, it is recommended that packagers should create individual nodejs library packages instead of bundling all of the libraries into the package requiring them.
This change is to make it default to bundle the nodejs libraries with the package that needs then, and retire the vast majority of nodejs library packages.
 
In summary, for Nodejs Fedora should only package:
* The interpreter, development headers/libraries, and the assorted tools to manage project-level installations (NPM, yarn, etc.).
* Packages that provide binaries that users would want to use in their shell.
* compiled/binary nodejs modules (for now)
 


== Feedback ==
== Feedback ==


<!-- Summarize the feedback from the community and address why you chose not to accept proposed alternatives. This section is optional for all change proposals but is strongly suggested. Incorporating feedback here as it is raised gives FESCo a clearer view of your proposal and leaves a good record for the future. If you get no feedback, that is useful to note in this section as well. For innovative or possibly controversial ideas, consider collecting feedback before you file the change proposal. -->
There has been a discussion on the fedora nodejs mailing list about what to do with the extreme dependency problem of the nodejs library packages.  Because of the extreme inter-dependency, upgrading almost any package causes others to break. It has caused most packages to rot, upgraded for years. Many of the nodejs packagers are giving up and orphaning their packages, which has caused even more problems.
 
An initial proposal was to find all of the important nodejs library packages and bundle those, making them easier to upgrade and maintain. But there was problems with figuring out what was important, and what versions should those have.  During that discussion this rather extreme solution, of getting rid of all nodejs libraries was proposed. To our surprise, it has been the best suggestion and fixes the most problems.


== Benefit to Fedora ==
== Benefit to Fedora ==

Revision as of 21:37, 23 September 2020

Idea.png
Guidance
For details on how to fill out this form, see the documentation.


Stop Shipping Individual Nodejs Library Packages

Summary

For Nodejs, Fedora should only package:

  • The interpreter, development headers/libraries, and the assorted tools to manage project-level installations (NPM, yarn, etc.).
  • Packages that provide binaries that users would want to use in their shell.
  • compiled/binary nodejs modules (for now)

Owner

  • Name: [Nodejs SIG]
  • Email: nodejs@lists.fedoraproject.org

Current status

  • Targeted release: Fedora 34
  • Last updated: 2020-09-23
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

The nodejs libraries have been approved to be bundled, and there is infrastructure in place for the bundling to work properly. Currently, it is recommended that packagers should create individual nodejs library packages instead of bundling all of the libraries into the package requiring them. This change is to make it default to bundle the nodejs libraries with the package that needs then, and retire the vast majority of nodejs library packages.

In summary, for Nodejs Fedora should only package:

  • The interpreter, development headers/libraries, and the assorted tools to manage project-level installations (NPM, yarn, etc.).
  • Packages that provide binaries that users would want to use in their shell.
  • compiled/binary nodejs modules (for now)


Feedback

There has been a discussion on the fedora nodejs mailing list about what to do with the extreme dependency problem of the nodejs library packages. Because of the extreme inter-dependency, upgrading almost any package causes others to break. It has caused most packages to rot, upgraded for years. Many of the nodejs packagers are giving up and orphaning their packages, which has caused even more problems.

An initial proposal was to find all of the important nodejs library packages and bundle those, making them easier to upgrade and maintain. But there was problems with figuring out what was important, and what versions should those have. During that discussion this rather extreme solution, of getting rid of all nodejs libraries was proposed. To our surprise, it has been the best suggestion and fixes the most problems.

Benefit to Fedora

Scope

  • Proposal owners:
  • Other developers: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Objectives:

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

N/A (not a System Wide Change)

User Experience

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No
  • Blocks product? product

Documentation

N/A (not a System Wide Change)

Release Notes