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 the 2024 SSWG update blog post #576

Merged
merged 21 commits into from Mar 28, 2024
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions _data/server-workgroup/members.yml
Expand Up @@ -33,3 +33,7 @@
- name: Tom Doron
github: tomerd
affiliation: Apple, Core team rep

- name: Sven A. Schmidt
github: finestructure
affliation: Swift Package Index
7 changes: 7 additions & 0 deletions _data/server-workgroup/projects.yml
Expand Up @@ -193,3 +193,10 @@
pitched: 2023-08-04
accepted: 2023-10-04
url: https://github.com/apple/swift-openapi-generator

- name: MongoKitten
description: Native MongoDB driver for Swift, written in Swift
maturity: Incubating
pitched: 2024-01-03
accepted: 2024-02-01
url: https://github.com/orlandos-nl/MongoKitten
2 changes: 1 addition & 1 deletion _posts/2024-01-31-swift-openapi-generator-1.0.md
Expand Up @@ -9,7 +9,7 @@ excerpt_separator: <!--read more-->

We’re happy to announce the stable 1.0 release of [Swift OpenAPI Generator][swift-openapi-generator-repo]!

[OpenAPI][openapi] is an open standard for describing the behavior of HTTP services with a rich ecosystem of tooling. One thing OpenAPI is particularly known for is tooling to generate _interactive_ documentation. But the core motivation of OpenAPI is _code-generation_, which allows adopters to use an API-first approach to server development and, because many existing services document their API in this format, allows client developers to generate type-safe, idiomatic to call these APIs.
[OpenAPI][openapi] is an open standard for describing the behavior of HTTP services with a rich ecosystem of tooling. One thing OpenAPI is particularly known for is tooling to generate _interactive_ documentation. But the core motivation of OpenAPI is _code-generation_, which allows adopters to use an API-first approach to server development and, because many existing services document their API in this format, allows client developers to generate type-safe, idiomatic code to call these APIs.

<!--read more-->

Expand Down
84 changes: 84 additions & 0 deletions _posts/2024-03-28-sswg-update-2024.md
@@ -0,0 +1,84 @@
---
layout: post
published: true
date: 2024-03-28 10:00:00
title: SSWG 2024 Annual Update
author: [Joannis, ktoso, FranzBusch]
---

In this annual post, the [Swift Server WorkGroup (SSWG)](/sswg/) reflects on the community, ecosystem-wide accomplishments and the workgroup's focus areas for the year ahead.

Since our [previous update](/blog/sswg-update-2023/), Swift on the Server has continued to grow in many ways. Let's start with a look at the progress made in 2023, then look ahead and next steps for 2024.

## 2023 in Review

### Server Community Survey

For the first time ever, the SSWG ran a developer community survey aimed at collecting feedback and information about the shape and breadth of the Swift server ecosystem.
We received a great response, and we'd like to thank everyone who participated!

We've analyzed the responses to help direct the workgroup's efforts, as well as provide visibility into how the ecosystem is doing. For example, while the majority of respondents already use Swift Concurrency, there remain challenges in some areas with adoption.
We also learned that there is a lot of interest in standardized tooling such as `swift-format` and `sourcekit-lsp`, and interest in building out support for various IDEs.

