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
+39-22Lines changed: 39 additions & 22 deletions
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ Swift is a powerful and intuitive programming language that is designed to make
4
4
5
5
## Scope
6
6
7
-
The Swift evolution process covers all changes to the Swift language and the public interface of the Swift standard library, including new language features and APIs (no matter how small), changes to existing language features or APIs, removal of existing features, and so on. Smaller changes, such as bug fixes, optimizations, or diagnostic improvements can be contributed via the normal contribution process; see [Contributing to Swift](https://swift.org/community/#contributing).
7
+
The Swift evolution process covers all changes to the Swift language and the public interface of the Swift standard library, including new language features and APIs (no matter how small), changes to existing language features or APIs, removal of existing features, and so on. Smaller changes, such as bug fixes, optimizations, or diagnostic improvements can be contributed via the normal contribution process; see [Contributing to Swift](https://www.swift.org/contributing/).
8
8
9
9
## Goals
10
10
@@ -15,18 +15,18 @@ The Swift evolution process aims to leverage the collective ideas, insights, and
15
15
16
16
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.
17
17
18
+
## Community structure
19
+
20
+
*[Core Team](https://www.swift.org/community/#core-team) members are responsible for the strategic direction of Swift.
21
+
*[Language Workgroup](https://www.swift.org/community/#language-workgroup) members initiate, participate in, and manage the public review of proposals and have the authority to accept or reject changes to Swift.
22
+
18
23
## Participation
19
24
20
25
Everyone is welcome to propose, discuss, and review ideas to improve
21
26
the Swift language and standard library in the
22
27
[Evolution section of the Swift forums](https://forums.swift.org/c/evolution).
23
28
Before posting a review, please see the section "What goes into a review?" below.
24
29
25
-
The Swift [core team](https://swift.org/community/#core-team) is
26
-
responsible for the strategic direction of Swift. Core team members
27
-
initiate, participate in, and manage the public review of proposals
28
-
and have the authority to accept or reject changes to Swift.
29
-
30
30
## What goes into a review?
31
31
32
32
The goal of the review process is to improve the proposal under review
@@ -53,20 +53,20 @@ of the upcoming Swift release. Proposals that are clearly out of scope
53
53
for the upcoming Swift release will not be brought up for review. If you can't resist discussing a proposal that you know is out of scope, please include the tag `[Out of scope]` in the subject.
54
54
***Socialize the idea**: propose a rough sketch of the idea in the ["pitches" section of the Swift forums](https://forums.swift.org/c/evolution/pitches), the problems it solves, what the solution looks like, etc., to gauge interest from the community.
55
55
***Develop the proposal**: expand the rough sketch into a complete proposal, using the [proposal template](proposal-templates/0000-swift-template.md), and continue to refine the proposal on the forums. Prototyping an implementation and its uses along with the proposal is *required* because it helps ensure both technical feasibility of the proposal as well as validating that the proposal solves the problems it is meant to solve.
56
-
***Request a review**: initiate a pull request to the [swift-evolution repository][swift-evolution-repo] to indicate to the core team that you would like the proposal to be reviewed. When the proposal is sufficiently detailed and clear, and addresses feedback from earlier discussions of the idea, the pull request will be accepted. The proposal will be assigned a proposal number as well as a core team member to manage the review.
56
+
***Request a review**: initiate a pull request to the [swift-evolution repository][swift-evolution-repo] to indicate to the Language Workgroup that you would like the proposal to be reviewed. When the proposal is sufficiently detailed and clear, and addresses feedback from earlier discussions of the idea, the pull request will be accepted. The proposal will be assigned a proposal number as well as a Language Workgroup member to manage the review.
57
57
***Address feedback**: in general, and especially [during the review period][proposal-status], be responsive to questions and feedback about the proposal.
58
58
59
59
## Preparing an implementation
60
60
61
61
When you are ready to request a review, a pull request with an implementation is required in addition to your proposal. Proposals that can ship as part of the [Standard Library Preview package][preview-package] should be paired with a pull request against the [swift-evolution-staging repository][swift-evolution-staging]. All other proposals should be paired with an implementation pull request against the [main Swift repository](https://github.com/apple/swift).
62
62
63
-
The preview package can accept new types, new protocols, and extensions to existing types and protocols that can be implemented without access to standard library internals or other non-public features. For more information about the kinds of changes that can be implemented in the preview package, see [SE-0264](https://github.com/apple/swift-evolution/blob/master/proposals/0264-stdlib-preview-package.md).
63
+
The preview package can accept new types, new protocols, and extensions to existing types and protocols that can be implemented without access to standard library internals or other non-public features. For more information about the kinds of changes that can be implemented in the preview package, see [SE-0264](https://github.com/apple/swift-evolution/blob/main/proposals/0264-stdlib-preview-package.md).
64
64
65
65
## Review process
66
66
67
67
The review process for a particular proposal begins when a member of
68
-
the core team accepts a pull request of a new or updated proposal into
69
-
the [swift-evolution repository][swift-evolution-repo]. That core team
68
+
the Language Workgroup accepts a pull request of a new or updated proposal into
69
+
the [swift-evolution repository][swift-evolution-repo]. That Language Workgroup
70
70
member becomes the *review manager* for the proposal. The proposal
71
71
is assigned a proposal number (if it is a new proposal), and then enters
72
72
the review queue. If your proposal's accompanying implementation takes the form of a package, the review manager will merge your pull request into a new branch in the [swift-evolution-staging repository][swift-evolution-staging].
@@ -82,38 +82,55 @@ reviews. To avoid delays, it is important that the proposal authors be
82
82
available to answer questions, address feedback, and clarify their
83
83
intent during the review period.
84
84
85
-
After the review has completed, the core team will make a decision on
85
+
After the review has completed, the Language Workgroup will make a decision on
86
86
the proposal. The review manager is responsible for determining
87
-
consensus among the core team members, then reporting their decision
87
+
consensus among the Language Workgroup members, then reporting their decision
88
88
to the proposal authors and forums. The review manager will
89
89
update the proposal's state in the [swift-evolution
90
90
repository][swift-evolution-repo] to reflect that decision.
91
91
92
92
## Proposal states
93
+
94
+
```mermaid
95
+
flowchart LR
96
+
%% <https://mermaid-js.github.io/>
97
+
98
+
%% Nodes:
99
+
1{{"Awaiting\nreview"}}
100
+
2{{"Scheduled\nfor review"}}
101
+
3{"Active\nreview"}
102
+
4["Returned\nfor revision"]
103
+
5(["Withdrawn"])
104
+
6(["Rejected"])
105
+
7_8["Accepted\n(with revisions)"]
106
+
9[["Previewing"]]
107
+
10(["Implemented"])
108
+
109
+
%% Links:
110
+
1 ==> 3 ==> 7_8 ==> 10
111
+
1 -.-> 2 -.-> 3 -.-> 4 -.-> 5 & 1
112
+
3 -.-> 6
113
+
7_8 -.-> 9 -.-> 10
114
+
```
115
+
93
116
A given proposal can be in one of several states:
94
117
95
118
***Awaiting review**: The proposal is awaiting review. Once known, the dates
96
119
for the actual review will be placed in the proposal document. When the review
97
120
period begins, the review manager will update the state to *Active review*.
98
-
***Scheduled for review (FULL_MONTH_NAME DAY...FULL_MONTH_NAME DAY)**: The public review of the proposal
121
+
***Scheduled for review (...)**: The public review of the proposal
99
122
in the [Swift forums][proposal-reviews]
100
123
has been scheduled for the specified date range.
101
-
***Active review (FULL_MONTH_NAME DAY...FULL_MONTH_NAME DAY)**: The proposal is undergoing public review
124
+
***Active review (...)**: The proposal is undergoing public review
102
125
in the [Swift forums][proposal-reviews].
103
126
The review will continue through the specified date range.
104
127
***Returned for revision**: The proposal has been returned from review
105
128
for additional revision to the current draft.
106
129
***Withdrawn**: The proposal has been withdrawn by the original submitter.
107
-
***Deferred**: Consideration of the proposal has been deferred
108
-
because it does not meet the [goals of the upcoming major Swift
109
-
release](README.md). Deferred proposals will be reconsidered when
110
-
scoping the next major Swift release.
111
130
***Rejected**: The proposal has been considered and rejected.
112
-
***Accepted (YYYY-MM-DD)**:
113
-
The proposal has been accepted (on the specified date) and is either awaiting
131
+
***Accepted**: The proposal has been accepted and is either awaiting
114
132
implementation or is actively being implemented.
115
-
***Accepted with revisions (YYYY-MM-DD)**:
116
-
The proposal has been accepted (on the specified date),
133
+
***Accepted with revisions**: The proposal has been accepted,
117
134
contingent upon the inclusion of one or more revisions.
118
135
***Previewing**: The proposal has been accepted and is available for preview
119
136
in the [Standard Library Preview package][preview-package].
0 commit comments