So, as of Fedora 28, we now have Node.js as module streams (which means that as of Fedora 28 GA, users will be able to pick which of 6.x, 8.x or 9.x they want to have on their system). However, we're *also* shipping an 8.x version in the traditional repository which is somewhat superfluous.
My proposal is that in Fedora 29, we will retire Node.js from the standard RPM repositories and have it available only as module streams. We'll pick the latest upstream LTS release available at the time of GA as the default stream for each Fedora release. We will then commit to carrying any other upstream LTS releases and possibly the latest development release as non-default streams.
A module default stream will behave the same as the traditional repo in most respects (if a user just does `dnf install npm` or `dnf install nodejs`, they will get an RPM without any extra effort). The main difference is that the user must have the module repositories enabled on their system. The plan, however, is for this to be enabled for all of Fedora starting with F29 GA (and I'll be sending out a formal Change Proposal for this later this week for FESCo to review).
My goal here is for Fedora to be an ideal place for Node.js developers to work by providing them their full set of options for Node.js runtimes.
To answer some likely questions ahead of time:
Q: "How do we handle nodejs-* packages in the traditional repo?" A: If it's going to stay in the traditional repository, then it must work with whichever LTS release of Node.js is selected to be the default stream for that Fedora release. For example, if 10.x becomes the default stream in Fedora 29, then we can only ship nodejs-* packages in the traditional repo that can run atop Node.js 10. Any package that must run on an older version will need to be made into a module stream that depends on that older version.
Q: "If we need to carry a nodejs-* package that requires a non-default Node.js, where do we put it?" A: It will depend on the package. If it's included because it's part of an application that is being packaged, it makes the most sense to create a module for that application and pull its dependencies into it. If it's a very low-level, commonly-used Node package (e.g. nodejs-gyp or nodejs-semver), it may be appropriate for us to add it to the 'nodejs' module if they need a compatible stream.
On Mon, Apr 23, 2018 at 8:06 AM Stephen Gallagher sgallagh@redhat.com wrote:
So, as of Fedora 28, we now have Node.js as module streams (which means
that as of Fedora 28 GA, users will be able to pick which of 6.x, 8.x or 9.x they want to have on their system). However, we're *also* shipping an 8.x version in the traditional repository which is somewhat superfluous.
My proposal is that in Fedora 29, we will retire Node.js from the
standard RPM repositories and have it available only as module streams. We'll pick the latest upstream LTS release available at the time of GA as the default stream for each Fedora release. We will then commit to carrying any other upstream LTS releases and possibly the latest development release as non-default streams.
A module default stream will behave the same as the traditional repo in
most respects (if a user just does `dnf install npm` or `dnf install nodejs`, they will get an RPM without any extra effort). The main difference is that the user must have the module repositories enabled on their system. The plan, however, is for this to be enabled for all of Fedora starting with F29 GA (and I'll be sending out a formal Change Proposal for this later this week for FESCo to review).
My goal here is for Fedora to be an ideal place for Node.js developers to
work by providing them their full set of options for Node.js runtimes.
To answer some likely questions ahead of time:
Q: "How do we handle nodejs-* packages in the traditional repo?" A: If it's going to stay in the traditional repository, then it must work
with whichever LTS release of Node.js is selected to be the default stream for that Fedora release. For example, if 10.x becomes the default stream in Fedora 29, then we can only ship nodejs-* packages in the traditional repo that can run atop Node.js 10. Any package that must run on an older version will need to be made into a module stream that depends on that older version.
Q: "If we need to carry a nodejs-* package that requires a non-default
Node.js, where do we put it?"
A: It will depend on the package. If it's included because it's part of
an application that is being packaged, it makes the most sense to create a module for that application and pull its dependencies into it. If it's a very low-level, commonly-used Node package (e.g. nodejs-gyp or nodejs-semver), it may be appropriate for us to add it to the 'nodejs' module if they need a compatible stream.
I'm mostly okay with this, though I still think that the "default" nodejs version should be available without involving the modularity stuff. So for Fedora 29, I think we should *still* ship the latest LTS Nodejs release as normal, and use modules for non-default versions.
On Tue, May 22, 2018 at 10:08 AM Neal Gompa ngompa13@gmail.com wrote:
On Mon, Apr 23, 2018 at 8:06 AM Stephen Gallagher sgallagh@redhat.com wrote:
So, as of Fedora 28, we now have Node.js as module streams (which means
that as of Fedora 28 GA, users will be able to pick which of 6.x, 8.x or 9.x they want to have on their system). However, we're *also* shipping an 8.x version in the traditional repository which is somewhat superfluous.
My proposal is that in Fedora 29, we will retire Node.js from the
standard RPM repositories and have it available only as module streams. We'll pick the latest upstream LTS release available at the time of GA as the default stream for each Fedora release. We will then commit to carrying any other upstream LTS releases and possibly the latest development release as non-default streams.
A module default stream will behave the same as the traditional repo in
most respects (if a user just does `dnf install npm` or `dnf install nodejs`, they will get an RPM without any extra effort). The main difference is that the user must have the module repositories enabled on their system. The plan, however, is for this to be enabled for all of Fedora starting with F29 GA (and I'll be sending out a formal Change Proposal for this later this week for FESCo to review).
My goal here is for Fedora to be an ideal place for Node.js developers to
work by providing them their full set of options for Node.js runtimes.
To answer some likely questions ahead of time:
Q: "How do we handle nodejs-* packages in the traditional repo?" A: If it's going to stay in the traditional repository, then it must work
with whichever LTS release of Node.js is selected to be the default stream for that Fedora release. For example, if 10.x becomes the default stream in Fedora 29, then we can only ship nodejs-* packages in the traditional repo that can run atop Node.js 10. Any package that must run on an older version will need to be made into a module stream that depends on that older version.
Q: "If we need to carry a nodejs-* package that requires a non-default
Node.js, where do we put it?"
A: It will depend on the package. If it's included because it's part of
an application that is being packaged, it makes the most sense to create a module for that application and pull its dependencies into it. If it's a very low-level, commonly-used Node package (e.g. nodejs-gyp or nodejs-semver), it may be appropriate for us to add it to the 'nodejs' module if they need a compatible stream.
I'm mostly okay with this, though I still think that the "default" nodejs version should be available without involving the modularity stuff. So for Fedora 29, I think we should *still* ship the latest LTS Nodejs release as normal, and use modules for non-default versions.
Yeah, I'm leaning towards doing that for F29 at least. I was hoping we could just make modules non-optional in that release, but I'm thinking it should wait for at least one release where they're available for all Editions first.
So, another decision to make: at what point should we switch the default stream to 10 and update the Rawhide RPMs to it as well? Currently we're still shipping Node.js 8.x (LTS) as the default stream, but 10.x which will be the next LTS is now available.
The main question is this: how many Node.js packages in Fedora will be broken if we switch to 10.x as the default? Do we know? Should we try to do a mini-mass-rebuild in a side-tag?
nodejs@lists.fedoraproject.org