#### Wednesday March 25th 2020 # Open RFC Deep Dive ### Attendees - Darcy Clarke (@darcyclarke) - Dominykas Blyžė (@dominykas) - Ruy Adorno (@ruyadorno) - Claudia Hernández (@claudiahdz) - Wes Todd (@wesleytodd) - Jordan Harband (@LJHarb) - Michael Dawson (@mhdawson1) - Isaac Z. Schlueter (@isaacs) - Emelia Smith (@thisismissem) ### Agenda 1. **Housekeeping** 1. Introduction(s) 1. Code of Conduct Acknowledgement 1. Outline Intentions & Desired Outcomes 1. Announcements 1. **PR**: [#92 RFC: Add staging workflow for CI and human interoperability](https://github.com/npm/rfcs/pull/92) 1. Scope (initial support) 1. Usecases 1. Implementation details ### Notes - There are a handful of different use cases, hence the need for a deep dive - Need for publishing from CI and having an extra step where a person can promote the publish to production - authentication/authorization should live server-side - How to push out to beta? pre-release semver tags vs staged publishes - Sharing inside my team vs outside my team - Currently implemented in `npm-pick-manifest`: deprioritize staged versions - There's a difference between using pre-release tags that are accesible to the public and a private staging environment that allows for testing and sharing with a limited amount of people - Draft private publish (ex. wordpress/tumblr/medium draft) only installable by the publishers, only installable by people who the publish was shared with - ability to install staged versions of specific deps that will make that dep and all it's deps pull the staged versions, instead of a single `staged` flag that applies to the whole tree ex `npm i -staged=tap@next, nyc@next` ex `npm install tap@15 --include-staged=tap` - should explicitly opt-in (should make it difficult to get by accident) - deleting things: + should staged versions be deleted automatically if they never get publish/promoted? in what time window? + when should staged versions be deleted? + can you have 2 same-numbered staged versions at the same time? - Should staged versions be added to the package.lock? + lockfile could include two URLs - the staged one and the non staged alternative - What if people depend on a package that is never promoted? - npm should provide a way of warning the user about the usage of staged versions in their install