|
| 1 | +- Start Date: 2016-05-01 |
| 2 | +- RFC PR: (leave this empty) |
| 3 | +- Nix Issue: (leave this empty) |
| 4 | + |
| 5 | +# Summary |
| 6 | +[summary]: #summary |
| 7 | + |
| 8 | +Implement a lightweight RFC process for the nix project. |
| 9 | + |
| 10 | +# Motivation |
| 11 | +[motivation]: #motivation |
| 12 | + |
| 13 | +Development on nix has been going well over the last few months. For the most |
| 14 | +part, adding APIs and working out how to adapt them to be more Rust-friendly |
| 15 | +has worked really well. However, there are some tougher design choices where |
| 16 | +there's been stagnation. Some examples: |
| 17 | + |
| 18 | +- string handling in nix (https://github.com/nix-rust/nix/issues/221) |
| 19 | +- the future of nix, including crate organization |
| 20 | + (https://github.com/nix-rust/nix/issues/190) |
| 21 | + |
| 22 | +The RFC process gives a place to discuss and document major design |
| 23 | +decisions. This provides readers with both the final decision in a clean form |
| 24 | +and the discussion that lead up to it. |
| 25 | + |
| 26 | +We have already created a [conventions document][conventions] to help newcomers |
| 27 | +to the library understand how nix approaches its APIs. Larger additions to that |
| 28 | +document would also go through the RFC process. |
| 29 | + |
| 30 | +[conventions]: https://github.com/nix-rust/nix/blob/master/CONVENTIONS.md |
| 31 | + |
| 32 | + |
| 33 | +# Detailed design |
| 34 | +[design]: #detailed-design |
| 35 | + |
| 36 | +*The contents of this section will make up the bulk of the RFC repository's |
| 37 | +README after this RFC is accepted.* |
| 38 | + |
| 39 | +The nix RFC process is modelled after [the one Rust uses][rust-rfc-process] but |
| 40 | +adjusted to be lighter weight. Credit for the lightness also goes to the |
| 41 | +[intermezzOS project's RFC process][intermezzos-rfcs]. |
| 42 | + |
| 43 | +[rust-rfc-process]: https://github.com/rust-lang/rfcs#what-the-process-is |
| 44 | +[intermezzos-rfcs]: https://github.com/intermezzOS/rfcs |
| 45 | + |
| 46 | +To initially discuss a topic, open an issue on [the RFC repo][nix-rfcs]. We’ll |
| 47 | +discuss things in those issues. |
| 48 | + |
| 49 | +[nix-rfcs]: https://github.com/nix-rust/rfcs |
| 50 | + |
| 51 | +When a proposal is ready to be made, submit a pull request adding a new file in |
| 52 | +the `text` directory. More detailed steps: |
| 53 | + - Fork the RFC repo http://github.com/nix-rust/rfcs |
| 54 | + - Copy `0000-template.md` to `text/0000-my-rfc-name.md` (where `my-rfc-name` |
| 55 | + is descriptive. don't assign an RFC number yet). |
| 56 | + - Fill in the RFC, and open the pull request |
| 57 | + |
| 58 | +We’ll discuss things in the PR, and then either merge or not. The RFC text will |
| 59 | +likely change as we discuss it; those changes should be added to the PR as |
| 60 | +additional commits without squashing or rebasing to keep a record of the them. |
| 61 | + |
| 62 | + |
| 63 | +# Drawbacks |
| 64 | +[drawbacks]: #drawbacks |
| 65 | + |
| 66 | +It adds some process where there was none. |
| 67 | + |
| 68 | +# Alternatives |
| 69 | +[alternatives]: #alternatives |
| 70 | + |
| 71 | +## No process |
| 72 | + |
| 73 | +We could continue as we have. This has already resulted in some stagnant areas |
| 74 | +where we need to make a decision to move forward. |
| 75 | + |
| 76 | +## More process |
| 77 | + |
| 78 | +We could instead opt for a heavier process. It is most likely not warranted for |
| 79 | +the size of the project. |
| 80 | + |
| 81 | +# Unresolved questions |
| 82 | +[unresolved]: #unresolved-questions |
| 83 | + |
| 84 | +How do we accept an RFC? Consensus among maintainers? A quorum of |
| 85 | +maintainers? If so, how many? Do we signal it in comments on the PR? |
0 commit comments