Skip to content

Commit 063ca94

Browse files
committed
feat: rewrite README to describe new rfc process
1 parent b1a427b commit 063ca94

File tree

3 files changed

+69
-198
lines changed

3 files changed

+69
-198
lines changed

.github/ISSUE_TEMPLATE/rfc.md

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
name: RFC
3+
about: Request For Comment
4+
title: '[RFC] <title>'
5+
assignees:
6+
labels:
7+
---
8+
9+
<!--
10+
# Before Opening Please...
11+
- [ ] Search for an existing/duplicate RFC which might be relevant to your RFC
12+
-->
13+
## Motivation ("The Why")
14+
<!-- Examples
15+
Let us know why or how you thought of this idea. This should describe exactly
16+
what problem your suggestion is meant to solve.
17+
-->
18+
19+
### Example Use Cases
20+
<!-- Examples
21+
An example or two of how your suggestion can be used.
22+
-->
23+
24+
### Current Behaviour / Workarounds
25+
<!-- Examples
26+
Is there a way to achieve your suggestion today? How?
27+
-->
28+
29+
#### Desired Behaviour
30+
<!-- Examples
31+
How would you like things to generally work to cover your situation/context?
32+
-->
33+
34+
### References
35+
<!-- Examples
36+
* Related/Reference to #0
37+
* Depends on #0
38+
* Blocked by #0
39+
-->
40+
* n/a

.github/ISSUE_TEMPLATE/rrfc.md

-40
This file was deleted.

README.md

+29-158
Original file line numberDiff line numberDiff line change
@@ -1,186 +1,57 @@
1-
# RFC Process
1+
# The npm CLI RFC Process
22

