From 373657153971c2c41ea52c1d466ecbe715d02f2f Mon Sep 17 00:00:00 2001 From: Dan Perry <69756004+danieljperry@users.noreply.github.com> Date: Wed, 2 Feb 2022 12:42:12 +0800 Subject: [PATCH] Added a table of contents, as well as some general cleanup and a note about what Final status means. (#4) --- CHIPs/chip-0001.md | 136 ++++++++++++++++++++++++++++++++++----------- chip-template.md | 31 +++++------ 2 files changed, 118 insertions(+), 49 deletions(-) diff --git a/CHIPs/chip-0001.md b/CHIPs/chip-0001.md index 1a68bbe9..3bc937a2 100644 --- a/CHIPs/chip-0001.md +++ b/CHIPs/chip-0001.md @@ -1,18 +1,53 @@ ---- -CHIP: 0001 -Title: CHia Improvement Proposal (CHIP) process -Description: A living document to outline the CHIP process, from Idea to Final. -Author: Daniel Perry -Comments-URI: https://github.com/Chia-Network/chips/wiki/Comments:CHIP-0001 -Status: Draft -Category: Process -Sub-Category: Procedural -Created: 2021-11-24 -Dependencies: None +CHIP Number | 0001 +:------------|:---- +Title | CHia Improvement Proposal (CHIP) process +Description | A living document to outline the CHIP process, from Idea to Final. +Author | [Daniel Perry](https://github.com/danieljperry) +Comments-URI | https://github.com/Chia-Network/chips/wiki/Comments:CHIP-0001 +Status | Draft +Category | Process +Sub-Category | Procedural +Created | 2021-11-24 +Dependencies | None + +# CHia Improvement Proposals (CHIPs) + +Contents: + +* [What is a CHIP?](#what-is-a-chip) +* [CHIP categories and sub-categories](#chip-categories-and-sub-categories) + * [Standards Track](#standards-track) + * [Process](#process) + * [Informational](#informational) +* [CHIP workflow](#chip-workflow) + * [Parties involved](#parties-involved) + * [CHIP Status](#chip-status) + * [Idea](#idea) + * [Draft](#draft) + * [Review](#review) + * [Review (Fast Track)](#review-fast-track) + * [Last Call](#last-call) + * [Final](#final) + * [Stagnant](#stagnant) + * [Withdrawn](#withdrawn) + * [Obsolete](#obsolete) + * [Living](#living) + * [CHIP template and requirements](#chip-template-and-requirements) + * [Additional files](#additional-files) + * [Transferring CHIP ownership](#transferring-chip-ownership) + * [CHIP comments](#chip-comments) + * [CHIP editors](#chip-editors) + * [CHIP Editor responsibilities and workflow](#chip-editor-responsibilities-and-workflow) +* [Style Guide](#style-guide) + * [CHIP numbers](#chip-numbers) +* [History](#history) + * [Bibliography](#bibliography) +* [Copyright](#copyright) + --- ## What is a CHIP? -A *CH*ia *I*mprovement *P*roposal (CHIP) is a formal design document. It uses a standard format, which will be laid out in this document. CHIPs are the primary mechanism for community members to propose three broad categories of changes to Chia's ecosystem: +A CHIP is a formal design document. It uses a standard format, which will be laid out in this document. CHIPs are the primary mechanism for community members to propose three broad categories of changes to Chia's ecosystem: * New features or changes that affect one or more of Chia's protocols * New features or changes that exist outside of Chia's protocols @@ -36,31 +71,44 @@ Each CHIP will be recorded publicly, as text files on a versioned repository. Th ## CHIP categories and sub-categories -* **Standards Track** -- New features or changes that will affect one or more of Chia's protocols, and all Chia implementations. Any change that affects Chia application standards or conventions, as well as the interoperability of applications using CHIA will fall into this category. + +### Standards Track + + Standards Track CHIPs propose new features or changes that will affect one or more of Chia's protocols, and all Chia implementations. Any change that affects Chia application standards or conventions, as well as the interoperability of applications using Chia will fall into this category. Standards Track CHIPs consist of three parts: - * A design document - * A reference implementation - * An update to the existing formal specification + 1. A design document + 2. A reference implementation + 3. An update to the existing formal specification + +Sub-categories of Standards Track CHIPs include: - Sub-categories of Standards Track CHIPs include: * **Core** -- Changes to the block structure, transaction validity rules (including digital signatures), VDF implementation, plot sizes or structure, etc. Some, but not all, Core CHIPs will require a code fork. Therefore, these are the most difficult CHIPs for which to gain consensus acceptance from the community. * **Network** -- Changes to the peer-to-peer network protocol. For example, additional specifications for sending messages or storing data. * **Interface** -- Changes to the JSON or RPC specifications, as well as changes to method-level naming standards. * **Chialisp** -- Includes any changes to the Chialisp language, and any implementations thereof. For example, changes to the CAT, NFT, or singleton standards. Also includes changes to libraries and package formats. -* **Process** -- New features or changes that exist outside of Chia's protocols. These CHIPs typically, but not always, require consensus from the community. A design document is required to be in included in the proposal. Sometimes, these CHIPs also require a reference implementation and an update to existing formal specifications. +--- + +### Process + Process CHIPs propose new features or changes that exist outside of Chia's protocols. These CHIPs typically, but not always, require consensus from the community. A design document is required to be in included in the proposal. Sometimes, these CHIPs also require a reference implementation and an update to existing formal specifications. + +Sub-categories of Process CHIPs include: - Sub-categories of Process CHIPs include: * **Procedural** -- A modification to the way in which processes are implemented or decisions are made regarding anything Chia-related. * **Tooling** -- Changes to any tool outside of Chia's protocols. * **Environment** -- Any changes to the environment used in Chia's development or implementation. * **Other** -- Changes that don't fit into the other sub-categories. -* **Informational** -- General guidelines that do not propose new features or changes. This CHIPs do not require consensus from the community, so users are free to ignore them. +--- + +### Informational + + Informational CHIPs are general guidelines that do not propose new features or changes. This CHIPs do not require consensus from the community, so users are free to ignore them. + +Sub-categories of Informational CHIPs include: - Sub-categories of Informational CHIPs include: * **Design** -- Changes to any naming conventions or semantics used within Chia's ecosystem. For example, renaming Coloured Coins to CATs. * **Guideline** -- Recommendations to Chia's broader community regarding the development process. * **Informative** -- Additional information related to Chia's processes or procedures. @@ -86,7 +134,9 @@ Regardless of category and sub-category, each CHIP must follow the same workflow The status of each CHIP will therefore fall into one of the following categories: -**Idea** -- A formal proposal has yet to be written, so it is not being tracked in the CHIP repository. All CHIPs start as _Ideas_. +### Idea + +A formal proposal has yet to be written, so it is not being tracked in the CHIP repository. All CHIPs start as _Ideas_. In this stage of development, you should vet your idea in the #dev channel on our [Keybase](https://keybase.io/team/chia_network.public "Chia's Keybase forum") forum. Be sure to gain general agreement from the community that your idea is: * Original -- It has not been implemented or rejected previously. @@ -101,7 +151,9 @@ If any of these conditions is not met, your CHIP likely will be rejected. To avo Only _after_ your idea has met these conditions within the community, you may proceed to the next phase. -**Draft** -- When you are ready for your proposal to be moved into _Draft_, you should fill out the standard [template](/chip-template.md) and submit it as a pull request in the [CHIPs GitHub repository](https://github.com/Chia-Network/chips/ "CHIPs GitHub repository"). Your CHIP file should be formatted in markdown, and it should be named using this convention: `chip--`. +### Draft + +When you are ready for your proposal to be moved into _Draft_, you should fill out the standard [template](/chip-template.md) and submit it as a pull request in the [CHIPs GitHub repository](https://github.com/Chia-Network/chips/ "CHIPs GitHub repository"). Your CHIP file should be formatted in markdown, and it should be named using this convention: `chip--`. Be as thorough as possible when filling out the template. Additional details may be added as the review moves forward, but to give your proposal the highest chance of success, it's important to include all relevant information from the beginning. Upon receiving your pull request, a CHIP Editor will make an initial assessment. If your proposal contains all of the necessary material, the Editor will assign it a number. @@ -113,13 +165,17 @@ You will also need to gauge interest in your proposal, as well as figure out how Any negative feedback will be taken into account when deciding whether to move your CHIP to the next phase. -**Review** -- After a sufficient period in _Draft_ (which can vary significantly between CHIPs), when consensus has been reached and all dissenting opinions have been fully addressed, you may request your CHIP's Editor to move your CHIP into _Review_. +### Review + +After a sufficient period in _Draft_ (which can vary significantly between CHIPs), when consensus has been reached and all dissenting opinions have been fully addressed, you may request your CHIP's Editor to move your CHIP into _Review_. At this point, you must ask your peers to review your CHIP. If it is rejected, the Editor will move it back into _Draft_. Additionally, if you make any significant changes to your CHIP during this period (anything beyond spelling/grammatical corrections or minor clarifications), your Editor will move your CHIP back into _Draft_. If there is general consensus during this phase, a CHIP Editor (and not the author) will move the proposal into _Last Call_. -**Review (Fast Track)** -- A limited number of CHIPs may be allowed to pass directly from _Idea_ to _Review (Fast Track)_. This phase will be used for proposals that have already received widespread consensus within the community. +### Review (Fast Track) + +A limited number of CHIPs may be allowed to pass directly from _Idea_ to _Review (Fast Track)_. This phase will be used for proposals that have already received widespread consensus within the community. >NOTE: As of early 2022, many changes are being implemented quite rapidly. Therefore, this phase is needed to allow for quick iteration and implementation of new ideas. In the future, once Chia and its ecosystem have matured, fast-tracking may be undertaken less often. It could also be completely removed as an option. @@ -131,17 +187,31 @@ At this point, you must ask your peers to review your CHIP. If it is rejected, t If there is general consensus during this phase, a CHIP Editor (and not the author) will move the proposal into _Last Call_. -**Last Call** -- Your CHIP is now ready to be finalized and has entered a waiting period, the deadline of which will be assigned by the CHIP Editor (typically two weeks). During this period, Chia developers and management, as well as community members, may submit their objections to your CHIP being finalized. If _any_ changes are made to the CHIP in this phase, it will be moved back to _Review_. If the deadline is reached with no serious objections and no modifications being made, then it automatically will be moved to _Final_. +### Last Call + +Your CHIP is now ready to be finalized and has entered a waiting period, the deadline of which will be assigned by the CHIP Editor (typically two weeks). During this period, Chia developers and management, as well as community members, may submit their objections to your CHIP being finalized. If _any_ changes are made to the CHIP in this phase, it will be moved back to _Review_. If the deadline is reached with no serious objections and no modifications being made, then it automatically will be moved to _Final_. + +### Final -**Final** -- This CHIP has been finalized and can no longer be modified, other than by adding errata. +This CHIP has been finalized and can no longer be modified, other than by adding errata. Note that just because a CHIP has reached _Final_ status, it is not binding. Developers still need to decide whether to implement the CHIP. Additionally, everyone needs to decide for themselves which software to run on their own computers, and ultimately what they consider to be _Chia_. -**Stagnant** -- If no modifications have been made to a CHIP that is in _Draft_ or _Review_ for six months, then it is automatically moved to _Stagnant_. The author may petition the Editor to move the CHIP back into its prior state at any point in the future. +### Stagnant -**Withdrawn** -- You can withdraw your CHIP at any point. Once a CHIP reaches this status, it can no longer be modified. You can propose the same idea once again in a new CHIP, but you may not re-use this one. +If no modifications have been made to a CHIP that is in _Draft_ or _Review_ for six months, then it is automatically moved to _Stagnant_. The author may petition the Editor to move the CHIP back into its prior state at any point in the future. -**Obsolete** -- If a CHIP with _Final_ status must be replaced, then it will be considered _Obsolete_. All _Obsolete_ CHIPs must include the _Superseded-By_ field. +### Withdrawn -**Living** -- A small number of CHIPs will never be finalized because changes will occasionally need to be made. These CHIPs are considered _Living_, and include chip-0001. +You can withdraw your CHIP at any point. Once a CHIP reaches this status, it can no longer be modified. You can propose the same idea once again in a new CHIP, but you may not re-use this one. + +### Obsolete + +If a CHIP with _Final_ status must be replaced, then it will be considered _Obsolete_. All _Obsolete_ CHIPs must include the _Superseded-By_ field. + +### Living + +A small number of CHIPs will never be finalized because changes will occasionally need to be made. These CHIPs are considered _Living_, and include chip-0001. + +--- ### CHIP template and requirements All CHIP authors must fill out a [template](/chip-template.md). Please be as thorough as possible; only high-quality submissions will be considered. @@ -185,9 +255,9 @@ As detailed in the "CHIP categories and sub-categories" section above, the Edito ## Style Guide -### EIP numbers +### CHIP numbers -When referring to a CHIP by number, it should be written in the hyphenated form `CHIP-WXYZ` where `WXYZ` is the CHP's assigned number. +When referring to a CHIP by number, it should be written in the hyphenated form `CHIP-WXYZ` where `WXYZ` is the CHIP's assigned number. ## History diff --git a/chip-template.md b/chip-template.md index ed3e4d33..e40b626c 100644 --- a/chip-template.md +++ b/chip-template.md @@ -1,19 +1,18 @@ ---- -CHIP: -Title: -Description: -Author: -Comments-URI: -Status: -Category: -Sub-Category: -Created: -Requires: -Replaces: -Superseded-By: ---- - -This is the template for all CHIPs to use. Please fill it out according to the guidelines laid out in CHIP-0001. The preamble section above must conform to [RFC 822](https://www.ietf.org/rfc/rfc822.txt) standards. All media associated with this CHIP should be added to the `assets/chip-` folder, which you may create after you receive your CHIP number. +CHIP Number | < Creator must leave this blank. Editor will assign a number.> +:-------------|:---- +Title | +Description | +Author | +Comments-URI | < Creator must leave this blank. Editor will assign a URI.> +Status | +Category | +Sub-Category | < Add according to Category> +Created | +Requires | +Replaces | +Superseded-By | + +This is the template for all CHIPs to use. Please fill it out according to the guidelines laid out in [chip001](/CHIPs/chip-0001.md). The preamble section above must conform to [RFC 822](https://www.ietf.org/rfc/rfc822.txt) standards. All media associated with this CHIP should be added to the `assets/chip-` folder, which you may create after you receive your CHIP number. Copy and rename the template file to `chip--`, then submit it as a pull request.