Skip to content

Commit

Permalink
Added a table of contents, as well as some general cleanup and a note…
Browse files Browse the repository at this point in the history
… about what Final status means. (#4)
  • Loading branch information
danieljperry authored Feb 2, 2022
1 parent 3907a0f commit 3736571
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 49 deletions.
136 changes: 103 additions & 33 deletions CHIPs/chip-0001.md
Original file line number Diff line number Diff line change
@@ -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 <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
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
Expand All @@ -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.
Expand All @@ -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.
Expand All @@ -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-<your name>-<your proposal>`.
### 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-<your name>-<your proposal>`.

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.

Expand All @@ -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.
Expand All @@ -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.
Expand Down Expand Up @@ -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

Expand Down
31 changes: 15 additions & 16 deletions chip-template.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
---
CHIP: <Creator must leave this blank. Editor will assign a number.>
Title: <Keep succinct. Maximum 44 characters.>
Description: <A short, single-sentence description of this CHIP. Maximum 140 characters.>
Author: <Name, along with email or GitHub address, of each author, separated by a comma.>
Comments-URI: <Creator must leave this blank. Editor will assign a URI.>
Status: <Idea | Draft | Review | Last Call | Final | Stagnant | Withdrawn | Obsolete | Living>
Category: <Standards Track | Process | Informational>
Sub-Category: <Add according to Category>
Created: <Date created, using yyyy-mm-dd format (ISO 8601)>
Requires: <CHIP number(s), (optional)>
Replaces: <CHIP number, (optional)>
Superseded-By: <CHIP number (only allowed for Obsolete CHIPS)>
---

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-<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 | <Keep succinct. Maximum 44 characters.>
Description | <A short, single-sentence description of this CHIP. Maximum 140 characters.>
Author | <Name, along with email or GitHub address, of each author, separated by a comma.>
Comments-URI | < Creator must leave this blank. Editor will assign a URI.>
Status | <Idea \| Draft \| Review \| Review (Fast Track) \| Last Call \| Final \| Stagnant \| Withdrawn \| Obsolete \| Living>
Category | <Standards Track \| Process \| Informational>
Sub-Category | < Add according to Category>
Created | <Date created, using yyyy-mm-dd format (ISO 8601)>
Requires | <CHIP number(s), (optional)>
Replaces | <CHIP number, (optional)>
Superseded-By | <CHIP number (only allowed for Obsolete CHIPs)>

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-<CHIP>` folder, which you may create after you receive your CHIP number.

Copy and rename the template file to `chip-<your name>-<your proposal>`, then submit it as a pull request.

Expand Down

0 comments on commit 3736571

Please sign in to comment.