AIP Process
This doc was originally from https://github.com/ABFoundationGlobal/AIPs/wiki and should be added to a AIP as reference.
Shepherding a AIP #
Parties & Roles involved in the process a AIP are: AIP you, the AIP Champion(Lead) or Authors, AIP Editors, AIP Review Board, and the Public Communnity.
Before you begin writing a formal AIP, 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 AIP 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 AIP from moving past the Draft stage.
General AIP Flow #
General AIP Status Flow
---
"WIP" -> "Draft" -> "Public Call" -> "Final / Active"
See AIP Status for more AIP Statuses and flowchart.
I. Submit a AIP Draft for the first time #
Follow the procedure in Contributing a AIP or AIP Submission Guides for Beginners to Start a AIP.
Once the AIP is ready to become a Draft
, create a PR to the AIPs repository.
View AIP Process
# Submit a AIP Draft for the first time
AIP_Status = "WIP"
$Authors:
change AIP_Status = "Draft"
create PR = "New AIP-X Draft"
{ CHECK CONTENTS }
$AIP_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 AIP Process
{ ASSIGN NUMBER }
$AIP_Editor:
assign AIP_Number = "Issue/PR Number"
update PR = "New AIP-# Draft" && >> { CHECK CONTENTS }
{ BOARD REVIEW }
$AIP_Review_Board:
case Accept
PR = "Merged" && exit AIP Process
case Deny
PR = "Closed" && exit AIP Process
II. Update a AIP Draft #
Only AIP in
Draft
status can accept updatesYou have to be one of the Authors to update a AIP
To update a Draft AIP, you must be one of the Authors mentioned in the AIP. If you are not amount the authors, your submission will be rejected. Contact the AIP Authors you are willing to join and ask them to add you to the AIP first.
If you tried contact the Authors and get no response, you may ask the AIP Editors for assistance. If the AIP Editors can’t reach the AIP Authors, the editor may consider they have abandoned the AIP and change the status to abandoned. You may work on that and submit new updates to that AIP.
View AIP Process
# Update a AIP Draft
AIP_Status = "Draft"
$Authors:
create PR = "Update AIP-# Draft"
{ CHECK CONTENTS }
$AIP_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 AIP Process
{ CHECK IF REVIEW REQUIRED }
$AIP_Editor:
case Required >> { BOARD REVIEW }
case Not Requred
PR = "Merged" && exit AIP Process
{ BOARD REVIEW }
$AIP_Review_Board:
case Accept
PR = "Merged" && exit AIP Process
case Deny
PR = "Closed" && exit AIP Process
III. Make a AIP Draft to AIP Final / Active #
A AIP
Draft
must be already in Newton AIPs repository before requesting for it to be finalised toFinal
/Active
You have to be one of the Authors to make a AIP
Final
/Active
Once a AIP become
Final
. It can no longer accept changesCreate an PR in Newton’s AIPs 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 AIP Authors you are willing to join and ask them to add you to the AIP first.
If you tried contact the Authors and get no response, you may ask the AIP Editors for assistance. If the AIP Editors can’t reach the AIP Authors, the editor may consider they have abandoned the AIP and change the status to abandoned. You may work on that and submit new updates to that AIP.
View AIP Process
# Make a AIP Draft to AIP Final
AIP_Status = "Draft"
$Authors:
change AIP_Status = "Public Call"
create PR = "Make AIP-# Final"
{ CHECK CONTENTS }
$AIP_Editor:
case Ready >> { BOARD REVIEW }
case Not Pass && Will Not Continue
PR = "Closed" && exit AIP Process
{ BOARD REVIEW }
$AIP_Review_Board:
case Accept
PR = "Merged" && >> { PUBLIC REVIEW }
case Deny
PR = "Closed" && exit AIP Process
{ PUBLIC REVIEW }
case Accept
AIP_Status = "Final" && exit AIP Process
case Deny
AIP_Status = "Draft" && exit AIP Process
IV. Update an Active AIP #
You have to be one of the Authors to update an
Active
AIPAn
Active
status AIP can accept updates for adding features, but other parts can not be changes
View AIP Process
# Update an Active AIP
AIP_Status = "Active"
$Authors:
create PR = "Update Active AIP-#"
{ CHECK CONTENTS }
$AIP_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 AIP Process
{ CHECK IF REVIEW REQUIRED }
$AIP_Editor:
case Required >> { BOARD REVIEW }
case Not Requred
PR = "Merged" && exit AIP Process
{ BOARD REVIEW }
$AIP_Review_Board:
case Accept
PR = "Merged" && exit AIP Process
case Deny
PR = "Closed" && exit AIP Process
Special AIP Flow #
Special AIP Status Flow
---
"Draft" -> "Abandoned" -> "Draft"
"Final" -> "Implemented"
"Final" -> "Deferred" -> "Implemented"
"Final" / "Implemented" -> "Superseded"
"Draft" -> "Rejected"
Flow of Abandoned AIP #
See Transferring AIP Ownership.
AIP Final become Implemented or Deferred #
tbd
AIP Got Superseded #
tbd
Rejected AIP #
tbd