You can read the full [SSWG Community Survey 2024 Report](http://TODO) over on the Swift forums.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Placing a marker for @ktoso here


### Continued Focus on Growing the Ecosystem

The SSWG has continued to focus on growing the ecosystem by [incubating packages](/sswg/incubation-process.html) and providing guidance to package authors. We've seen a lot of new, in-development, and improved packages in the last year.

By participating in the [Google Summer of Code](https://www.swift.org/gsoc2024/), we were able to provide [swift-memcache-gsoc](https://github.com/swift-server/swift-memcache-gsoc), which makes it easier to communicate with Memcached servers. The wire protocol and higher-level connection APIs are done, with connection pools and key sharding on the roadmap.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
By participating in the [Google Summer of Code](https://www.swift.org/gsoc2024/), we were able to provide [swift-memcache-gsoc](https://github.com/swift-server/swift-memcache-gsoc), which makes it easier to communicate with Memcached servers. The wire protocol and higher-level connection APIs are done, with connection pools and key sharding on the roadmap.
By participating in the [Google Summer of Code](/gsoc2024/), we were able to provide [swift-memcache-gsoc](https://github.com/swift-server/swift-memcache-gsoc), which makes it easier to communicate with Memcached servers. The wire protocol and higher-level connection APIs are done, with connection pools and key sharding on the roadmap.


### Adoption of Structured Concurrency

We've seen a lot of progress on the adoption of Structured Concurrency. Most new libraries are adopting it, and we're working on a guide to help existing libraries adopt it as well.

Two big drivers of Structured Concurrency in the ecosystem have been [SwiftNIO's](https://github.com/apple/swift-nio) introduction of `NIOAsyncChannel` and the `ServiceGroup` in the rewritten ServiceLifecycle package. Together they are foundational pieces for higher-level libraries like [Hummingbird](https://github.com/hummingbird-project/hummingbird) and [gRPC](https://github.com/grpc/grpc-swift) to build logic using Structured Concurrency.

### Tooling Improvements

Tooling has seen some tremendous improvements in 2023 with the introduction of [Swiftly](https://github.com/swift-server/swiftly), [Dependabot for Swift](https://github.blog/changelog/2023-08-01-swift-support-for-dependabot-updates/), and [Chiseled Containers](https://forums.swift.org/t/swift-chiselled-containers/65993).

In addition, thanks to the introduction of Package Plugins, we've seen the [OpenAPI Generator](https://github.com/apple/swift-openapi-generator) make an entry. This plugin allows you to generate Swift boilerplate code from an OpenAPI specification. This is a great way to build both HTTP clients and servers.

### New Members

Since our update post of 2023, [Sven A. Schmidt](https://github.com/finestructure) has joined the workgroup. Sven has already been involved with the documentation workgroup and is known for his work on the [Swift Package Index](https://swiftpackageindex.com).

## Ecosystem

Last year, we saw seven new packages enter the SSWG incubation process. A tremendous amount of work has been done on these packages, showing how rapidly the ecosystem is expanding:

- **[Swift Distributed Actors (Cluster)](https://github.com/apple/swift-distributed-actors)** was accepted in January 2023. This package enables writing peer-to-peer clusters in Swift using distributed actors.
- **[Cassandra Client](https://github.com/apple/swift-cassandra-client)** was accepted in February 2023, providing a Swift client for Apache Cassandra.
- **[SQLiteNIO](https://github.com/vapor/sqlite-nio)** was accepted in September 2023. This package provides an SQLite driver for Swift, and is commonly used through Vapor's Fluent ORM.
- **[Swift Service Context](https://github.com/apple/swift-service-context)** and **[Swift Distributed Tracing](https://github.com/apple/swift-distributed-tracing)** were accepted in October 2023. These packages enable distributed tracing for Swift, rounding out the "three pillars of observability".
- **[DiscordBM](https://github.com/DiscordBM/DiscordBM)** was accepted in October 2023. DiscordBM is a Swift client for Discord's Bot API, and is the foundation of Vapor's Penny bot.
- **[Swift OpenAPI Generator](https://github.com/apple/swift-openapi-generator)** was also accepted in October 2023, providing a Swift code generator for OpenAPI specifications, enabling generating both servers and clients.

In addition, **[MongoKitten](https://github.com/orlandos-nl/MongoKitten)** was pitched and approved at the start of 2024. MongoKitten is a popular MongoDB driver for Swift.

## Goals for 2024

### Preparing for Swift 6

In preparation for Swift 6, we'll be looking at the impact of [strict concurrency checking](/documentation/concurrency/) across the server ecosystem. We are planning to enable strict checking on every incubated package and make each package compile warning-free under the strict checking rules.

### Adoption of Structured Concurrency

Adoption of Structured Concurrency has been going strong but the journey isn't finished. In the coming year, we'll be focusing on adopting Structured Concurrency in even more libraries, with the goal of making SwiftNIO an implementation detail of more and more libraries.

In addition to working on libraries, we are also planning work on more guides for developers of libraries and applications, describing how to adopt Structured Concurrency and the benefits it brings.

### Standardized HTTP Server and Middleware

In 2023, we've extensively prepared for a standardized HTTP server and middleware. The in-progress, Hummingbird rewrite is already taking advantage of the new [HTTP types](https://github.com/apple/swift-http-types). The goal for 2024 is to produce a low-level, general-purpose HTTP server package.

### Marketing Swift on the Server

Marketing Swift on the Server is a big focus area for 2024. With the introduction of the redesigned navigation of the [Swift.org](https://swift.org/) website, we'll be better able to showcase Swift on the Server.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
Marketing Swift on the Server is a big focus area for 2024. With the introduction of the redesigned navigation of the [Swift.org](https://swift.org/) website, we'll be better able to showcase Swift on the Server.
Marketing Swift on the Server is a big focus area for 2024. With the introduction of the redesigned navigation of the [Swift.org](/) website, we'll be better able to showcase Swift on the Server.


We're looking to create more content for the ecosystem, such as integrated example projects and showcases of existing server-focused projects.

In addition, we're looking to connect developers by organizing online user group meetings. We're currently planning the first Swift Server User Group meeting, with a goal of 3-4 meetings per year.

Finally, we're excited to see the return of the [ServerSide.swift](https://serversideswift.info) conference in 2024, hosted in London.