Swift evolution process
While Apple and the Swift team each have tons of great ideas on where Swift can go, it's important to remember that they aren't the only ones with ideas. In fact, the Swift team fully realizes this, and in response has created a process for you to submit your big or small ideas to help shape the Swift language.
The Swift evolution process encompasses all things related to taking a raw idea from inception through discussion and dialog and hopefully ending at an accepted proposal that developers can implement for production release. The goal of the process is to have active engagement within the community in order to steer the direction of the language while remaining true to the vision of Swift. In practice, that might translate into adding new features that make the language easier to use or removing features that no longer fit the vision of Swift. You can participate by proposing a new idea, or discussing and reviewing the proposals of other community members.
Here are the steps required to get a new idea moved into an accepted proposal:
- Check for similar proposals: It's important to do your homework and make sure that your idea hasn't already been proposed and/or rejected. Spend time reviewing proposals and their states. You can check the Commonly Rejected Proposals list for this task.
- Tell others about your idea: Most of the discussions around new ideas take place on the swift-evolution mailing list. This is where you should create a draft of your idea, along with the problem it addresses and some context on a solution.
- Create your proposal: Using the proposal template found here https://github.com/apple/swift-evolution/blob/master/0000-template.md, you elaborate on your idea and continue to socialize it on the evolution mailing list.
- Request a review: When you believe your proposal is ready for a formal review by the core team, you submit a pull request to the swift-evolution repository https://github.com/apple/swift-evolution. When your pull request is accepted, your proposal will be given a proposal number and assigned a core team member to facilitate the review.
- Respond to feedback: It's your job to respond to questions and feedback on your proposal on the mailing list. This is especially important during the review period.
If all goes well, your proposal will navigate through the proposal states below during the review process and will be accepted.
- Awaiting review: Until the proposal is assigned a date period for review, your proposal remains in this state.
- Under review: Your proposal is undergoing public review on the swift-evolution mailing list.
- Under revision: If you are given feedback during the under-review state, you are given an opportunity to address and modify your proposal.
- Deferred: Decision postponed because it doesn't meet the criteria for the upcoming major Swift release. In this state, your proposal will be reconsidered when scoping for the next major Swift release.
- Accepted: Accepted and new work can begin or is actively being done to implement your accepted proposal. An announcement will also go out to let the community know of a new accepted proposal for the upcoming release.
- Rejected: Considered but rejected by the core team.
Here are some key things to remember about the review process. It doesn't start until a core team member (review manager) accepts your pull request for the proposal. Once accepted, the review manager will coordinate a review period with you and any other authors of the proposal to start a formal public review. The review period is a week long in most cases, but can be longer depending on the scope and complexity of changes outlined in the submitted proposal. Finally, the core team, not just the review manager, will make a decision on the proposal using the comments from the swift-evolution mailing list to help base their decision.