Skip to content

Commit fedfd1d

Browse files
0xTimMaxDesiatovcthielen
authored
Add 2023 SSWG Update (#353)
* Add 2023 SSWG Update * Apply suggestions from code review Co-authored-by: Max Desiatov <[email protected]> * Apply suggestions from code review * More changes * Minor tweak * Remove nonprintable character from blank lines * Copy editing pass * Add Franz as an author * Last couple of nits --------- Co-authored-by: Max Desiatov <[email protected]> Co-authored-by: Christopher Thielen <[email protected]>
1 parent 5e8fe1a commit fedfd1d

File tree

2 files changed

+135
-0
lines changed

2 files changed

+135
-0
lines changed

_data/authors.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,3 +387,10 @@ erickinnear:
387387
388388
github: ekinnear
389389
about: "Eric Kinnear is a member of the team at Apple working on Foundation networking, HTTP, and other internet technologies."
390+
391+
FranzBusch:
392+
name: Franz Busch
393+
394+
github: FranzBusch
395+
gravatar: 3b34dbe9f3870b0e9bf1f4cb0750fa3d
396+
about: "Franz Busch is a member of a team developing foundational server-side Swift libraries at Apple, and is a member of the SSWG."

_posts/2023-08-17-sswg-update-2023.md

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
---
2+
layout: post
3+
published: true
4+
date: 2023-08-17 10:00:00
5+
title: SSWG 2023 Annual Update
6+
author: [0xTim, FranzBusch]
7+
---
8+
9+
Once a year, the Swift Server workgroup (SSWG) reflects on recent community accomplishments and lays out focus areas for the year ahead.
10+
11+
Since [our last update](/blog/sswg-update/), the Swift on server ecosystem has welcomed new projects, seen significant progress in the adoption of structured concurrency, improved its tooling, and more.
12+
13+
Let's start by reviewing the progress made in 2022 then look ahead at the goals for the next 12 months.
14+
15+
## 2022 in Review
16+
17+
### Continued focus on growing the ecosystem
18+
19+
The ecosystem has seen a number of new libraries introduced including:
20+
21+
* a [Kafka client library](https://github.com/swift-server/swift-kafka-gsoc) that started as a GSoC project
22+
* a [Cassandra client library](https://github.com/apple/swift-cassandra-client) released by Apple and pitched to the [SSWG incubation process](/sswg/incubation-process.html)
23+
* a [GraphQL](https://github.com/GraphQLSwift/GraphQL) library pitched to the SSWG incubation process
24+
* a [RabbitMQ library](https://github.com/funcmike/rabbitmq-nio)
25+
* a Memcached client library was proposed as a GSoC project
26+
27+
There were also three new packages proposed and accepted into the SSWG's incubation process:
28+
29+
* [GraphQL and Graphiti libraries](https://github.com/swift-server/sswg/blob/main/proposals/0019-graphql.md)
30+
* [Distributed Actors Cluster implementation](https://github.com/swift-server/sswg/blob/main/proposals/0020-distributed-actor-cluster.md)
31+
* [Swift Cassandra client](https://github.com/swift-server/sswg/blob/main/proposals/0021-swift-cassandra-client.md)
32+
33+
### Continuing the concurrency journey
34+
35+
We are happy to see that the adoption of Swift Concurrency in the ecosystem has progressed significantly. All libraries in the SSWG incubation process have adopted new `async`/`await` APIs where applicable and are continuing to roll out `Sendable` support.
36+
37+
We are also seeing a trend of new APIs using only Swift Concurrency, and new projects with internals written using Swift Concurrency, like the [Kafka client library](https://github.com/swift-server/swift-kafka-gsoc).
38+
39+
We're also excited to see the introduction of [Custom Actor Executors](https://github.com/apple/swift-evolution/blob/main/proposals/0392-custom-actor-executors.md). The introduction of Custom Actor Executors offers more control over the behavior of concurrent code, helps improve performance, and will enable us to bridge more code into Swift concurrency.
40+
41+
### Expanding the tooling
42+
43+
Notable highlights in tooling include:
44+
45+
* The [Swift Extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=sswg.swift-lang) reached version 1.0.0 and added new features like Swift Package plugin integration, Test Coverage and Test Explorer support, and more.
46+
* Swift Package plugins have seen adoption in many libraries, from formatters and linters, to code generators such as [SwiftProtobuf](https://github.com/apple/swift-protobuf/tree/main/Plugins/SwiftProtobufPlugin), [gRPC swift](https://github.com/grpc/grpc-swift/tree/main/Plugins/GRPCSwiftPlugin), [Smoke](https://github.com/amzn/smoke-framework-application-generate/tree/main/Plugins), and [Soto](https://soto.codes/2022/12/build-plugin-experiments.html).
47+
* [Swiftly](https://github.com/swift-server/swiftly) is now available to try out and provides a simple way to install Swift on Linux and switch between versions.
48+
49+
### Improving build times
50+
51+
There have been a number of improvements to build times for Swift projects, including compiler optimizations, new build systems, and package manager enhancements.
52+
53+
Swift Crypto Extras continues to add new APIs that allow libraries to avoid vending their own copies of BoringSSL. This, combined with the new [Swift Certificates and ASN.1 libraries](https://www.swift.org/blog/swift-certificates-and-asn1/), helps libraries like [WebAuthn Swift](https://github.com/swift-server/webauthn-swift) avoid including their own cryptography libraries and instead use these new packages and APIs. This avoids compiling the same code multiple times and provides a significant speed improvement during compilation.
54+
55+
Additionally, SSWG member Gwynne [merged a PR for Swift 5.9](https://github.com/apple/swift/pull/64312) that offers a 90% improvement to link time and memory usage on Linux, which should greatly help when building Swift applications in constrained environments.
56+
57+
### Increasing adoption of server-side Swift
58+
59+
The SSWG has continued to work with the community to increase adoption of Swift on the server:
60+
61+
* The SSWG Guides and incubation processes have been migrated to [Swift.org](http://Swift.org) to make them more discoverable.
62+
* [Many](https://swiftpackageindex.com/swift-server/async-http-client/1.18.0/documentation/asynchttpclient) [of](https://swiftpackageindex.com/swift-server/RediStack/1.5.1/documentation/redistack) [the](https://swiftpackageindex.com/apple/swift-nio/2.58.0/documentation/nio) [Swift](https://swiftpackageindex.com/apple/swift-log/1.5.2/documentation/logging) [server](https://swiftpackageindex.com/apple/swift-metrics/2.4.1/documentation/coremetrics) [packages](https://swiftpackageindex.com/swift-server/swift-aws-lambda-runtime/1.0.0-alpha.1/documentation/awslambdaruntime) have adopted Swift Package Index documentation hosting to make discovering and using packages easier.
63+
* The SSWG has created a survey to better understand the Swift on server community and help ensure efforts are applied to the right areas.
64+
* We are observing an increase in the number of conference talks focused on production success stories and technical deep dives, reflecting a maturity in adoption and recognition of Swift on server.
65+
66+
## Goals for 2023
67+
68+
The SSWG believes 2023 will be another exciting year for Swift on the server, with a continued focus on the following goals:
69+
70+
* Continued focus on growing the ecosystem
71+
* Adoption of structured concurrency
72+
* Expand the documentation and guides
73+
* Improve tooling
74+
75+
### Continued focus on growing the ecosystem
76+
77+
In addition to supporting existing libraries, there are a number of areas of focus for this year:
78+
79+
* a Swift-native Memcached client
80+
* a common connection pool library to make it easy to adopt connection pooling
81+
* a shared middleware implementation for use in web frameworks like Smoke, Hummingbird, and Vapor
82+
* Encouraging adoption of distributing tracing to round out the [observability story](https://swiftpackageindex.com/apple/swift-distributed-tracing/1.0.1/documentation/tracing)
83+
* Better showcases of Swift on server deployments and success stories
84+
* Better visibility of Swift as a server language
85+
86+
### Adoption of structured concurrency
87+
88+
The SSWG believe that structured concurrency is a key feature that will make Swift on server stand out and provide a clear benefit to the ecosystem.
89+
90+
Some plans for this year include:
91+
92+
* Produce an adoption guide for structured concurrency covering best practices around `Sendable`, `async`/`await`, `TaskGroup`, and `Task` APIs.
93+
* Apply concurrency best practices to core ecosystem libraries such as [swift-service-lifecycle](https://github.com/swift-server/swift-service-lifecycle).
94+
95+
### Expand the documentation and guides
96+
97+
Documentation can always be improved and the SSWG will continue to expand our guides and usage documentation for the ecosystem.
98+
99+
The SSWG are working with the Swift Website Workgroup to add guides for those new to Swift on the server as well as ensure that the existing guides can be easily found.
100+
101+
The SSWG also plan to expand the documentation in key areas like security and deployment, covering topics like GitHub's Dependabot and AWS's Swift support in their CDK.
102+
103+
Some of the upcoming design changes to [Swift.org](https://www.swift.org) will help place Swift on server documentation in a more prominent position to increase visibility.
104+
105+
### Improve tooling
106+
107+
[Swiftly](https://github.com/swift-server/swiftly) is growing in popularity on Linux for managing multiple toolchains, and the SSWG would like to port it to Windows and macOS as well.
108+
109+
There are a number of other tooling enhancements being explored, including:
110+
111+
* Adding support for Swift Package Manager to GitHub's dependabot
112+
* Investigating Canonical's Chiseled Containers to see if we can provide Swift containers with a very small footprint and a hardened security profile
113+
* Investigating what we can do with Swift Package plugins to improve the deployment experience of Swift on server
114+
115+
## New SSWG Members
116+
117+
The SSWG is happy to welcome four new members:
118+
119+
* Dave Moser - Dave joined the SSWG in May. Dave is part of the solution architecture team driving Swift on AWS, and has been involved with the Swift on server efforts for the last couple of years.
120+
* Jimmy McDermott - Jimmy also joined the SSWG in May and represents Transeo. Jimmy has been involved with Swift on server since Vapor's early days and is the CTO of Transeo, where he and his team use Vapor to scale services to millions of users.
121+
* Franz Busch - Franz officially joined the SSWG on October 23rd and works on the SwiftNIO team at Apple.
122+
* Joannis Orlandos - Joannis joined the SSWG at the start of this year. Joannis was a core contributor to Vapor and maintains a number of libraries in the ecosystem including [MongoKitten](https://github.com/orlandos-nl/MongoKitten).
123+
124+
Franz takes over from Fabian Fett who has completed a two year stint on the SSWG. Dave takes over from Todd Varland who also completed a long stint on the SSWG. Kaitlin Mahar has changed roles at MongoDB and also completed a number of years on the SSWG. We are extremely grateful for all they've done in their time on the SSWG and thank them for their hard work!
125+
126+
## Going Forward
127+
128+
If you have any ideas to share with the SSWG or want to pitch a library to the SSWG Incubation Process, please get in touch with us, either [via the forums](https://forums.swift.org/c/server/43) or through Slack.

0 commit comments

Comments
 (0)