#### Meeting from: November 18th, 2020
# Open RFC Meeting (npm)
### Attendees
- Darcy Clarke (@darcyclarke)
- Christian Siebmanns (@christian24)
- Ruy Adorno (@ruyadorno)
- Isaac Z. Schlueter (@isaacs)
- Jordan Harband (@ljharb)
- Nathan LaFreniere (@nlf)
### Agenda
1. **Housekeeping**
1. Introduction(s)
1. [Code of Conduct Acknowledgement](https://www.npmjs.com/policies/conduct)
1. Announcements
1. **Issue**: [#287 [RRFC] Add nohoist option for workspaces](https://github.com/npm/rfcs/issues/287) - @socialwyze-franklin
1. **PR**: [#279 RFC for --default-command](https://github.com/npm/rfcs/pull/279) - @isaacs
1. **Issue**: [#275 [RRFC] `registry:<url>:<name>[@<version-range>]` dependency specifier](https://github.com/npm/rfcs/issues/275) - @isaacs
1. **PR**: [#273 RFC: npm workspaces - Config management](https://github.com/npm/rfcs/pull/273) - @ruyadorno
1. **PR**: [#272 RFC: add preferDev field to package.json](https://github.com/npm/rfcs/pull/272) - @Ginden
1. **PR**: [#217 RFC: add registry per package per organisation](https://github.com/npm/rfcs/pull/217) - @baloran
### Notes
#### Ideas on how to tirage RFC/issues & how they'll get closed (meta?)
- @ljharb: I'd love to close some issues, don't wanna upset people
- @isaacs: let's write a wiki page, add a link to the issue templates so folks see it when posting their issue and aren't surprised.
- can discuss/bikeshed it here once we have a draft, since this is our community discussion channel
- (thumbs up from @ruyadorno and @ljharb)
#### **Issue**: [#287 [RRFC] Add nohoist option for workspaces](https://github.com/npm/rfcs/issues/287) - @socialwyze-franklin
- @ljharb: noHoist behavior should have been the default but that ship has sailed
- @ljharb: there's also the problem of workspaces accessing unlisted dependencies
- @isaacs: but hoisting is also problematic in order to handle peer dependencies
- @darcyclarke: would prefer a global config or something to be able to define an install strategy
- @ljharb: (describes enzyme example) workspaces and peer dependencies should be placed in a different place other than `node_modules` in order to avoid the risk of implicitely sharing dependencies
- @isaacs: there are differente scenarios such as a workspace-setup in which each workspace don't want or don't need to share peer depedencies or whatsoever since they're maybe diff websites or apps
- @christian24: concerns about unlisted deps usage
- @darcyclarke: there seems to be consensus that this is not a solution we would be implementing
- @ruyadorno: there's consensus that the `noHoist` API as-is is not something we would like to pursuit but from the problems described by @ljharb it looks like there are some real problems to be solved here
- @ruyadorno: going back to @ljharb idea of a separate place to put peer deps and workspaces, we do have `virtual-root` in **Arborist**
- @isaacs: whatever solution we end up implementing for workspaces we might as well solve it for all the other scenarios
- @ljharb: I care less about unlisted deps in other contexts other than workspaces where it can be really painful to users
- @darcyclarke: Let's timebox this discussions
- @isaacs: We can have a deep dive in the unlisted deps / workspaces discussion
#### **PR**: [#279 RFC for --default-command](https://github.com/npm/rfcs/pull/279) - @isaacs
- @isaacs: We frequently get asked from users to have `run-scripts` be running as the default command, e.g: `npm build` should run `npm run-script build` instead of `npm help build`
- @isaacs: `npm help` as the default command is nice but there are maybe not reasons to not be able to change that default command so users can switch it to `npm run-script` instead or `npm exec`
- @isaacs: Some arguments against it:
- 99% of users just want `run-script` to be the default anyways
- user-shared commands can now break
- @christian24: Would welcome having `run-script` as the new default rather than having it as a configuration that most folks won't even know about
- @ljharb: It sounds like the kind of thing users _think_ are super shinny and nice to have bug it's similar to webitest having usernames as top-level urls and then they can't add any new top-level url since it breaks existing users. It's an attractive nuisance.
- @darcyclarke: Maybe we can use a new bin, like `npr` or something? Maybe there are userland packages sitting in one of these bin names?
- @ruyadorno: Maybe it can just live in userland modules like `ntl`
#### 1. **Issue**: [#275 [RRFC] `registry:<url>:<name>[@<version-range>]` dependency specifier](https://github.com/npm/rfcs/issues/275) - @isaacs
- @isaacs: Take the behavior we currently have for alias specifier `name@npm:someothername` and expand that to allow for defining custom registries, e.g: `registry:registry.npmjs.org:express@latest`
- @isaacs: There are interesting usages and enables a lot more workflows such as [that per-scope-per-package-registry problem we discussed before in a previous RFC](https://github.com/npm/rfcs/pull/217)
- @christian24: Like the idea but could it also support random ways to store packages such as pointing the registry to a FTP folder?
- @isaacs: Not really since the registry has to be a valid npm registry with the right endpoints