-
Notifications
You must be signed in to change notification settings - Fork 135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open Corepack Vote #1527
base: initiateNewVote
Are you sure you want to change the base?
Open Corepack Vote #1527
Conversation
Co-authored-by: Ruy Adorno <[email protected]>
Does the presence of this vote mean the PMWG has a deadline for our goals and corresponding proposal docs? I assume we would want to have a clear picture of our intended future goals before we make changes to the status quo, but maybe y'all are seeing it differently. |
The idea is to start a vote but I don’t think we have a timeline for the vote. From the summit some ideas were proposed:
I think for those who are not yet decided, it would be valuable to have more information before they cast their vote. But we should not stall this forever either, so a vote will happen soonish. |
How is the survey distributed? |
Thanks for the context @joyeecheung! We will work to get that asap. We have good progress happening today here already: nodejs/package-maintenance#597
More details here, including us working out the questions we want to ask in this regard. nodejs/next-10#261 |
I don't think this vote affects any potential future goals. IMHO, this vote can happen independently of PMWG's work. I don't see how they are strictly related. Unless the goals of the PMWG match the corepack's implementation exactly. |
Based on the collab summit and recent discussions, I think we might have consensus that we want to revise https://nodejs.org/en/download to prioritize the application developer use case, recommending installation via a version manager as the default method (see also nodejs/package-maintenance#591). It would probably be a technical necessity for that version manager to be installed separately from Node, which would mean that the default tab for the download page would be something like a list of instructions where there are separate installation steps for the version manager and then for Node. Once we have that, it follows that the package manager version manager (Corepack) would be one of those installation steps. In this approach, Corepack would be unbundled from Node (and therefore not managed by whatever version manager controls the Node distribution) but still provided for users as part of installation. |
Co-authored-by: Antoine du Hamel <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To avoid giving readers the wrong idea that we are voting to remove corepack from the project...
Converting to draft because the tool is not able to handle two open votes at once, and in the last TSC meeting there was consensus about giving more time to the package maintenance team before taking a decision. |
@nodejs/tsc I'm not sure what are next steps, I'll mention about this at the next TSC meeting |
How would the following voting candidate work?
In my experience this would be a breaking change. If for instance Corepack is enabled for pnpm, then pnpm can no longer be installed globally via npm. I know this would break my workflows if it were introduced as default in an existing Node.js release line. For example on Ubuntu
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To reiterate I'm fine with calling for a vote
cc @nodejs/package-maintenance are we good to proceed with the vote? |
Based on the discussion in the TSC meeting today:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This vote seems to cover all the viable options. Thanks @marco-ippolito for picking this up, and happy to see some movement on this no matter the outcome.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as a member of @nodejs/package-maintenance
For the option:
I understand that would mean that Node.js 24.x would no longer contain Corepack if this option is chosen by voting. For exisiting lines Node.js 18.x, 20.x & 22.x would the version of Corepack be frozen or would you continue to update it during the lifetime of each of the lines? Perhaps this question is out-of-scope for this vote, however it would need to be answered at some stage if this option is chosen. |
For 18.x, it's going to be EOL in couple of months so I guess it won't be supported anymore very soon. |
That sounds like a good assumption if everyone voting agrees. (And as you say, Node.js 18 is EOL at end of April 2025, so it doesn't need much consideration.)👍🏻 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
I think it's time.
One thing: it should be clear that none of the options implies the removal of npm. Right?
None of the options mentions npm, it’s not the topic of the vote. If you think it should be reworded to be clearer, please send suggestions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From last year discussions on Corepack, here are two critics I find fair and unaddressable:
- it is too much limited because it can't manage
node
versioning (because it depends onnode
), i.e. if reproducibility is what you're after, Corepack is not enough. - given
npm
is going to keep being distributed alongsidenode
for the time being, andnpm
can downloadcorepack
, distributing Corepack ourselves is not worth the maintenance burden.
However, IMO those do not justify getting rid of it, because:
- Corepack users find it very useful to have it distributed with Node.js, so it's not something they need to worry about (a recent incident forced pnpm users to revise that philosophy, and of course there's a non-zero chance that another incident in the future will force users to update independently of
node
and/or us to release some urgent patch releases). - If we remove Corepack from the official distribution now, we're leaving users without any easy solution when working on non-npm projects (sure, it's easy for us to say "but they just need to add
npx
in front of their command" or "they'll have tonpm i -g corepack
", but let's not forget those come with tradeoffs (e.g. security, FS permissions) that are not always easy to understand for new users).
IMO the best solution would be to replace Corepack without decreasing the current DX, there have been discussions around it – last I heard, the current plan would be to have a builtin "npx
-like" (but hum without dependency resolution nor postinstall scripts) that would allow to with a node --run install
command to get the ad-hoc versions of node
and package manager for the local project on the shell. However, it's been one year, and we can't trust developers who say a feature will be ready soon™, so I suggest we add a few more options that set up a deadline to force things to happen, and give more time for users to adapt. I suggest six months, and keep Corepack on 24.x.
Co-authored-by: Antoine du Hamel <[email protected]>
Co-authored-by: Antoine du Hamel <[email protected]>
Co-authored-by: Antoine du Hamel <[email protected]>
Also ✅ as part of package maintenance. + it will not affect the current download website, whatever we decide here. Although, @nodejs/nodejs-website would like to be notified so we can change "corepack enable" to "npx corepack enable" |
@nodejs/tsc ... as discussed on this TSC call today. Initiate a formal vote on the corepack discussion