-
Notifications
You must be signed in to change notification settings - Fork 137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
updated nep-0001 #350
updated nep-0001 #350
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,9 @@ | ||
--- | ||
NEP: 1 | ||
Title: NEP Purpose and Guidelines | ||
Author: Jay Logelin <[email protected]> | ||
DiscussionsTo: https://github.com/near/NEPs/pull/333 | ||
Author: Jay Logelin <[email protected]>, Maksym Zavershynskyi <[email protected]>, Aleksey Kladov | ||
<[email protected]> | ||
DiscussionsTo: https://github.com/near/NEPs/pull/333, https://gov.near.org/t/quality-control-for-protocol-api-changes/1941 | ||
Status: Living | ||
Type: Process | ||
Created: 03-Mar-2022 | ||
|
@@ -57,49 +58,48 @@ There are three kinds of NEP: | |
changes to the tools or environment used in Near development. | ||
Any meta-NEP is also considered a Process NEP. | ||
|
||
## NEP Workflow | ||
## The Proposal Process | ||
One of the primary goals of the NEP process is to prevent proposals being stuck in a limbo state of always being in progress, therefore NEP participants shall commit to always either accept or reject a `Draft` proposal. | ||
|
||
### Start with an idea for Near | ||
It can be rejected for the following reasons: | ||
|
||
The NEP process begins with a new idea for the Near ecosystem. It is | ||
recommended that a single NEP contain a single key proposal or new | ||
idea. | ||
* No-op proposal. It does not improve any of our values or velocity | ||
|
||
Each NEP must have a torch-bearer: someone who writes the NEP using the style | ||
and format described below, shepherds the discussions in the appropriate | ||
forums, and attempts to build community consensus around the idea. This NEP Author | ||
should first attempt to ascertain whether the idea is | ||
NEP-able. | ||
* Unjustifiable trade-offs. It makes the trade-offs in technological values or velocity that are not justifiable. Note, that if proposal is too difficult to implement or it adds too much architectural complexity it can be rejected as impeding future velocity too much. | ||
|
||
Vetting an idea publicly before going as far as writing an NEP is meant | ||
to save the potential author time. Many ideas have been brought | ||
forward for changing Near that have been rejected for various | ||
reasons. Asking the Near community first if an idea is original | ||
helps prevent too much time being spent on something that is | ||
guaranteed to be rejected based on prior discussions. It also helps to make sure | ||
the idea is applicable to the entire community and not just the author. | ||
Just because an idea sounds good to the author does not | ||
mean it will work for most people in most areas where Near is used. | ||
* Not ready. The proposal does not satisfy the required format, e.g. it does not explain all standard scenarios. Also, we don’t want the proposal discussion the be the place where the process is created, and so the authors and the proponents should come with a sufficiently ready proposal and do not expect to iterate on it with the community. They can however iterate on the proposal with the community in other open forums outside the official proposal process. Therefore, if proposal is submitted but community keeps finding gaps in the proposal, e.g. like reasonable alternatives, adversarial angles or gaps in the design, then even if author and proponents continue explaining them, after some time proposal runs out of time and is rejected. | ||
|
||
In general the process is: | ||
* Duplicate. A similar proposal has been already submitted and the author did not explain the difference sufficiently. | ||
|
||
* Sign up for the [governance site](https://gov.near.org/) and make a post to the | ||
appropriate section. For instance, during the ideation phase of a standard, one might | ||
start a new conversation in the | ||
[Development » Standards section](https://gov.near.org/c/dev/standards/29). | ||
The other suggested category in the governance forum is the | ||
[Development » Proposals section](https://gov.near.org/c/dev/proposals/68). | ||
* Spam. Someone is trying to get their proposal through by spamming; | ||
The time-line of the proposal is the following: | ||
|
||
* The forum has comment threading which allows the community and NEAR Collective | ||
to ideate, ask questions, wrestle with approaches, etc. If more immediate responses | ||
are desired, consider bringing the conversation [to Discord](https://near.chat). | ||
### Initial phase (1 week at most) | ||
|
||
Once the torch-bearer has asked the Near community as to whether an | ||
idea has any chance of acceptance, a draft NEP should be presented to | ||
the appropriate venue mentioned above. This gives the author a chance to flesh out the draft | ||
NEP to make properly formatted, of high quality, and to address | ||
initial concerns about the proposal. | ||
1.1. The process is initiated by an author submitting it in `Draft` status. | ||
|
||
1.2. The proposal is examined by the admins. If it deviates from the format the proposal's status is set to `Rejected` and allowed to be resubmitted in 1 month. | ||
|
||
1.3. Admins invite SMEs (some SMEs recognized by admins might join voluntarily) and representatives from the affected projects. | ||
|
||
1.4. (Optional) The stakeholders hire the auditors. | ||
|
||
1.5. Admins update the status to `Review` to indicate readiness for the next phase. | ||
|
||
### Discussion phase (2 months at most) | ||
|
||
2.1. SMEs and affected projects weigh-in. | ||
|
||
2.2. Auditors respond with their findings. | ||
|
||
2.3. Other community members join the discussion. | ||
|
||
2.4. Once the proposal is at the point where it is exhaustive, non-ambiguous, highly-detailed, and all findings are addressed and incorporated into the proposal, the admins make a decision on accepting or rejecting it. | ||
|
||
2.5. If proposal runs out of time it is rejected. | ||
|
||
### Implementation phase | ||
3.1. Admins invite representatives from the affected projects and the implementers to discuss the timeline of rolling out the feature. Once the timeline is agreed on, the remaining process is delegated to the implementers. | ||
|
||
## Submitting an NEP | ||
|
||
|
@@ -136,7 +136,7 @@ The standard NEP workflow is: | |
If the NEP isn't ready for approval, an editor will send it back to | ||
the author for revision, with specific instructions in the pull request. | ||
|
||
Once the review process is complete, and the NEP editors approve it (note that | ||
Once the review process is complete, and the NEP editors approve or reject it (note that | ||
this is *not* the same as accepting your NEP!), they will squash commit your | ||
pull request onto main. | ||
|
||
|
@@ -161,15 +161,15 @@ development practices and other details. The precise process followed in these | |
cases will depend on the nature and purpose of the NEP being updated. In general, | ||
Standards track NEP's are no longer modified after they have reached the Final state. | ||
|
||
## NEP Process State | ||
## NEP Process States | ||
|
||
The following is the standardization process for all NEPs in all tracks: | ||
|
||
![NEP Status Flow Diagram](assets/nep-0001/NEP-flow.png) | ||
|
||
**Idea** - An idea that is pre-draft. This is not tracked within the NEP Repository. | ||
|
||
**Draft** - The first formally tracked stage of an NEP in development. An NEP is merged by an NEP Editor into the NEP repository when properly formatted. | ||
**Draft** - The first formally tracked stage of an NEP in development. An NEP is merged by an NEP Editor into the NEP repository when properly formatted and vetted, see `Initial Phase` in the previous section. | ||
|
||
**Review** - An NEP Author marks an NEP as ready for and requesting Peer Review. | ||
|
||
|
@@ -346,31 +346,55 @@ pull request. Fork the `NEP repository`, make your ownership modification, | |
and submit a pull request. You should mention both the original author and | ||
``@near/nep-editors`` in a comment on the pull request. | ||
|
||
## NEP Editors | ||
## Roles, Ownership, and Accountability | ||
The overall NEP process should balance democracy and inclusivity, with accountability. This means the proposal needs to have owners – people who carry the burden of proving “beyond reasonable doubt” that the proposed design does what it claims to do and that it does not negatively affect our technological values or impede future velocity. The owners of the proposal are the author and its potential proponents. It is their responsibility to prove that the proposal works, and it is not responsibility of others to prove that it does not work. The default decision for any protocol change should be a No. | ||
|
||
There are defined administators who will decide when the proposal is accepted or rejected. In the long run, this will be a council elected by the stakeholders, which most likely will be only the validators and people that validators consider as an authority or experts, since validators have an ultimate control of deciding which protocol version to run on their machines. In the short term, process admins will be a preselected group of people. Admins will also be moderating the discussion once the proposal is submitted to make sure the discussion is civil and focused. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
If we have extra people power, it would be much better to have a dedicated moderation team. Admins themselves should be moderated, and that shouldn't involve conflict of interests. To bootstrap the process, I think it's OK to lump the two responsibilities together. But maybe we can say something like "there's admin team, who does this" and "there's mod team, who does that", and than, separately "to bootstrap the process, both teams would intersect". |
||
|
||
As explained above, there will be opponents and people nominated to play the opposing force and try to do the following: | ||
|
||
* Find gaps, double-interpretations, inconsistencies | ||
* Suggest better alternatives and ask author and proponents to justify why alternative is not better | ||
* Find angles of attack and other kinds of abuse | ||
* If the proposed design makes trade-offs with our technological values and velocity, then argue why these trade-offs are not justifiable | ||
* Additionally, there are people who work on different parts of the protocol and have deep understanding of it. It makes sense to invite them into the discussion and when judgement call is needed (e.g. when the trade-offs are present) ask them to weigh-in. | ||
|
||
To summarize, the roles are: | ||
|
||
### Author | ||
Election process: Self-elected by submitting a proposal. | ||
|
||
Responsibilities: Submit the proposal following the format, address the comments from the community until proposal is accepted. | ||
|
||
### Administrator (Editor) | ||
Election process: Initially pre-selected, but eventually elected by the validators. They are the same for all proposals. | ||
|
||
Responsibilities: Moderate the discussion, make the final accept/reject decision, enforce the timeline, recognize/invite subject matter experts. | ||
|
||
### Incentivized Auditors | ||
Election process: Funded by stakeholders, e.g. NEAR Foundation; | ||
Responsibilities: scrutinize the proposal, the incentive model might be paying per finding. | ||
|
||
### Subject Matter Experts (SMEs) | ||
Election process: recognized or nominated by admins either for all proposals or for specific proposals. | ||
|
||
The current NEP Editors are: | ||
* Jay Logelin - @jlogelin | ||
Responsibilities: Present their take on the specific proposal. | ||
|
||
## NEP Editor Responsibilities & Workflow | ||
### Affected projects | ||
Election process: The author of the proposal needs to list all major projects that will be affected by the change in the proposal. Admins then invite representatives from major projects for the discussion. | ||
|
||
Note that developers with write access to the `NEP repository` may | ||
handle the tasks that would normally be taken care of by the NEP editors. | ||
Responsibilities: Explain in detail how they will be affected if the proposal is implemented. | ||
|
||
For each new NEP that comes in, an editor does the following: | ||
### Community Members | ||
Election process: none, anyone can join the discussion as proponent, opponent, or non-incentivized auditor. | ||
|
||
* Read the NEP to check if it is ready: sound and complete. The ideas must make | ||
technical sense, even if they don't seem likely to get to final status. | ||
* The title should accurately describe the content. | ||
* Check the NEP for language (spelling, grammar, sentence structure, etc.), markup | ||
(GitHub flavored Markdown), code style | ||
Responsibilities: Add clarity to the discussion, surface issues, present alternative points of view. | ||
|
||
Several NEPs are written and maintained by developers with write access | ||
to the Near codebase. The NEP editors monitor the NEP repository | ||
for changes, and correct any structure, grammar, spelling, or | ||
markup mistakes they see. | ||
### Implementers | ||
Election process: self-elected by being one of the owners of a client implementation for our protocol. | ||
|
||
NEP editors don't pass philosophical judgment on NEPs. They merely do the | ||
administrative & editorial part. | ||
Responsibilities: implement the change, if accepted. Very likely, they will be in sync with the validators and other stakeholders so they will have an interest in implementing the change; | ||
Note, some roles might overlap, e.g. the implementers will also likely be the SMEs. However, certain roles should be separate to avoid conflicts of interest, e.g. the author should be separate from the admins and the auditors. If the admins want to submit a proposal themselves then they need to recuse themselves from the process. | ||
|
||
## Style Guide | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I want to play devil's advocate here: I think "stuck in limbo" is a fairly common outcome for many of Rust's RFCs (eg, two of the three RFCs I authored can be described as stuck). This if course is suboptimal, but it seems that the final Result (the Rust language) is doing fine. Stuckness also is a useful signal -- it shows the lack of motivation, implementation capacity, or certainty.
So I'd say that the process's "primary goal" is to facilitate reliable and proactive protocol evolution, and fast accepting/rejecting is just "one of the goals"