Skip to content

Commit 02e9dfd

Browse files
authored
Merge branch 'swiftlang:main' into master
2 parents 47d96fc + f014504 commit 02e9dfd

File tree

64 files changed

+15931
-419
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+15931
-419
lines changed

process.md

Lines changed: 128 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ Swift is a powerful and intuitive programming language that is designed to make
55
## Scope
66

77
The Swift evolution process covers all design changes, no matter how small, to the Swift language, its standard library, and the core tools necessary to build Swift programs. This includes additions, removals, and changes to:
8+
89
- the features of the Swift language,
910
- the public interface of the Swift standard library,
10-
- the configuration of the Swift compiler, and
11-
- the core tools of the Swift package ecosystem, including the configuration of the [Swift package manager](https://www.swift.org/package-manager/) and the design of its manifest files.
11+
- the configuration of the Swift compiler,
12+
- the core tools of the Swift package ecosystem, including the configuration of
13+
the [Swift package manager](https://www.swift.org/package-manager/) and the
14+
design of its manifest files, and
15+
- the public interfaces of the following libraries:
16+
- [Swift Testing](https://github.com/swiftlang/swift-testing)
17+
- [XCTest](https://github.com/swiftlang/swift-corelibs-xctest)
1218

1319
The design of other tools, such as IDEs, debuggers, and documentation generators, is not covered by the evolution process. The Core Team may create workgroups to guide and make recommendations about the development of these tools, but the output of those workgroups is not reviewed.
1420

@@ -31,9 +37,12 @@ There is a natural tension between these two goals. Open evolution processes are
3137

3238
The [Core Team](https://www.swift.org/community/#core-team) is responsible for the strategic direction of Swift. The Core Team creates workgroups focused on specific parts of the project. When the Core Team gives a workgroup authority over part of the evolution of the project, that workgroup is called an evolution workgroup. Evolution workgroups manage the evolution process for proposals under their authority, working together with other workgroups as needed.
3339

34-
Currently, there is only one evolution workgroup:
40+
Currently, there are three evolution workgroups:
3541

36-
* The [Language Steering Group][language-steering-group] has authority over the evolution of the Swift language and its standard library.
42+
* The [Language Steering Group][language-steering-group] has authority over the evolution of the Swift language, its standard library, and any language configuration features of the Swift package manager.
43+
* The [Platform Steering Group][platform-steering-group] has authority over the evolution of all other features of the Swift package manager and its manifest files.
44+
* The [Testing Workgroup][testing-workgroup] has authority over the evolution of
45+
the Swift Testing and Corelibs XCTest projects.
3746

3847
The Core Team manages (or delegates) the evolution process for proposals outside these areas. The Core Team also retains the power to override the evolution decisions of workgroups when necessary.
3948

@@ -93,8 +102,11 @@ Please state explicitly whether you believe that the proposal should be accepted
93102

94103
1. **Develop the proposal and implementation**
95104

96-
1. Expand the rough sketch into a formal proposal using the [proposal template](proposal-templates/0000-swift-template.md).
97-
1. In the [swift-evolution repository][swift-evolution-repo], open a [draft pull request][draft-pr] that adds your proposal to the [proposals directory](/proposals).
105+
1. Expand the rough sketch into a formal proposal using the
106+
[relevant proposal template](#proposal-templates).
107+
1. In the [swift-evolution repository][swift-evolution-repo], open a
108+
[draft pull request][draft-pr] that adds your proposal to the appropriate
109+
[proposal directory](#proposal-locations).
98110
1. Announce the pull request on the forums and edit the root post to link out to the pull request.
99111
1. Refine the formal proposal in the open as you receive further feedback on the forums or the pull request.
100112
A ripe proposal is expected to address commentary from present and past
@@ -111,7 +123,7 @@ Please state explicitly whether you believe that the proposal should be accepted
111123
Proposals that can ship as part of the [Standard Library Preview package][preview-package]
112124
should be paired with a pull request against the [swift-evolution-staging repository][swift-evolution-staging].
113125
All other proposals should be paired with an implementation pull request
114-
against the [main Swift repository](https://github.com/apple/swift).
126+
against the [main Swift repository](https://github.com/swiftlang/swift).
115127

116128
The preview package can accept new types, new protocols, and extensions to
117129
existing types and protocols that can be implemented without access to
@@ -128,6 +140,28 @@ Please state explicitly whether you believe that the proposal should be accepted
128140
129141
[draft-pr]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests
130142

143+
### Proposal templates
144+
145+
When writing a formal proposal document, start with the most relevant template
146+
given the primary subject of the proposal:
147+
148+
- Use the [Swift template][swift-template] for proposals concerning the Swift
149+
language, compiler, or standard library.
150+
- Use the [Swift Package Manager template][swiftpm-template] for proposals
151+
related to SwiftPM, including the design of its package manifest files and
152+
command-line tools.
153+
- Use the [Swift Testing template][swift-testing-template] for proposals focused
154+
on Swift Testing features or public interfaces.
155+
156+
### Proposal locations
157+
158+
When opening a pull request to add a new proposal to the
159+
[swift-evolution repository][swift-evolution-repo], place proposals which use
160+
the [Swift][swift-template] or [Swift Package Manager][swiftpm-template]
161+
templates in the top-level [proposals](/proposals) directory. Place proposals
162+
which use the newer [Swift Testing template][swift-testing-template] in the
163+
[proposals/testing](/proposals/testing) subdirectory.
164+
131165
## Review process
132166

133167
The review process for a particular proposal begins when a member of
@@ -162,13 +196,13 @@ flowchart LR
162196
%% <https://mermaid-js.github.io/>
163197
164198
%% Nodes:
165-
1{{"Awaiting\nreview"}}
166-
2{{"Scheduled\nfor review"}}
167-
3{"Active\nreview"}
168-
4["Returned\nfor revision"]
199+
1{{"Awaiting<br/>review"}}
200+
2{{"Scheduled<br>for review"}}
201+
3{"Active<br/>review"}
202+
4["Returned<br/>for revision"]
169203
5(["Withdrawn"])
170204
6(["Rejected"])
171-
7_8["Accepted\n(with revisions)"]
205+
7_8["Accepted<br/>(with revisions)"]
172206
9[["Previewing"]]
173207
10(["Implemented"])
174208
@@ -207,18 +241,27 @@ A given proposal can be in one of several states:
207241

208242
[swift-evolution-repo]: https://github.com/swiftlang/swift-evolution "Swift evolution repository"
209243
[swift-evolution-staging]: https://github.com/swiftlang/swift-evolution-staging "Swift evolution staging repository"
210-
[proposal-reviews]: https://forums.swift.org/c/evolution/proposal-reviews "'Proposal reviews' category of the Swift forums"
211-
[status-page]: https://apple.github.io/swift-evolution/
244+
[proposal-reviews]: https://forums.swift.org/c/evolution/proposal-reviews "'Proposal reviews' subcategory of the Swift forums"
245+
[status-page]: https://www.swift.org/swift-evolution
212246
[preview-package]: https://github.com/apple/swift-standard-library-preview/
213247
[language-steering-group]: https://www.swift.org/language-steering-group
248+
[platform-steering-group]: https://www.swift.org/platform-steering-group
249+
[testing-workgroup]: https://www.swift.org/testing-workgroup "Testing Workgroup page on Swift.org"
250+
[swift-template]: proposal-templates/0000-swift-template.md "Swift proposal template"
251+
[swiftpm-template]: proposal-templates/0000-swiftpm-template.md "Swift Package Manager proposal template"
252+
[swift-testing-template]: proposal-templates/0000-swift-testing-template.md "Swift Testing proposal template"
214253

215254
## Review announcement
216255

217-
When a proposal enters review, a new topic will be posted to the ["Proposal Reviews" section of the Swift forums][proposal-reviews]
218-
using the following template:
256+
When a proposal enters review, a new topic will be posted to the
257+
["Proposal Reviews" subcategory of the Swift forums][proposal-reviews] using the
258+
relevant announcement template below:
219259

220260
---
221261

262+
<details open>
263+
<summary>Swift language, compiler, and standard library</summary>
264+
222265
Hello Swift community,
223266

224267
The review of "\<\<PROPOSAL NAME>>" begins now and runs through \<\<REVIEW
@@ -258,4 +301,72 @@ Thank you,
258301

259302
Review Manager
260303

261-
---
304+
</details>
305+
306+
<details>
307+
<summary>Swift Testing public interfaces and features</summary>
308+
309+
Hello Swift community,
310+
311+
The review of "\<\<PROPOSAL NAME>>" begins now and runs through \<\<REVIEW END DATE>>.
312+
The proposal is available here:
313+
314+
> https://linkToProposal
315+
316+
Reviews are an important part of the Swift evolution process. All review
317+
feedback should be either on this forum thread or, if you would like to keep
318+
your feedback private, directly to the review manager. When emailing the review
319+
manager directly, please keep the proposal link at the top of the message.
320+
321+
##### Trying it out
322+
323+
To try this feature out, add a dependency to the `main` branch of
324+
`swift-testing` to your package:
325+
326+
```swift
327+
dependencies: [
328+
...
329+
.package(url: "https://github.com/swiftlang/swift-testing.git", branch: "main"),
330+
]
331+
```
332+
333+
Then, add a target dependency to your test target:
334+
335+
```swift
336+
.testTarget(
337+
...
338+
dependencies: [
339+
...
340+
.product(name: "Testing", package: "swift-testing"),
341+
]
342+
```
343+
344+
Finally, import Swift Testing using `@_spi(Experimental) import Testing`.
345+
346+
##### What goes into a review?
347+
348+
The goal of the review process is to improve the proposal under review through
349+
constructive criticism and, eventually, determine the direction of Swift. When
350+
writing your review, here are some questions you might want to answer in your
351+
review:
352+
353+
* What is your evaluation of the proposal?
354+
* Is the problem being addressed significant enough to warrant a change to Swift
355+
Testing?
356+
* Does this proposal fit well with the feel and direction of Swift Testing?
357+
* If you have used other languages or libraries with a similar feature, how do
358+
you feel that this proposal compares to those?
359+
* How much effort did you put into your review? A glance, a quick reading, or an
360+
in-depth study?
361+
362+
More information about the Swift evolution process is available at
363+
364+
> https://github.com/swiftlang/swift-evolution/blob/main/process.md
365+
366+
Thank you,
367+
368+
-\<\<REVIEW MANAGER NAME>>
369+
370+
Review Manager
371+
372+
</details>

0 commit comments

Comments
 (0)