3-
This document describes the RFC process for the [npm
4-
CLI](https://github.com/npm/cli), and provides a way for the [npm CLI
5-
team](https://github.com/orgs/npm/teams/cli-team) and the wider community
6-
to have discussions about the features and direction of the package
7-
manager.
3+
This document describes the RFC process for the npm CLI. The intent of this process is to provide the [npm CLI team](https://github.com/orgs/npm/teams/cli-team) as well as the broader npm team to gather feedback from our community, as well as providing a means for the community to have discussions about features and the direction of the npm package manager.
84

95
## What is an RFC?
106

11-
The name is a reference to the **IETF's Request For Comments** process, and
12-
involves a document or series of documents which are drafted, reviewed, and
13-
eventually ratified (approved) by the npm team through discussion
14-
among those interested, both within and outside of the npm team.
7+
The name is a reference to the **IETF's Request For Comments** process. An RFC can propose any change to the npm CLI. In some cases an RFC may also propose changes to the public npm registry or other services, however changes outside of the npm CLI itself will require more time and engagement with the broader npm team in order to be ratified.
158

16-
An RFC can propose any change to the npm CLI itself, and may include npm
17-
registry changes meant to support that CLI change.
9+
The npm team's roadmap is **not** determined by the RFC process. Approval of an RFC **does not** guarantee its implementation, only that if the work were to be completed to the standards upheld by the npm team the implementation will be accepted. If you open an RFC you should be prepared to carry it through implementation yourself. The npm CLI team maintains a presence in the [Open JS Foundation Slack](https://openjsf.org/collaboration/)'s `#npm` channel to assist community members through this process.
1810

19-
## Rough Consensus
11+
## Review Process
2012

21-
The development of new features within the npm CLI follows a [Rough
22-
Consensus](https://tools.ietf.org/html/rfc7282) model, similar to the IETF.
13+
After an RFC has been opened, the npm CLI team is responsible for providing an initial review within 2 weeks.
2314

24-
The following points are intended to help you understand and participate in
25-
this process productively.
15+
After this inital review the RFC will be added to the agenda of an upcoming Open Office Hours call. The author of the RFC will be notified when their RFC is scheduled for discussion, and is encouraged to join this call. Their participation in the call is not mandatory, and if they are unable to attend feedback will be gathered on their behalf and shared as comments to the RFC.
2616

27-
### Scope of This Process
17+
### Approval and Rough Consensus
2818

29-
This RFC process is limited to issues concerning the [npm
30-
cli](https://github.com/npm/cli) and the web services that support it.
19+
The approval of RFCs follows a [Rough Consensus](https://tools.ietf.org/html/rfc7282) model, similar to the IETF.
3120

32-
Of course we operate within a broad community ecosystem, and will often
33-
choose to implement features in a way that is compatible with other package
34-
management tools in the JavaScript community. However, if a given proposal
35-
cannot or will not be implemented by other package managers, that is not in
36-
itself reason enough to abandon a proposal. We are here to make _npm_
37-
better.
21+
Feedback is gathered through comments in the RFC issue as well as real time conversation during Open Office Hours. The purpose of this feedback is to provide a means for the community to raise objections to proposals. Each objection will be discussed and considered. It is not a goal for everyone to agree on all aspects of an RFC. Objections do not prevent an RFC from being ratified, but they must be given a fair hearing until an understanding is reached and an informed decision can be made.
3822

39-
### Full Consensus is Not The Goal
23+
When a proposal no longer has **new** objections it has completed the review process and may move into implementation.
4024

41-
It is not our intention, or within our ability, to accomodate every
42-
possible objection to any given proposal. It _is_ our intention to surface
43-
all such objections, and make an informed decision as to whether the
44-
objection can be addressed, should be accepted, or is reason enough to
45-
abandon the proposal entirely.
25+
While community feedback is an important part of our process, the npm CLI team holds the final authority for approving or rejecting an RFC.
4626

47-
We encourage you to participate in these discussions, and to feel free and
48-
comfortable bringing up any objections that you have or can imagine (even
49-
if you don't entirely agree with the objection!)
27+
### Reasons an RFC could be rejected
5028

51-
Our job together then, is to ensure that the objection is given a fair
52-
hearing, and is fully understood. Then (either in the pull request
53-
comments, or in our OpenRFC meetings), we will decide whether the proposal
54-
should be modified in light of the objection, or the objection should be
55-
ignored, or if the proposal should be abandoned.
29+
The npm team may choose to reject an RFC and close it. Here is a non-exhaustive list of reasons this could happen:
5630

57-
If an objection is brought up a second time without any relevant changes,
58-
after having already been addressed, then it will be ignored. Only _new_
59-
objections merit new or continued consideration.
31+
1. The proposed feature is in direct conflict with existing features or is generally undesirable
32+
2. There is no commitment to completing the work
33+
3. Objections are raised that are deemed to be relevant and cannot be reasonably addressed
34+
4. The feature is prohibitively difficult to implement
35+
5. The feature is better addressed by an alternate proposal
36+
6. The scope of changes extends beyond the reach of the npm CLI
37+
7. The feature does not align with the future development direction of the npm CLI
38+
8. The implementation has stalled with no clear path forward
6039

61-
### Iterate on Building Blocks
40+
## Implementation and Communication
6241

63-
Frequently a feature will be proposed or even fully specified in an RFC,
64-
and upon analysis, the feedback might be to cut it into separate RFCs, or
65-
implement another proposal first.
42+
After an RFC is approved it will remain open as the primary means of communicating about the feature work. After the implementation is complete the npm team will review the changes made for code standards as well as ensuring that the implementation matches what was described in the RFC.
6643

67-
This can be frustrating at times, but it ensures that we are taking care
68-
to improve npm iteratively, with thorough consideration of each step along
69-
the way.
44+
### Modifying an RFC after approval
7045

71-
### Implementation as Exploration
72-
73-
Typically, RFCs are discussed and ratified prior to implementation.
74-
However, this is not always the case! Occasionally, we will develop a
75-
feature then write an RFC after the fact to describe and discuss it prior
76-
to merging into the latest npm release.
77-
78-
Very often, an RFC will be difficult to examine without running code. In
79-
those cases, we may opt to develop a proof of concept (or even fully
80-
production-ready implementation) of an RFC in process, in order to test it
81-
in reality before accepting it.
82-
83-
Even when an RFC _is_ accepted, during implementation it is common to note
84-
additional objections, features, or decisions that need to be made. In
85-
these cases, we may propose an amendment to a previously ratified RFC.
86-
87-
### Final Authority
88-
89-
The ultimate authority as to the ratification of any given RFC proposal is
90-
the npm CLI team, as they have ultimate authority over the direction and
91-
development of the actual thing these RFCs are about.
92-
93-
## How do I create an RFC?
94-
95-
* Fork https://github.com/npm/rfcs
96-
* Copy `accepted/0000-template.md` into `accepted/0000-your-rfc-name.md`
97-
* Fill in and edit the template with your proposal
98-
* Submit a PR to the `npm/rfcs` repo
99-
100-
## How does review work?
101-
102-
The official place for discussion for a proposed RFC is its pull request.
103-
Anyone, both npm collaborators and non-collaborators, may participate in the
104-
discussion and ask questions and provide (constructive) feedback. Keep in mind
105-
that only npm collaborators are able to ratify the RFC itself, even if other
106-
users can comment.
107-
108-
All discussions surrounding an RFC are covered by the [npm Code of
109-
Conduct](https://www.npmjs.com/policies/conduct). Please keep conversations
110-
constructive, civil, and low-temperature. If tensions flare during discussion,
111-
the npm team may, at its own discretion, moderate, remove, or
112-
edit posts, as well as locking the discussion on that PR or the entire RFCs
113-
repository.
114-
115-
## How do RFCs get ratified?
116-
117-
An RFC is ratified when there is consensus among npm collaborators that it
118-
should be accepted, and all objections have been considered. At that
119-
point, it will be merged into the `latest` branch, and will be considered
120-
"ratified".
121-
122-
It is common for an RFC to require multiple rounds of editing to address
123-
concerns brought up in the discussion.
124-
125-
The RFC may be rejected altogether at the discretion of npm collaborators.
126-
Reasons for this may include, but are not limited to:
127-
128-
- Objections are raised that are deemed to be relevant to the npm CLI, and
129-
cannot be reasonably addressed within the RFC.
130-
- The feature conflicts with another intended feature, or otherwise does
131-
not align with the future development direction of the npm CLI.
132-
- The feature described is prohibitively difficult to implement.
133-
- The feature described is better addressed by an alternate proposal.
134-
135-
## What happens after ratification?
136-
137-
Once an RFC is ratified, the npm team agrees to merge a corresponding PR
138-
implementing the described changes, provided it passes a standard code
139-
review by the maintainers. It is **not** a guarantee of implementation, nor
140-
does it obligate the npm team itself to implement the requested changes.
141-
142-
Actual integration into the CLI may also be deferred to a later date, or a
143-
later semver-major CLI release, at the npm collaborators' discretion. All
144-
the RFC does is communicate the team's intention to work in a given
145-
direction.
146-
147-
Actual development work on the npm CLI will be ordered based on priorities
148-
and resources that are well outside the scope of this RFC process.
149-
150-
### Implementation
151-
152-
When the changes described in an RFC have been implemented and merged into the
153-
relevant repository (and thus, due to be released), the corresponding RFC will
154-
be moved from `accepted/` to `implemented/`.
155-
156-
If you'd like to implement an accepted RFC, please make a PR in the
157-
appropriate repo and mention the RFC in the PR. Feel free to do this even
158-
for work-in-progress code. The npm CLI team will provide guidance to
159-
ensure that the patch meets our standards and addresses the proposed RFC.
160-
161-
### Withdrawal
162-
163-
From time to time npm collaborators will review RFCs awaiting
164-
implementation to ensure their accuracy and relevance. In cases where a
165-
previously ratified RFC is deemed to no longer be a viable candidate for
166-
implementation, an [**amendment section**](withdrawn/0000-template.md) will
167-
be added **to the top** of the document outlining the reason for repeal and
168-
subsequently moved to the `withdrawn/` section of this repository.
169-
170-
## How do I change an RFC after ratification?
171-
172-
RFCs themselves are typically only modified after ratification to address
173-
unanswered questions that may require implementation exploration.
174-
175-
More often, if an RFC has been previously ratified, and either cannot be
176-
implemented as described, or should be superceded by another proposal, it
177-
will be withdrawn as part of another RFC submitted through this process.
46+
It is possible that an RFC will require changes after it has been approved and implementation has begun. When this happens, the npm CLI team will use their discretion to determine if the RFC should be added back to an Open Office Hours agenda or to approve or reject the change, or the entire RFC, directly.
17847

17948
---
18049

18150
## Open Office Hours
18251

183-
In our ongoing efforts to better listen to & collaborate with the community, we've started an open office hours call that helps to move conversations on RFCs forward as well as help answer broader community questions. It is notably a call without an agenda but provides a synchronous forum to engage with the community beyond the discussion/comment threads in issues & PRs.
52+
In our ongoing efforts to better listen to & collaborate with the community, we've started an open office hours call that helps to move conversations on RFCs forward as well as help answer broader community questions. It is meant to provide a synchronous forum to engage with the community beyond the discussion/comment threads in issues & PRs.
53+
54+
The first half of Open Office Hours is meant to discuss RFCs that are on the agenda. The second half is an open conversation allowing our community to ask questions, share what they're working on, talk about ideas or even just to say hello.
18455

18556
### When?
18657

0 commit comments

Comments
 (0)