The Swift.org community has the singular goal of making the world’s best general purpose programming language. Collectively we will develop the language in the open, with contributions from anyone who wishes to participate. This guideline document describes how the Swift community is organized so that we can work together to add amazing new capabilities to Swift, and make it available to even more developers across more platforms.
The Swift language is developed in the open, and all technical or administrative topics about the language or community processes should be directed to the Swift public forums. Public conversations are encouraged, and active developers of the Swift language should monitor the relevant forum categories.
- Directory of forum categories and email instructions are in the forum section
- Source code for all Swift projects can be found on GitHub at github.com/apple
- The Swift language bug tracking system is maintained at github.com/apple/swift/issues
All communication within project spaces should adhere to Swift project’s Code of Conduct.
Advancing the Swift programming language with a coherent, clear view of its evolution requires strong leadership. The leadership is taken from the community, and works closely with the much broader group of contributors and users. Roles within the community include:
- Project Lead appoints technical leaders from the community. Apple Inc. is the project lead, and interacts with the community through its representative.
- Core Team is the small group responsible for strategic direction and oversight of the Swift project
- Language Workgroup is a small group of experts that drive the Swift language forward in a coherent direction
- Code Owner is the individual responsible for a specific area of the Swift codebase
- Committer is anyone that has commit access to the Swift code base
- Contributor is anyone that contributes a patch or helps with code review
Most importantly, everyone that uses Swift is a valued member of our extended community.
Apple Inc. is the project lead and serves as the arbiter for the project. The project lead makes senior appointments to leadership roles, with those leaders coming from the worldwide Swift community of contributors. The community leaders and code contributors work together to continually improve Swift, and the language will advance by the good works of everyone involved.
Ted Kremenek is the appointed representative from Apple, and acts as the voice of the project lead.
The Core Team provides cohesion across the Swift community’s various workgroups and initiatives, providing support and strategic alignment. The Project Lead appoints members of the Core Team to bring a mixture of experience, expertise, and leadership so the group may together act as effective stewards for the Swift project and its community. The Core Team membership is expected to change over time.
The current Core Team members are:
- Ben Cohen
- Holly Borla
- Marc Aupont
- Mishal Shah
- Paris Pittman
- Saleem Abdulrasool
- Ted Kremenek
- Tom Doron
The Language Workgroup comprises experts that the Swift Project Lead and the Core Team have identified as possessing a balance of perspectives and expertise to review, guide, and strategically align changes to the language mindfully. The Language Workgroup reviews and helps iterate language evolution proposals from the community, acting as the approver of these proposals. Workgroup members help drive the Swift language forward coherently to create the best possible general-purpose programming language. The Language Workgroup membership is expected to change over time.
The current Language Workgroup members are:
- Becca Royal-Gordon
- Ben Cohen
- Doug Gregor
- Freddy Kellison-Linn
- Holly Borla
- Joe Groff
- John McCall
- Steve Canon
- Tony Allevato
- Xiaodi Wu
Code owners are individuals assigned to specific areas of the Swift project, with code quality their primary responsibility. The umbrella Swift project is composed of numerous sub-projects including the Swift standard library, extensions to the LLDB debugger, and the Swift package manager, to name a few. Each sub-project will be assigned a code owner. The code owner then works to get all contributions reviewed, gather feedback from the community, and shepherd approved patches into the product.
Anyone can review a piece of code, and we welcome code review from everyone that is interested. Code review procedures are not dictated by a central, global policy. Instead, the process is defined by each code owner.
Any community member that is active and shows themselves to be valuable can offer to become a code owner via posting to the forums, or be nominated by another member. If fellow contributors agree, the project lead will make the appointment and add the new owner’s name to the code owners file. The position is completely voluntary, and can be resigned at any time.
The list of current code owners can be found in the file
CODE_OWNERS.txt in the root of the parent Swift source tree. We also maintain a mailing group so you can send an email to all the code owners.
There may be nothing more important to the success of Swift than strong, engaged code owners. We all owe them respect, gratitude, and whatever help we can offer.
The Swift license is based on the Apache 2.0 license with a Runtime Library Exception that removes the attribution requirement when using Swift to build and distribute your own binaries. The Apache 2.0 license was chosen because it allows broad use of Swift, and is already well-understood by many potential contributors.
Copyright is held by the authors of the contributions, or the company or organization to which the individual belongs. A list of copyright holders is maintained in the CONTRIBUTORS.txt file on Swift.org and at the root of the repository.
Runtime Library Exception
The Runtime Library Exception makes it clear that end users of the Swift compiler don’t have to attribute their use of Swift in their finished binary application, game, or service. End-users of the Swift language should feel unrestricted to create great software. The full text of this exception follows:
As an exception, if you use this Software to compile your source code and portions of this Software are embedded into the binary product as a result, you may redistribute such product without providing attribution as would otherwise be required by Sections 4(a), 4(b) and 4(d) of the License.
This exception can also be found at the bottom of the LICENSE.txt file.
Copyright and License in Source Code
All source files hosted on Swift.org must contain a comment block at the top of the file declaring the license and copyright that applies. This text may be part of a larger header, for instance as defined in the Contributing Code section. Regardless of the header format, the wording for the license and copyright portion must be copied as follows, with the appropriate years applied:
// This source file is part of the Swift.org open source project // // Copyright (c) 2022 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
Each contributor is responsible for adding his or her name to the
CONTRIBUTORS.txt file at the project’s root and maintaining the contact information. If you are contributing under the umbrella of your company, please add your company’s information, and do not also list yourself as an additional copyright holder.
The primary method of communicating among community members is through the Swift forums. Within the forums, we have a number of categories and sub-categories, to help organize discussions. Forum topics can be further organized via use of tags.
In addition to the forum web interface, the forums can be interacted with via email. Subscriptions and email preferences are configured via forum user settings.
A core principle for the Swift project is that the community is an open and inclusive one. Engagement on the forums should follow these guidelines:
All discussion on the forums should adhere to Swift project’s Code of Conduct.
Different users may have different preferences in choice of language for discussion and are encouraged to use their language of choice.
As a matter of courtesy, responses to a post should be in the same language as the original post in order to maintain the original inclusiveness of the discussion and not inadvertantly exclude other participants already engaged on the thread (including the author of the original post).
A response to a post has the option of providing additional text in a different language if that is helpful.
Announcements - For anyone interested in hearing about important announcements about the Swift project. This is a low volume category.
Using Swift - For newcomers or those primarily interested in using the Swift language, it is best to start by engaging within the Using Swift category. This area is intended for users to get help with or ask questions about Swift or its related tools and is not for discussion about work being done to the language itself. This category will accept email sent to: email@example.com
Compiler - For developers to discuss the development and implementation of the Swift compiler, low-level runtime, and SourceKit. This category will accept email sent to: firstname.lastname@example.org
Standard Library - For developers to discuss the implementation of the Swift standard library. This category will accept email sent to: email@example.com
Core Libraries - For developers to discuss the implementation of the Swift core libraries. This category will accept email sent to: firstname.lastname@example.org
LLDB - For developers to discuss the implementation of the Swift REPL and Swift-specific aspects of LLDB. This category will accept email sent to: email@example.com
Package Manager - For developers to discuss the implementation of the Swift package manager. This category will accept email sent to: firstname.lastname@example.org
LLBuild - For developers to discuss the implementation of the low level build system (llbuild). This category will accept email sent to: email@example.com
Announcements - For announcements relevant to developers such as release announcements, branching, and infrastructure updates.
CI Notifications - Automated notifications from ci.swift.org for build and test failures.
Please see the Swift evolution repository to learn about Swift’s evolution process and which proposals are actively being discussed.
Announcements - For announcements of Swift evolution proposal reviews and results. All discussion and review of evolution proposals occurs on the swift-evolution mailing list.
Pitches - For proposals for the evolution of Swift including new language features, new standard library APIs, and so on before they enter the review phase. This category will accept email sent to: firstname.lastname@example.org
Proposal Reviews - Posting and commentary on proposals in the review phase. This category will accept email sent to: email@example.com
Discussion - For general discussion of the evolution of Swift. This category will accept email sent to: firstname.lastname@example.org
For developers to discuss server-focused capabilities supported by Swift.org and the Server workgroup.
Development - For developers to discuss the implementation of server-focused capabilities developed by the Server workgroup.
Docker - For developers to discuss the official Docker image support for Swift.
Related Projects - The Related Projects category includes sub-categories that are dedicated to open source projects within the Swift community that are separate from the Swift language itself.
Community Showcase - The Community Showcase category is a venue for members of the Swift community to announce things they’ve created that may be of interest to other Swift developers.