You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: process.md
+40-10Lines changed: 40 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,13 +21,43 @@ The Swift evolution process aims to leverage the collective ideas, insights, and
21
21
22
22
There is a natural tension between these two goals. Open evolution processes are, by nature, chaotic. Yet, maintaining a coherent vision for something as complicated as a programming language requires some level of coordination. The Swift evolution process aims to strike a balance that best serves the Swift community as a whole.
23
23
24
-
## General principles
24
+
## Evolution workgroups
25
25
26
26
The [Core Team](https://www.swift.org/community/#core-team) is responsible for the strategic direction of Swift. As part of this, it identifies areas of the Swift project that should be covered by the evolution process. Anything not so identified is not covered by the evolution process.
27
27
28
28
The Core Team may elect to delegate evolution authority over a specific area to a particular [steering group or workgroup](https://www.swift.org/community/). Otherwise, that evolution authority remains with the Core Team. The group that exercises evolution authority over an area is called its *evolution workgroup*. The Core Team's delegation of authority is not absolute, and it retains the right to override individual decisions as it sees fit.
29
29
30
-
Evolution workgroups are responsible for deciding the details of how the evolution process applies to its evolution area, within the general principles laid out in this section. If a proposal touches on multiple evolution areas, all affected evolution workgroups work together to decide the process for the proposal and bring it through evolution review.
30
+
Evolution workgroups are responsible for deciding the details of how the evolution process applies to its evolution area, within the guidelines laid out in the following section. If a proposal touches on multiple evolution areas, all affected evolution workgroups work together to decide and carry out the details of the evolution process for the proposal.
31
+
32
+
## Evolution review
33
+
34
+
The evolution process normally consists of two steps:
35
+
36
+
1. the creation of a *proposal document* that describes the proposal, which is usually developed and discussed in a [forums thread][forums] called a *pitch*; and
37
+
38
+
2. an *open review* of the proposal by the community at large.
39
+
40
+
After the open review, the evolution workgroup makes a decision about what to do.
41
+
42
+
Every substantial design change in an area covered by the evolution process must have a proposal document and undergo open review before it can be accepted.
43
+
44
+
Most proposals must undergo the *full evolution process*. In the full evolution process, the pitch and open review are separate steps. The proposal is developed in a pitch thread until the author is satisfied with it and the workgroup believes it is ready for review. The workgroup then creates a new thread for the open review. After the review is complete, the workgroup may make a final decision or ask for revisions to the proposal. A single proposal may include multiple rounds of pitch and review.
45
+
46
+
An evolution workgroup may also elect to use the *lightweight evolution process* for certain kinds of proposal. The lightweight process combines the pitch and open review steps: the proposal document is developed and discussed in a single thread, and the workgroup makes its decision when it feels that the proposal has solidified and a reasonable time for feedback has passed.
47
+
48
+
The extra structure of the full evolution process gives the community greater awareness of the proposal and a better opportunity to read and provide feedback on it. The lightweight evolution process is generally only appropriate for simple proposals with relatively low stakes. For example, if compiler diagnostic groups were covered by evolution (they currently are not), proposals to create and reorganize groups would be a reasonable use of the lightweight process.
49
+
50
+
Evolution workgroups may decide that certain design changes are sufficiently obvious to accept without a proposal document or open review. This is generally only appropriate for small adjustments to recently-accepted proposals where the workgroup feels that there is no reasonable objection to the proposed change. Examples include:
51
+
52
+
- adding a method to a particular type which was overlooked in a proposal that added that method to several similar types;
53
+
54
+
- forbidding an unsafe or nonsensical use of a new feature; or
55
+
56
+
- gating a change behind an upcoming feature flag after it was discovered to cause significant source-compatibility problems.
57
+
58
+
Such changes should still generally be announced in the release notes when they are made. Evolution workgroups should be circumspect about making changes this way, and in close cases, they should err on the side of conducting a normal review.
59
+
60
+
Evolution workgroups may also reject proposals without review if the workgroup feels that there is no possibility that a review would lead to an acceptance.
31
61
32
62
## Participation
33
63
@@ -54,21 +84,21 @@ To participate in the pitch phase, you watch for pitch threads in the appropriat
54
84
55
85
### Making a proposal
56
86
57
-
Different evolution areas may use slightly different evolution processes, but the basic structure for making a new proposal is generally the same:
87
+
The exact details of making a proposal may vary between evolution areas; read the [descriptions of the different areas](#evolution-areas) for more information.
58
88
59
-
1. You start by checking to see if your idea's already being discussed. The [Swift forums][forums] have a search function that you can use to look for existing threads. Some evolution areas also maintain a list of commonly rejected proposals, which you can find linked from the appropriate section of this document. If the idea has come up before, but the discussion has died down, it hasn't been rejected, and you think you have something new to add, you are welcome to start a new pitch.
89
+
1. You should start by checking to see if your idea's already being discussed. The [Swift forums][forums] have a search function that you can use to look for existing threads. Some evolution areas also maintain a list of commonly rejected proposals, which you can find linked from the appropriate section of this document. If the idea has come up before, but it hasn't been rejected, the discussion died down a long time ago, and you think you have something new to add, you are welcome to start a new pitch.
60
90
61
91
2. You *pitch* an idea by creating a thread to discuss it in a specific section of the forums. This is usually an informal, open-ended discussion about the problem you're trying to solve and your ideas about how to solve it. You do not need to have written a formal proposal at this point. If your search found any relevant prior threads, please link to them in your new pitch.
62
92
63
-
3. When you've developed a solid idea of what you want to propose, you write a formal *proposal document*. You should follow the appropriate template document for the evolution area you're working in. The template may describe additional requirements, like having a prototype implementation ready; this varies from area to area.
93
+
3. When you've developed a solid idea of what you want to propose, you write a formal *proposal document*. You should follow the appropriate template document for the evolution area you're working in. The template may describe additional requirements, like having a prototype implementation ready; this varies from area to area. Be sure to update the pitch thread whenever you make significant changes to the proposal.
64
94
65
-
4. You signal that you think your proposal is almost ready for review by creating a non-[draft][draft-pr] pull request to add it to the appropriate directory in the [evolution repository][swift-evolution-repo]. The evolution workgroup will appoint a *review manager* to oversee your proposal, and they should get in touch with you within a few weeks to talk about it and relay additional feedback from the workgroup.
95
+
4. You signal that you think your proposal is ready for review by creating a non-[draft][draft-pr] pull request to add it to the appropriate directory in the [evolution repository][swift-evolution-repo].
66
96
67
-
5.If the evolution workgroup agrees that your proposal is viable and ready for review, they will schedule it for a period of open review. This period will be at least ten days, covering at minimum two consecutive weekends and the work week between.
97
+
5.In the full evolution process, the evolution workgroup will appoint a *review manager* to oversee your proposal. The review manager should get in touch within a few weeks to relay any additional feedback from the workgroup. When they agree that your proposal is ready, they'll create a dedicated thread for the open review in the appropriate section of the forums. This thread will be kept open for a period of at least ten days, covering at minimum two consecutive weekends. If you need to make revisions to your proposal during the review, the review period may need to be extended to give adequate review time to the change.
68
98
69
-
6.For the open review period, the evolution workgroup will create a dedicated thread to receive review feedback about your proposal in a specific section of the [Swift forums][forums], as discussed in [the previous section](#reviewing-a-proposal).
99
+
6.In the lightweight evolution process, the open review is less formal and just continues in the original thread. You can make changes to the proposal document whenever you want as long as you update the thread. The review ends when the evolution workgroup decides that the discussion has reached a conclusion.
70
100
71
-
7. After the review period ends, the evolution workgroup will decide what to do with your proposal. Possible outcomes include accepting it, outright rejecting it, or asking you to revise it, with the expectation of putting the revised proposal through another round of pitch or review.
101
+
7. After the review period ends, the evolution workgroup will decide what to do with your proposal. Possible outcomes include accepting it, outright rejecting it, or asking you to revise it, with the expectation of putting the revised proposal through another round of pitch or review. In the lightweight process, requests for changes will just be made as comments in the discussion thread, keeping the conversation alive.
72
102
73
103
As a proposal author, you have a responsibility to try to respond to questions during the pitch and open review. Especially during the pitch phase, keep in mind that questions about your proposal often identify places where you can improve your proposal document to be clearer.
74
104
@@ -80,7 +110,7 @@ Ultimately, open review is not a vote. The role of evolution reviewers is to pro
80
110
81
111
There are three kinds of documents commonly used in the evolution process.
82
112
83
-
* An evolution *proposal* describes a specific proposed change in detail. All evolution changes are advanced as proposals which will be discussed in the community and given a formal open review.
113
+
* An evolution *proposal* describes a specific proposed change in detail. All substantial design changes are advanced as proposals which will be discussed in the community and given a formal open review.
84
114
85
115
* An evolution *roadmap* describes a concrete plan for how a complex change will be broken into separate proposals that can be individually pitched and reviewed. Considering large changes in small pieces allows the community to provide more focused feedback about each part of the change. A roadmap makes this organization easier for community members to understand.
0 commit comments