Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add 2023 SSWG Update #353

Merged
merged 9 commits into from
Aug 17, 2023
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions _posts/2023-08-18-sswg-update-2023.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
---
layout: post
published: true
date: 2023-08-18 10:00:00
title: SSWG 2021 Annual Update
0xTim marked this conversation as resolved.
Show resolved Hide resolved
author: [0xTim, FranzBusch]
---

Once a year, the Swift Server workgroup (SSWG) reflects on recent community accomplishments and lays out focus areas for the year ahead.
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.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
## 2022 in Review
Let's start by recapping the SSWG goals from last year.
### Continued focus on growing the ecosystem
The ecosystem has seen a number of new libraries introduced including:
* a [Kafka Client library](https://github.com/swift-server/swift-kafka-gsoc) that started as a GSoC project
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* a [Cassandra client library](https://github.com/apple/swift-cassandra-client) released by Apple and pitched to the SSWG incubation process
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* a [GraphQL](https://github.com/GraphQLSwift/GraphQL) library pitched to the SSWG incubation process
* a [RabbitMQ library](https://github.com/funcmike/rabbitmq-nio)
* a Memcached client library was proposed a GSoC project
0xTim marked this conversation as resolved.
Show resolved Hide resolved
There were also three new packages proposed and accepted into the SSWG's incubation process:
* [GraphQL and Graphite](https://github.com/swift-server/sswg/blob/main/proposals/0019-graphql.md)
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* [Distributed Actors Cluster](https://github.com/swift-server/sswg/blob/main/proposals/0020-distributed-actor-cluster.md)
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* [Swift Cassandra Client](https://github.com/swift-server/sswg/blob/main/proposals/0021-swift-cassandra-client.md)
0xTim marked this conversation as resolved.
Show resolved Hide resolved
### Continuing the concurrency journey
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.
As concurrency adoption continues across the ecosystem we are seeing a trend where projects are starting to offer new APIs using only Swift Concurrency. Moreover, new projects are emerging that are completely implementing their internals with Swift Concurrency, such as the [Kafka Client library](https://github.com/swift-server/swift-kafka-gsoc).
0xTim marked this conversation as resolved.
Show resolved Hide resolved
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) which will further enable us to bridge more code into Swift Concurrency.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
### Expanding the tooling
Notable highlights in tooling include:
* 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.
* 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).
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* [Swiftly](https://github.com/swift-server/swiftly) is now available to try out and provides a much simpler way to install Swift on Linux and switch between Swift versions.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
### Improving build times
There have been a couple of improvements that continue to improve build times in Swift projects.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
Aside from a number of compiler optimizations, new build systems, and package manager improvements, there are a couple of notable changes: Swift Crypto Extras continues to add new APIs that allow libraries to avoid vending their own copies of BoringSSL. The new [Swift Certificates and ASN.1 libraries](https://www.swift.org/blog/swift-certificates-and-asn1/) also mean that libraries like [WebAuthn Swift](https://github.com/swift-server/webauthn-swift) can avoid including their own cryptography libraries (typically BoringSSL) and instead use these new packages and APIs. This avoids compiling the same code multiple times and provides a significant speed improvement during compilation.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
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, which should greatly help when building Swift applications in constrained environments.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
### Increasing Adoption of Server-Side Swift
The SSWG has continued to work with the community to increase adoption of Swift on the server:
* The SSWG Guides and incubation processes have been migrated to [Swift.org](http://Swift.org) to make them more discoverable.
* [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.
* The SSWG has created a survey [TODO link] to better understand the Swift on server community and how we can ensure efforts are applied to the right areas.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we fill in this TODO?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The survey hasn't been published yet - that's waiting on internal approvals IIRC. I'll chase

* 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.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
## Goals for 2023
The SSWG believes 2023 will be another exciting year for Swift on the server, with a focus on the following goals:
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* Continue to grow the ecosystem
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* Continuing adoption of structured concurrency
* Expand existing documentation and guides
* Improve tooling
### Continued focus on growing the package ecosystem
As well as supporting the existing libraries, there are a number of areas of focus for this year:
* a Swift-native Memcached client
* a common connection pool library to make it easy to adopt connection pooling
* a shared middleware implementation for use in web frameworks like Smoke, Hummingbird and Vapor
* encouraging adoption of distributing tracing to round out the [observability story](https://swiftpackageindex.com/apple/swift-distributed-tracing/1.0.1/documentation/tracing)
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* Better showcases of Swift on server deployments and success stories
* Better visibility of Swift as a server language
### Adoption of Structured Concurrency
The SSWG believe the Structured Concurrency is a key feature of Swift that will make Swift on server stand out and provide a clear benefit to the ecosystem.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
Some plans for this year include:
* Produce an adoption guide for Structured Concurrency covering best practices around `Sendable`, `async`/`await`, `TaskGroup`, and `Task` APIs
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* Work on adopting it in core ecosystem libraries such as [swift-service-lifecycle](https://github.com/swift-server/swift-service-lifecycle).
0xTim marked this conversation as resolved.
Show resolved Hide resolved
### Expand the documentation and guides
Documentation can always be improved and the SSWG will continue to grow and expand our guides and usage documentation for the ecosystem. Some of the upcoming changes to [Swift.org](http://Swift.org) will help place Swift on the Server documentation in a more prominent position and increase the visibility of the Swift on the server. This includes the [Server Guides](https://www.swift.org/server/guides/) now being available on Swift.org instead of GitHub.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
### Improve tooling
As more users adopt [Swiftly](https://github.com/swift-server/swiftly) for managing multiple Swift toolchains, the SSWG would like to port it to Windows and macOS as well.
0xTim marked this conversation as resolved.
Show resolved Hide resolved
There are a number of other tooling enhancements being explored, including:
* Adding support for Swift Package Manager to GitHub's dependabot
* Investigating Canonical's Chiseled Containers to see if we can provide Swift containers with a very small footprint and a hardened security profile
* Investigating what we can do with Swift Package Plugins to improve the deployment experience of Swift on the Server
0xTim marked this conversation as resolved.
Show resolved Hide resolved
## New SSWG Members
The SSWG is happy to welcome four new members:
* 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.
* 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.
* Franz Busch - Franz officially joined the SSWG on October 23rd and works on the SwiftNIO team at Apple
0xTim marked this conversation as resolved.
Show resolved Hide resolved
* Joannis Orlandos - Joannis joined the SSWG at the start of this year. Joannis was a core contributor to Vapor 3 and maintains a number of libraries in the ecosystem including [MongoKitten](https://github.com/orlandos-nl/MongoKitten).
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!
## Going Forward
If you have an idea of an area that the SSWG should explore or want to pitch a library to the SSWG Incubation Process, please get it touch with us, either [via the forums](https://forums.swift.org/new-message?groupname=swift-website-workgroup) or through Slack.
0xTim marked this conversation as resolved.
Show resolved Hide resolved