Community Overview
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.
Communication
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.
Community Structure
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.
- 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.
- Workgroups
- C++ Interoperability Workgroup is a team that works on adding the support for the bidirectional interoperability between Swift and C++.
- Documentation Workgroup is a steering team that helps guide the documentation experience for Swift.
- Language Steering Group is a small group of experts that drive the Swift language forward in a coherent direction.
- Swift on Server Workgroup is a steering team that promotes the use of Swift for developing and deploying server applications.
- Website Workgroup is a steering team that helps guide the evolution on the Swift.org website.
Most importantly, everyone that uses Swift is a valued member of our extended community.
Project Lead
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.
Core Team
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
We are grateful for the service of the following emeritus Core Team members:
- Chris Lattner
- Dave Abrahams
- Doug Gregor
- Joe Groff
- Joe Pamer
- John McCall
- Tom Doron
Language Steering Group
The Language Steering Group 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 Steering Group 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 Steering Group membership is expected to change over time.
The current Language Steering Group 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
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.
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.
Forums
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
Announcements - For anyone interested in hearing about important announcements about the Swift project. This is a low volume category.
Swift Users
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: swift+swift-users@forums.swift.org.
Development
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: swift+compiler@forums.swift.org.
Standard Library - For developers to discuss the implementation of the Swift standard library. This category will accept email sent to: swift+stdlib@forums.swift.org.
Core Libraries - For developers to discuss the implementation of the Swift core libraries. This category will accept email sent to: swift+corelibs@forums.swift.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: swift+lldb@forums.swift.org.
Package Manager - For developers to discuss the implementation of the Swift package manager. This category will accept email sent to: swift+swiftpm@forums.swift.org.
LLBuild - For developers to discuss the implementation of the low level build system (llbuild). This category will accept email sent to: swift+llbuild@forums.swift.org.
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.
Swift Evolution
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: swift+pitches@forums.swift.org.
Proposal Reviews - Posting and commentary on proposals in the review phase. This category will accept email sent to: swift+proposal-reviews@forums.swift.org.
Discussion - For general discussion of the evolution of Swift. This category will accept email sent to: swift+evolution-discuss@forums.swift.org.
Server
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
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.