aboutsummaryrefslogtreecommitdiffstats
path: root/rfcs/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'rfcs/README.md')
-rw-r--r--rfcs/README.md61
1 files changed, 61 insertions, 0 deletions
diff --git a/rfcs/README.md b/rfcs/README.md
new file mode 100644
index 0000000..0b72646
--- /dev/null
+++ b/rfcs/README.md
@@ -0,0 +1,61 @@
+
+This folder (part of the `dat-docs` repository at
+https://github.com/datproject/dat-docs) contains a series of proposed (and
+eventually accepted) "Requests for Comment" (RFC) documents for the Dat
+Protocol and ecosystem.
+
+For now this process is as simple and informal; as the number of dat developers
+and users grows, it may become more formal. Inspirations for this process
+include:
+
+- [Bittorrent Enhancement Proposals (BEP)](http://bittorrent.org/beps/bep_0001.html)
+- [Rust RFC Process](https://github.com/rust-lang/rfcs)
+- [Python Enhancement Proposal](https://www.python.org/dev/peps/pep-0001/)
+
+
+## The Process
+
+TL;DR: write up an RFC
+
+* Fork this git repository
+* Copy `rfcs/template.md` to `text/0000-my-proposal.md` (don't chose the "next"
+ number, use zero; `my-proposal` should be a stub identifier for the proposal)
+* Fill in the RFC template. The more details you can fill in at the begining,
+ the more feedback reviewers can leave; on the other hand, the sooner you put
+ your ideas down in writing, the faster others can point out issues or related
+ efforts.
+* Submit a github pull request for discussion. The proposal will likely be
+ ammended based on review and comments. The PR will be tagged to indicate
+ RFC type and status.
+* Build consensus. This part of the process is not bounded in time, and will
+ likely involve both discussion on the PR comment thread and elsewhere (IRC,
+ etc).
+* Consider drafting or prototyping an implementation to demonstrate your
+ proposal and work out all the details. This step isn't necessary, however: a
+ proposer does not need to be a developer.
+* If consensus seems to have emerged (for or against the proposal), a team
+ member will assign an RFC number, update the status, and merge the PR.
+* Small tweaks (grammar, clarifications) to a merged RFC can take place as
+ regular github PRs; revisiting or significantly revising should take place as
+ a new RFC.
+
+RFCs should have a type:
+
+* **Standard** for technical changes to the protocol, on-disk formats, or
+ public APIs.
+* **Process** for formalizing community processes or other (technical or
+ non-technical) decisions. For example, a security vulnerability reporting
+ policy, a process for handling conflicts of interest, or procedures for
+ mentoring new developers.
+
+The status of an RFC can be:
+
+* **Draft**: writen up, open PR for discussion
+* **Active**: PR accepted; adopted or intended for implementation in mainline
+ libraries and clients as appropriate
+* **Closed**: PR was closed without merging; either consensus was against, a
+ decision was postponed, or the authors withdrew their proposal.
+* **Superseded**: a formerly "active" RFC has been made obsolete by a new
+ active RFC; the new RFC should specify specific old RFCs that it would
+ supersede.
+