Swift Server Workgroup (SSWG)
The Swift Server workgroup is a steering team that promotes the use of Swift for developing and deploying server applications. The Swift Server workgroup will:
- Define and prioritize efforts that address the needs of the Swift server community
- Define and run an incubation process for these efforts to reduce duplication of effort, increase compatibility and promote best practices
- Channel feedback for Swift language features needed by the server development community to the Swift Core Team
Analogous to the Core Team for Swift, the workgroup is responsible for providing overall technical direction and establishing the standards by which libraries and tools are proposed, developed and eventually recommended. Membership of the workgroup is contribution-based and is expected to evolve over time.
The current Swift Server workgroup consists of the following people:
- Adam Fowler (@adam-fowler)
- Franz Busch , Apple (@FranzBusch)
- Gwynne Raskind , Vapor (@gwynne)
- Joannis Orlandos (@joannis)
- Konrad Malawski , Apple (@ktoso)
- Sebastien Stormacq , Amazon (@sebsto)
- Simon Pilkington , Amazon (@tachyonics)
- Sven A. Schmidt (@finestructure)
- Tim Condon , Vapor (@0xTim)
- Tom Doron , Apple, Core team rep (@tomerd)
We are grateful for the service of the following emeritus workgroup members:
- Chris Bailey , IBM (@seabaylea)
- Dave Moser , Amazon (@dave-moser)
- Fabian Fett , Apple (@fabianfett)
- Ian Partridge , IBM (@ianpartridge)
- Jimmy McDermott , Transeo (@jdmcd)
- Johannes Weiss , Apple (@weissi)
- Kaitlin Mahar , MongoDB (@kmahar)
- Logan Wright , Vapor (@loganwright)
- Patrick Freed , MongoDB (@patrickfreed)
- Paulo Faria , Zewo (@paulofaria)
- Steve Algernon , Apple (@salgernon)
- Tanner Nelson , Vapor
- Todd Varland , Amazon (@toddvarland)
Communication
The Swift Server workgroup uses the Swift Server forum for general discussion.
Community Participation
Everyone is welcome to contribute in the following ways:
- Proposing new libraries and tools to be considered
- Participating in design discussions
- Asking or answering questions on the forums
- Reporting or triaging bugs
- Submitting pull requests to the library projects for implementation or tests
These conversations will take place on the Swift Server forum. Over time, the workgroup may form smaller working groups to focus on specific technology areas.
Charter
The main goal of the Swift Server workgroup is to eventually recommend libraries and tools for server application development with Swift. The difference between this workgroup and the Swift Evolution process is that server-oriented libraries and tools that are produced as a result of workgroup efforts will exist outside of the Swift language project itself. The workgroup will work to nurture, mature and recommend projects as they move into their development and release stages.
Membership
Membership in the workgroup is contribution-based and expected to evolve over time. Adding new members and removing inactive ones is subject to a SSWG vote and requires unanimous agreement. A cap of two members per company is in place to avoid overweight representation. A cap of ten members total is in place to keep the group small enough to be effective. Membership term is capped at 2 years, but exiting members may re-apply at the end of their term. When multiple candidates compete for the same seat, the SSWG will vote between all candidates, with a final voting round between the two candidates that received most votes in the first round.
Companies or individuals that would like to join the workgroup should apply by posting a request to the Swift Server forum. Applicants will then be invited to the next available SSWG meeting to present their case.
Inactive members that do not participate in four consecutive workgroup meetings will be contacted to confirm their desire to stay with the group. After missing ten consecutive meetings, the SSWG will vote on removing them from the group.
Voting
In various situations the SSWG shall hold a vote. These votes can happen on the phone, email, or via a voting service, when appropriate. SSWG members can either respond “agree, yes, +1”, “disagree, no, -1”, or “abstain”. A vote passes with two-thirds vote of votes cast based on the SSWG charter. An abstain vote equals not voting at all.
Incubation Process
The Swift Server Workgroup has a process which allows a project to go through incubation stages until it graduates and becomes a recommended project.
Projects
Project | Description | Maturity Level | Pitched | Accepted |
---|---|---|---|---|
SwiftNIO | Event-driven network application framework. | Graduated | N/A | 2018-09-07 |
SwiftLog | Logging API | Graduated | 2018-09-10 | 2019-02-07 |
SwiftMetrics | Metrics API | Graduated | 2019-01-08 | 2019-04-04 |
PostgresNIO | PostgreSQL driver | Incubating | 2018-11-18 | 2019-05-16 |
RediStack | Redis driver | Sandbox | 2019-01-07 | 2019-06-27 |
AsyncHTTPClient | HTTP Client | Graduated | 2019-04-18 | 2019-06-27 |
APNSwift | APNS Client | Incubating | 2019-02-05 | 2019-06-27 |
SwiftStatsdClient | StatsD driver for the metrics API | Incubating | 2019-06-02 | 2019-08-11 |
SwiftPrometheus | Prometheus driver for the metrics API | Sandbox | 2018-11-18 | 2019-08-11 |
gRPC Swift | gRPC client & server framework | Graduated | 2019-09-30 | 2020-02-19 |
Swift Crypto | Open-source implementation of a substantial portion of the API of Apple CryptoKit | Incubating | 2020-02-20 | 2020-03-04 |
OpenAPIKit | OpenAPI client | Sandbox | 2020-01-14 | 2020-04-29 |
MongoSwift | MongoDB driver | Incubating | 2019-10-30 | 2020-05-13 |
Swift AWS Lambda Runtime | Runtime library for AWS Lambda functions in Swift | Sandbox | N/A | 2020-06-24 |
Backtrace | Nice backtraces in production | Incubating | 2019-05-30 | 2020-07-29 |
Service Lifecycle | Lifecycle management | Incubating | N/A | 2020-09-02 |
Soto for AWS | Third-party SDK for AWS | Incubating | 2020-10-01 | 2020-11-12 |
MultipartKit | Multipart parser and serializer with Codable support for Multipart Form Data | Incubating | 2021-03-03 | 2021-11-11 |
MQTT NIO | A Swift NIO MQTT v3.1.1 and v5.0 Client | Sandbox | 2021-11-02 | 2022-01-19 |
GraphQL | GraphQL query language implementation | Incubating | 2022-08-22 | 2022-09-15 |
Graphiti | Library for building GraphQL schemas | Incubating | 2022-08-22 | 2022-09-15 |
Swift Distributed Actors | Peer-to-peer cluster implementation for Swift Distributed Actors | Sandbox | 2022-10-27 | 2023-01-03 |
CassandraClient | Client library for the Cassandra distributed database | Incubating | 2023-01-19 | 2023-02-02 |
SQLite NIO | 🐬 Non-blocking, event-driven Swift client for SQLite | Sandbox | 2023-08-03 | 2023-09-28 |
Swift Service Context | Minimal type-safe context propagation container | Incubating | 2023-09-05 | 2023-10-03 |
Swift Distributed Tracing | A distributed tracing API for Swift | Incubating | 2023-09-05 | 2023-10-03 |
DiscordBM | A Swift library for making bots on the Discord API | Sandbox | 2023-05-05 | 2023-10-04 |
Swift OpenAPI Generator | A Swift package plugin that can generate the ceremony code required to make API calls, or implement API servers | Sandbox | 2023-08-04 | 2023-10-04 |
MongoKitten | Native MongoDB driver for Swift, written in Swift | Incubating | 2024-01-03 | 2024-02-01 |
The SSWG publishes a package collection that contains the projects incubated by the workgroup. The collection is available at https://swiftserver.group/collection/sswg.json
.
Meeting Time
The SSWG meets biweekly on Wednesday at 2:00PM PT (USA Pacific). The meetings take place in the weeks with the odd week numbers.