-
Notifications
You must be signed in to change notification settings - Fork 101
/
Copy path0001-simd-process.md
198 lines (155 loc) · 7.12 KB
/
0001-simd-process.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
---
simd: '0001'
title: Solana Proposal Process
authors:
- Jacob Creech (Solana Foundation)
- Ben Hawkins (Solana Foundation)
category: Meta
type: Meta
status: Living
created: 2022-10-18
---
## What is a Proposal?
A proposal is a design document describing a new feature for Solana or its
processes or environment. The proposal should document the rationale for the
feature and enough documentation to understand the implementation.
## Rationale
A proposal is intended to be reviewed by core engineering and community members
keeping in mind security concerns, tradeoffs, and backwards compatibility.
Having a proposal process helps identify design issues early, alert the
community on a change, helps scale newer contributors on the architecture, and
acts as a historical record of the design decisions that have gone into Solana.
For implementors, the proposal is a blueprint for the feature and helps track
the development of a feature.
## When you need to follow this process
You need to follow this process if you intend to make "substantial" changes to
the Validator, RPC, consensus, or a change to the proposal process itself. What
constitutes a "substantial" change is evolving based on community norms and
varies depending on what part of the ecosystem you are proposing to change, but
may include the following:
- A change in format of a RPC API method
- Networking interface changes between validators
- Compute requirement changes on the runtime
Some changes do not require a proposal:
- Rephrasing, reorganizing, refactoring, or otherwise "changing shape does not
change meaning".
- Additions that strictly improve objective, numerical quality criteria
(warning removal, speedup, better platform coverage, more parallelism, trap
more errors, etc.)
## Proposal Types
There are two types of proposals:
- A **Standard** Proposal describes any change that affects most or all Solana
implementations, such as a change to the network protocol, consensus, proposed
application standards/conventions, block or transaction validity, or any change
or addition that affects the interoperability of applications using Solana.
Standard proposals can be broken down into the following categories:
- **Core**: Anything that affects consensus or substantial changes to the
validator.
- **Networking**: Changes or substantial improvements to network protocol
specifications.
- **Interfaces**: Breaking changes around the client JSON RPC API
specifications and standards.
- A **Meta** Proposal describes a process surrounding Solana or proposes a
change to (or an event in) a process. Process Proposals are like Standard
Proposals but apply to areas other than the Solana protocol itself. They may
propose an implementation, but not to Solana's codebase; they often require
community consensus and users are typically not free to ignore them. Examples
include procedures, guidelines, changes to the decision-making process, and
changes to the tools or environment used in Solana development. Any meta-SIMD is
also considered a Process Proposals.
## Proposal Lifecycle
The stages in a lifecycle of a proposal are as follows:
- Idea
- Draft
- Review
- Accepted
- Living
- Stagnant
- Withdrawn
- Implemented
- Activated
```mermaid
flowchart LR
Idea
Draft
Review
Accepted
subgraph fail[ ];
Stagnant
Withdrawn
end
style fail fill:#ffe8e7,stroke:none
style Accepted fill:#f3f8dc,stroke:#c3db50;
Idea ---> Draft;
Draft ---> Review;
Review ---> Accepted;
Accepted ---> Implemented;
Implemented ---> Activated;
Review ---> Living;
Accepted ---> Withdrawn;
Draft ---> Stagnant;
Review ---> Stagnant;
Review ---> Withdrawn;
```
### Idea
At the idea stage, parties involved in the proposal are you -- the champion or
proposal author -- the reviewers, and the Solana Core Contributors.
Before you begin writing a formal proposal, you should vet your idea. Ask the
Solana core community first if an idea is original to avoid wasting time on
something that will be rejected based on prior research. Be sure to post your
ideas to the
[SIMD ideas discussion page](https://github.com/solana-foundation/solana-improvement-documents/discussions/categories/ideas)
and gather feedback before making your formal Proposal
### Draft
To begin drafting the proposal, do the following:
- Fork the proposal repository
- Copy `XXXX-template.md` to `proposals/XXXX-my-feature.md` (where "my-feature"
is descriptive)
- Fill in the proposal. Put care into the details: proposals that do not
present convincing motivation, demonstrate lack of understanding of the
design's impact, or are disingenuous about the drawbacks or alternatives tend
to be poorly received. Low quality proposals with limited engagement will be
closed by SIMD repository maintainers.
- Submit a pull request.
- Now that your proposal has an open pull request, use the issue number of the
PR to update the `XXXX-` prefix to the number.
### Review
During review, the owner of the proposal is in charge of gathering and
integrating feedback. The most relevant core contributors to the proposal
should be included in the review process. Review will take place completely
through Github so that all comments are collected and documented. Once
consensus is met by the core contributors, the proposal can either be accepted
or withdrawn. This step is typically taken when enough tradeoffs have been
considered for the core contributors to make a decision. It is not necessary
for all participants to reach consensus. However, there should not be a strong
consensus against the proposal outside of the core contributors.
### Accepted
Some accepted proposals represent vital features that can be implemented right
away. Other accepted proposals can wait until some arbitrary core contributor
feels like doing the work. Every accepted proposal should have an associated
tracking issue in the Solana repository. If the implementation requires the
feature to be activated using the feature activation program, a feature-gate
issue for tracking across clusters should also be created. While it is not
*necessary* for the proposal author to also write the implementation, it is by
far the most effective way to see a proposal through to completion: authors
should not expect that other project developers will take on responsibility for
implementing their accepted feature.
### Implemented
When all relevant teams have completed development of the SIMD's feature, the
SIMD is "Implemented".
### Activated
A proposal will have the status Activated once it has been implemented,
tested, and finally activated on mainnet beta.
### Living
A special status for SIMDs that are designed to be continually updated and not
reach a state of finality. This includes most notably SIMD-1. This status must
undergo extra scrutiny and review when updating the status from review to
living.
### Stagnant
If a proposal reaches 6 months without activity, the proposal will be
marked as stale to be closed. A new proposal can be opened if the proposal is
closed and has a chance of reaching consensus.
### Withdrawn
The author has withdrawn the proposal. This state has finality and can no
longer be resurrected. If the idea is pursued at a later date it is considered
a new proposal.