Skip to content

Commit d6231fc

Browse files
zimbatmDmitry Bogatov
authored and
Dmitry Bogatov
committed
Implement RFC 0001 (NixOS#2)
Implement RFC 0001
1 parent 3cce2e7 commit d6231fc

File tree

2 files changed

+121
-6
lines changed

2 files changed

+121
-6
lines changed

0000-template.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
feature: (fill me in with a unique ident, my_awesome_feature)
3+
start-date: (fill me in with today's date, YYYY-MM-DD)
4+
author: (name of the main author)
5+
co-authors: (find a buddy later to help our with the RFC)
6+
related-issues: (will contain links to implementation PRs)
7+
---
8+
9+
# Summary
10+
[summary]: #summary
11+
12+
One paragraph explanation of the feature.
13+
14+
# Motivation
15+
[motivation]: #motivation
16+
17+
Why are we doing this? What use cases does it support? What is the expected
18+
outcome?
19+
20+
# Detailed design
21+
[design]: #detailed-design
22+
23+
This is the bulk of the RFC. Explain the design in enough detail for somebody
24+
familiar with the ecosystem to understand, and implement. This should get
25+
into specifics and corner-cases, and include examples of how the feature is
26+
used.
27+
28+
# Drawbacks
29+
[drawbacks]: #drawbacks
30+
31+
Why should we *not* do this?
32+
33+
# Alternatives
34+
[alternatives]: #alternatives
35+
36+
What other designs have been considered? What is the impact of not doing this?
37+
38+
# Unresolved questions
39+
[unresolved]: #unresolved-questions
40+
41+
What parts of the design are still TBD or unknowns?

README.md

Lines changed: 80 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,88 @@ implemented and reviewed via the normal GitHub pull request workflow.
66
Some changes though are "substantial", and we ask that these be put through a
77
bit of a design process and produce a consensus among the Nix community.
88

9-
The "RFC" (request for comments) process is intended to provide a consistent
10-
and controlled path for new features to enter the language and standard
11-
libraries, so that all stakeholders can be confident about the direction the
12-
ecosystem is evolving in.
9+
This is the bulk of the RFC. Explain the design in enough detail for somebody
10+
familiar with the ecosystem to understand, and implement. This should get
11+
into specifics and corner-cases, and include examples of how the feature is
12+
used.
1313

14-
## TODO
14+
## When this process is followed
1515

16-
The first RFC will define the process around RFCs.
16+
This process is followed when one intends to make "substantial" changes to the
17+
Nix ecosystem. What constitutes a "substantial" change is evolving based on
18+
community norms, but may include the following.
19+
20+
* Any semantic or syntactic change to the language that is not a bugfix
21+
* Removing language features
22+
* Big restructuring of nixpkgs
23+
* Expansions to the scope of nixpkgs (new arch, major subprojects, ...)
24+
* Introduction of new interfaces or functions
25+
26+
Certain changes do not require an RFC:
27+
28+
* Adding, updating and removing packages in nixpkgs
29+
* Fixing security updates and bugs that don't break interfaces
30+
31+
Pull requests that contain any of the afore mentioned 'substantial' changes may be closed if there is no RFC connected to the proposed changes.
32+
33+
## Description of the process
34+
35+
In short, to get a major feature added to the Nix ecosystem, one should first
36+
go through the RFC process in order to improve the likelyhood of inclusion.
37+
Here are roughly the steps that one would take:
38+
39+
* Fork the RFC repo https://github.com/NixOS/rfcs
40+
* Copy `0000-template.md` to `rfcs/0000-my-feature.md` (where 'my-feature' is
41+
descriptive. don't assign an RFC number yet).
42+
* Fill in the RFC
43+
* Submit a pull request. Rename the rfcs with the PR number. (eg: PR #123 would
44+
be `rfcs/0123-my-feature.md`)
45+
46+
At this point, the person submitting the RFC should find at least one "co-author"
47+
that will help them bring the RFC to completion. The goal is to improve the
48+
chances that the RFC is both desired and likely to be implemented.
49+
50+
Once the author is happy with the state of the RFC, they should seek for
51+
wider community review by stating the readyness of the work. Advertisement on
52+
the mailing-list and IRC is an acceptable way of doing that.
53+
54+
After a number of rounds of review the discussion should settle and a general
55+
consensus should emerge. This bit is left intentionally vague and should be
56+
refined in the future. We don't have a technical commitee so controversial
57+
changes will be rejected by default.
58+
59+
If a RFC is accepted then authors may implement it and submit the feature as a
60+
pull request to the Nix or nixpkgs repo. An 'accepted' RFC is not a rubber
61+
stamp, and in particular still does not mean the feature will ultimately be
62+
merged; it does mean that in principle all the major stakeholders have agreed
63+
to the feature and are amenable to merging it.
64+
65+
Whoever merges the RFC should do the following:
66+
67+
* Fill in the remaining metadata in the RFC header, including links for the
68+
original pull request(s) and the newly created issue.
69+
* Commit everything.
70+
71+
If a RFC is rejected, whoever merges the RFC should do the following:
72+
* Move the rfc to the rejected folder
73+
* Fill in the remaining metadata in the RFC header, including links for the
74+
original pull request(s) and the newly created issue.
75+
* Include a summary reason for the rejection
76+
* Commit everything
77+
78+
## Role of the "co-author"
79+
80+
The goal for assigning a "co-author" is to help move the RFC along.
81+
82+
The co-author should:
83+
* be available for discussion with the main author
84+
* respond to inquiries in a timely manner
85+
* help with fixing minor issues like typos so community discussion can stay
86+
on design issues
87+
88+
The co-author doesn't necessarily have to agree with all the points of the RFC
89+
but should generally be satisfied that the proposed additions are a good thing
90+
for the community.
1791

1892
## License
1993

0 commit comments

Comments
 (0)