NEP Process
This doc was originally from https://github.com/newtonproject/NEPs/wiki and should be added to a NEP as reference.
Shepherding a NEP #
Parties & Roles involved in the process a NEP are: NEP you, the NEP Champion(Lead) or Authors, NEP Editors, NEP Review Board, and the Public Communnity.
Before you begin writing a formal NEP, you should vet your idea. Ask the Newton community first if an idea is original to avoid wasting time on something that will be be rejected based on prior research.
In addition to making sure your idea is original, it will be your role as the author to make your idea clear to reviewers and interested parties, as well as inviting editors, developers and community to give feedback. You should try and gauge whether the interest in your NEP is commensurate with both the work involved in implementing it and how many parties will have to conform to it. Negative community feedback will be taken into consideration and may prevent your NEP from moving past the Draft stage.
General NEP Flow #
General NEP Status Flow
---
"WIP" -> "Draft" -> "Public Call" -> "Final / Active"
See NEP Status for more NEP Statuses and flowchart.
I. Submit a NEP Draft for the first time #
Follow the procedure in Contributing a NEP or NEP Submission Guides for Beginners to Start a NEP.
Once the NEP is ready to become a Draft
, create a PR to the NEPs repository.
View NEP Process
# Submit a NEP Draft for the first time
NEP_Status = "WIP"
$Authors:
change NEP_Status = "Draft"
create PR = "New NEP-X Draft"
{ CHECK CONTENTS }
$NEP_Editor:
case Good >> { ASSIGN NUMBER }
case Ready >> { BOARD REVIEW }
case Require Edit
request $Authors to Edit >> { CHECK CONTENTS }
case Not Pass && Will Not Continue
PR = "Closed" && exit NEP Process
{ ASSIGN NUMBER }
$NEP_Editor:
assign NEP_Number = "Issue/PR Number"
update PR = "New NEP-# Draft" && >> { CHECK CONTENTS }
{ BOARD REVIEW }
$NEP_Review_Board:
case Accept
PR = "Merged" && exit NEP Process
case Deny
PR = "Closed" && exit NEP Process
II. Update a NEP Draft #
Only NEP in
Draft
status can accept updatesYou have to be one of the Authors to update a NEP
To update a Draft NEP, you must be one of the Authors mentioned in the NEP. If you are not amount the authors, your submission will be rejected. Contact the NEP Authors you are willing to join and ask them to add you to the NEP first.
If you tried contact the Authors and get no response, you may ask the NEP Editors for assistance. If the NEP Editors can’t reach the NEP Authors, the editor may consider they have abandoned the NEP and change the status to abandoned. You may work on that and submit new updates to that NEP.
View NEP Process
# Update a NEP Draft
NEP_Status = "Draft"
$Authors:
create PR = "Update NEP-# Draft"
{ CHECK CONTENTS }
$NEP_Editor:
case Ready >> { CHECK IF REVIEW REQUIRED }
case Require Edit
request $Authors to Edit >> { CHECK CONTENTS }
case Not Pass && Will Not Continue
PR = "Closed" && exit NEP Process
{ CHECK IF REVIEW REQUIRED }
$NEP_Editor:
case Required >> { BOARD REVIEW }
case Not Requred
PR = "Merged" && exit NEP Process
{ BOARD REVIEW }
$NEP_Review_Board:
case Accept
PR = "Merged" && exit NEP Process
case Deny
PR = "Closed" && exit NEP Process
III. Make a NEP Draft to NEP Final / Active #
A NEP
Draft
must be already in Newton NEPs repository before requesting for it to be finalised toFinal
/Active
You have to be one of the Authors to make a NEP
Final
/Active
Once a NEP become
Final
. It can no longer accept changesCreate an PR in Newton’s NEPs repository on Github
Tell why you think it can be finalised in description
If you are not amount the authors, your submission will be rejected. Contact the NEP Authors you are willing to join and ask them to add you to the NEP first.
If you tried contact the Authors and get no response, you may ask the NEP Editors for assistance. If the NEP Editors can’t reach the NEP Authors, the editor may consider they have abandoned the NEP and change the status to abandoned. You may work on that and submit new updates to that NEP.
View NEP Process
# Make a NEP Draft to NEP Final
NEP_Status = "Draft"
$Authors:
change NEP_Status = "Public Call"
create PR = "Make NEP-# Final"
{ CHECK CONTENTS }
$NEP_Editor:
case Ready >> { BOARD REVIEW }
case Not Pass && Will Not Continue
PR = "Closed" && exit NEP Process
{ BOARD REVIEW }
$NEP_Review_Board:
case Accept
PR = "Merged" && >> { PUBLIC REVIEW }
case Deny
PR = "Closed" && exit NEP Process
{ PUBLIC REVIEW }
case Accept
NEP_Status = "Final" && exit NEP Process
case Deny
NEP_Status = "Draft" && exit NEP Process
IV. Update an Active NEP #
You have to be one of the Authors to update an
Active
NEPAn
Active
status NEP can accept updates for adding features, but other parts can not be changes
View NEP Process
# Update an Active NEP
NEP_Status = "Active"
$Authors:
create PR = "Update Active NEP-#"
{ CHECK CONTENTS }
$NEP_Editor:
case Ready >> { CHECK IF REVIEW REQUIRED }
case Require Edit
request $Authors to Edit >> { CHECK CONTENTS }
case Not Pass && Will Not Continue
PR = "Closed" && exit NEP Process
{ CHECK IF REVIEW REQUIRED }
$NEP_Editor:
case Required >> { BOARD REVIEW }
case Not Requred
PR = "Merged" && exit NEP Process
{ BOARD REVIEW }
$NEP_Review_Board:
case Accept
PR = "Merged" && exit NEP Process
case Deny
PR = "Closed" && exit NEP Process
Special NEP Flow #
Special NEP Status Flow
---
"Draft" -> "Abandoned" -> "Draft"
"Final" -> "Implemented"
"Final" -> "Deferred" -> "Implemented"
"Final" / "Implemented" -> "Superseded"
"Draft" -> "Rejected"
Flow of Abandoned NEP #
See Transferring NEP Ownership.
NEP Final become Implemented or Deferred #
tbd
NEP Got Superseded #
tbd
Rejected NEP #
tbd