Skip to content

Project Status (experimental to stable?) #104

Description

@styfle

I can't find any details on the current project status such as anything that needs to be solved before going stable.

  1. Are there any outstanding blockers?
  2. Are there known breaking changes coming up?
  3. Do we need to get npm working to be considered stable?
  4. Will a stable release remove the need to run corepack enable or will that always be a requirement?

Activity

  1. andersk commented on May 7, 2022

    @andersk

    I’d hope for security that corepack starts checking integrity hashes before it’s enabled by default.

    (Edit: This was briefly fixed, but it was then reversed by #134 and remains a problem.)

  2. trivikr commented on May 17, 2022

    @trivikr
    Member

    Visiting this GitHub issue from twitter thread.

    I'd asked on Yarn Discord in Jan'22 if we should propose to make it stable in Node.js 18. There was no follow-up though.

    Some useful links:

    @arcanis has been the champion and lead author for corepack, along with other maintainers of yarn.
    They're currently busy with the launch of yarn v4 in yarnpkg/berry#3591

    I think we should revive this GitHub issue after yarn v4 release.

  3. arcanis commented on May 17, 2022

    @arcanis
    Contributor

    Are there known breaking changes coming up?

    Mostly just #93 - many Node contributors expressed interest in seeing Corepack have a slightly more dynamic behavior, so that it stay up-to-date with minor/patch versions from the package managers (look at the thread for details, but in short it's currently painful for Node to have to make new releases each time npm has a security update).

    It makes dealing with #37 a little harder though. Perhaps package managers releases could be signed instead, although it requires infra and can be be difficult to do for package managers that aren't distributed as a single JS bundle (I believe only Yarn is).

    Are there any outstanding blockers?

    Apart from the one described above, I'd personally like to have feedback from one or more cloud provider confirming that Corepack has all the tools they need to build a proper integration that doesn't break their customers' setup. That's something Vercel can certainly help with!

    Do we need to get npm working to be considered stable?

    Corepack has value for Yarn and pnpm users, and it'd be too bad if we were blocked going forward by something we have no control over, so in my opinion I'd tend to say it's not needed, although it would be nice to have.

    Note that technically Corepack already supports npm, it's just not part of the default distribution until they decide to enable it. So when that happens it will be fairly fast and won't require much engineering work.

    Will a stable release remove the need to run corepack enable or will that always be a requirement?

    My hope (and goal when building this project) is that corepack enable won't be needed.

  4. styfle commented on Jul 14, 2022

    @styfle
    SponsorMemberAuthor

    I'd personally like to have feedback from one or more cloud provider

    We announced support today https://twitter.com/vercel_changes/status/1547581626279792640

    I'll relay any feedback from our customers as they begin adoption 👍

    In my own testing, the biggest problem I see today is the "Usage Error: This project is configured to use ". This happens when I run npm i -g vercel@latest in a project that is configured to use yarn or pnpm. It seems a little too strict because the global flag is not scoped to my current project. Similarly, vercel dev will shell out to npm or npx and corepack being enabled could block it from working properly.

    Update: I created #157

  5. styfle commented on Sep 29, 2022

    @styfle
    SponsorMemberAuthor

    Checking in here again. I can say that all outstanding issues are complete and everyone who tries out corepack is very happy with it. Its solving real problems. For example, npm changed behavior of peer dependencies in npm install in a minor version (8.6.0) suddenly causing builds to fail, and corepack allowed users to continue using the old behavior

    That being said, the one thing missing today is default support for npm when I run corepack enable. However, corepack enable npm is a sufficient workaround and has proved it works well today already. I agree that this shouldn't be a blocker with going to "stable" status.

  6. aduh95 commented on Oct 9, 2022

    @aduh95
    Contributor

    Checking in here again. I can say that all outstanding issues are complete and everyone who tries out corepack is very happy with it. Its solving real problems. For example, npm changed behavior of peer dependencies in npm install in a minor version (8.6.0) suddenly causing builds to fail, and corepack allowed users to continue using the old behavior

    That's really good to hear!

    That being said, the one thing missing today is default support for npm when I run corepack enable. However, corepack enable npm is a sufficient workaround and has proved it works well today already. I agree that this shouldn't be a blocker with going to "stable" status.

    I would assume that, on the contrary, Corepack being experimental would be a blocker to switch to using it for providing npm binaries with Node.js installation (instead of vendoring npm in the node repository like we do today).
    One additional thing I would personally like to see before calling Corepack stable is the ability for package manager authors to sign their releases, as a security feature. Maybe it's not a blocker though.

  7. styfle commented on Oct 11, 2022

    @styfle
    SponsorMemberAuthor

    I wouldn't consider signing releases a blocker to going stable. It would be a nice feature though.

    Correct me if I'm wrong, but I don't think npm i -g pnpm@7.13.4 has signed releases either?

    Unless the { "packageManager": "pnpm@7.13.4" } config doesn't pull from the npm registry like I expected? 🤔

  8. aduh95 commented on Oct 11, 2022

    @aduh95
    Contributor

    I wouldn't consider signing releases a blocker to going stable. It would be a nice feature though.

    When discussing with other devs, I've heard a few concerns regarding the decrease of security if Node.js doesn't ship npm anymore and instead expect users to download the latest version which could have been tampered with. IMO when we call Corepack stable, the next logical step is to stop bundling npm by default with Node.js in favor of Corepack, and the lack of signature verification might be a problem on that aspect.

    Correct me if I'm wrong, but I don't think npm i -g pnpm@7.13.4 has signed releases either?
    Unless the { "packageManager": "pnpm@7.13.4" } config doesn't pull from the npm registry like I expected? 🤔

    npm, pnpm, and Yarn v1.x are pulled from the npm registry, Yarn Berry is pulled from their own server. But it doesn't have anything to do with signed releases, right?

  9. styfle commented on Oct 11, 2022

    @styfle
    SponsorMemberAuthor
  10. yarinsa commented on Dec 29, 2022

    @yarinsa

    @styfle What prevents corepack to be stable in Node20?

  11. arcanis commented on Dec 29, 2022

    @arcanis
    Contributor

    Mostly time. On my side I'd like to add signing support to Yarn before asking for it to become stable, but I'm currently focusing on another Node PR.

    Perhaps in the meantime we can start to gather numbers / quotes demonstrating Corepack's usefulness in the wild ? I don't know what else would help the TSC make a decision, when comes the time.

  12. ljharb commented on Dec 29, 2022

    @ljharb
    SponsorMember

    I believe there's a pretty major licensing issue that needs to be resolved as well.

  13. arcanis commented on Dec 29, 2022

    @arcanis
    Contributor

    What are you referring to? That doesn't ring a bell.

  14. ljharb commented on Dec 29, 2022

    @ljharb
    SponsorMember

    My understanding is that corepack's npm "jumper" thing violates npm's license. I'm under the impression it's been brought to your attention in the past, and I'm pretty sure folks on the TSC are aware of it as well.

  15. aduh95 commented on Dec 29, 2022

    @aduh95
    Contributor

    I for one am not aware of it, do you have a link to a discussion that explains what's the issue?

  16. 6 remaining items

  17. boneskull commented on Aug 6, 2023

    @boneskull
    Member

    @ljharb Did you ever find anything about this licensing issue?

  18. trivikr commented on Oct 24, 2023

    @trivikr
    Member

    Revisiting this request to make corepack stable, as both yarn and pnpm recommend their users to use corepack:

    Some downstream dependencies, like GitHub Action to setup node, still do not support corepack actions/setup-node#651
    It would be helpful for yarn/pnpm users on Node.js projects if corepack is enabled by default in Node.js.

  19. anonrig commented on Jan 11, 2024

    @anonrig
    Member

    Node.js TSC in the process of discussing and taking action for the status of the project. For more information, I recommend reading the meeting notes from January 10, 2024. nodejs/TSC#1490

  20. styfle commented on Jan 11, 2024

    @styfle
    SponsorMemberAuthor

    The discussion is continuing in this issue: nodejs/node#50963

    Me watching from the sidelines: https://media2.giphy.com/media/FibBZ3bFGGcoXCB1kd/giphy.gif

  21. benjamingr commented on Jan 17, 2024

    @benjamingr
    Member

    Personal opinion (does not represent my employer):

    • +1 for corepack out of experimental to alleviate concerns
    • +1 for making it clear that npm is not owned by Node.js and making it clear package managers in corepack and tools still use the npm registry by default
    • +1 for keeping it opt in (corepack enable)
  22. aduh95 commented on Jan 17, 2024

    @aduh95
    Contributor
    • making it clear package managers in corepack and tools still use the npm registry by default

    I don't think we can guarantee that, and also I think package managers should be free to pick the package registry they want – I mean it is the case atm, Yarn and PNPM both default to the public npm registry, but future additions to Corepack might want to supply their own registry or whatever. IMO it's not reasonable to expect Corepack maintainers to audit the candidate to make any guarantees on what the software is doing.

  23. trivikr commented on Mar 23, 2025

    @trivikr
    Member

    On 2024-03-19, the Node.js TSC voted to stop distributing corepack in Node.js v25+

    I believe the experimental status, i.e. requirement to run corepack enable, needs to be maintained till Node.js v24 goes EoL, i.e. 2028-04-30

    Should this issue be closed as the date is 3+ years away?
    We can create a new issue to release stable version, i.e. 1.0.0, of corepack which removes the requirement of running corepack enable after or close to 2028-04-30

  24. MikeMcC399 commented on Mar 23, 2025

    @MikeMcC399
    Contributor

    @trivikr

    I don't believe that you can equate the experimental status with enabling Corepack by default. These were two different options in the vote.

    I would personally like to see the experimental status removed from Corepack so I can use it with good conscience in production.

    Alternatively there could be a statement issued, that this part of the experimental status does not apply to Corepack and the Node.js organization consents to Corepack's use in a production environment and supports its continued use through the bundled version in Node.js and as well as through the separately available module corepack from the npm registry.

    Image

    Having Corepack enabled by default would be disruptive for me in a hybrid environment of projects and npm modules configured for Corepack, and others which are not. I don't control most of these environment or have any say in how they are configured. I would not like Corepack enabled to be the default even though I am using Corepack in several selected places. It's fine for me to actively enable Corepack when I need it. You already suggested opening a separate issue about enabling Corepack by default. That would be a good way to separate the topics.

  25. aduh95 commented on Mar 23, 2025

    @aduh95
    Contributor

    FWIW if you install Corepack with npm i -g corepack, you don't need to run corepack enable, you get yarn, pnpm, and pnpx executables.

    My understanding was that corepack integration in Node.js distribution was experimental, not Corepack itself – although it still hasn't released a 1.0.0 version, so it falls under https://semver.org/#spec-item-4, and indeed not exactly stable (but fine to run on CI environments as long set a specific version or are happy to deal with potential breaking changes when they happen). I don't have a strong opinion regarding whether 1.0.0 should happen before or after Node.js 24.x EOL, or if we need a new issue for discussing that.

  26. MikeMcC399 commented on Mar 23, 2025

    @MikeMcC399
    Contributor

    @aduh95

    FWIW if you install Corepack with npm i -g corepack, you don't need to run corepack enable, you get yarn, pnpm, and pnpx executables.

    I suggest that this information should be added to the README. I don't think that it is obvious that npm i -g corepack is like executing corepack enable.

    For instance if I have Node.js 22.14.0 LTS with the bundled corepack@0.31.0 installed, Corepack is disabled. If I then install the same version on top, then Corepack is enabled:

    npm i -g corepack@0.31.0

    Edit: If Corepack is always disabled by default in the Node.js bundled distribution and enabled when installed separately as an npm global install that works for me.

    My understanding was that corepack integration in Node.js distribution was experimental, not Corepack itself – although it still hasn't released a 1.0.0 version, so it falls under https://semver.org/#spec-item-4, and indeed not exactly stable (but fine to run on CI environments as long set a specific version or are happy to deal with potential breaking changes when they happen).

    Thanks for this additional information! 👍🏻

  27. trivikr commented on Mar 23, 2025

    @trivikr
    Member

    As per recent responses, it appears that this issue can be closed as "not planned", as corepack is never going to leave experimental status in Node.js. It's instead going to be removed from Node.js in v25+ onwards.

    On 2024-03-19, the Node.js TSC voted to stop distributing corepack in Node.js v25+

    When corepack is installed globally by users using npm i -g corepack, maintainer confirmed that they don't need to run corepack enable. This can be documented in README. We need a separate issue for corepack 1.0 release.

  28. MikeMcC399 commented on Mar 23, 2025

    @MikeMcC399
    Contributor

    @trivikr

    When corepack is installed globally by users using npm i -g corepack, maintainer confirmed that they don't need to run corepack enable. This can be documented in README.

    Thanks for your summaries! I've opened

    to separately track the documentation issue. I hadn't noticed it before, because every time I installed Corepack with npm I was doing it to test out Corepack and I already had Corepack enabled!

  29. trivikr commented on Mar 23, 2025

    @trivikr
    Member

    I also created an issue to request corepack@1.0.0 release at #687

    This issue can be closed as "not planned", as it was wrt it's inclusion in Node.js distribution which is not going to happen.

  30. MikeMcC399 commented on Mar 23, 2025

    @MikeMcC399
    Contributor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions