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
Changes from 16 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
83 changes: 83 additions & 0 deletions _posts/2024-02-01-sswg-update-2024.md
@@ -0,0 +1,83 @@
---
layout: post
published: false
date: 2024-03-01 10:00:00
title: SSWG 2024 Annual Update
author: [Joannis, ktoso, FranzBusch]
---

In this yearly post, the Swift Server WorkGroup (SSWG) reflects on the community, ecosystem wide accomplishments and the WorkGroup's focus areas for the year ahead.
Joannis marked this conversation as resolved.
Show resolved Hide resolved

Since our [previous update post](/blog/sswg-update-2023/), Swift on the Server has continued to mature.

Joannis marked this conversation as resolved.
Show resolved Hide resolved
Let's start with a review of the progress made in 2023, before looking at the next steps in 2024.
Joannis marked this conversation as resolved.
Show resolved Hide resolved
Joannis marked this conversation as resolved.
Show resolved Hide resolved

# 2023 in Review
Joannis marked this conversation as resolved.
Show resolved Hide resolved

## Continued focus on growing the ecosystem
Joannis marked this conversation as resolved.
Show resolved Hide resolved

The SSWG has continued to focus on growing the ecosystem by incubating packages and providing guidance to package authors. We've seen a lot of new, in development and improved packages this year. One example of a new packages is `swift-memcache-gsoc` which was developed as part of last years Google summer of code. The wire protocol and higher level connection APIs are done. The remaining work is implementing a connection pool and key sharding. The SSWG is looking forward to continued work on this package.
Joannis marked this conversation as resolved.
Show resolved Hide resolved
Joannis marked this conversation as resolved.
Show resolved Hide resolved

## 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 introduction of `NIOAsyncChannel` and the `ServiceGroup` of the rewritten ServiceLifecycle package. Together we see both of them as foundational pieces for higher level libraries to build their logic using Structured Concurrency. For example Hummingbird and GRPC are currently being rewritten from the ground up using those two building blocks.
Joannis marked this conversation as resolved.
Show resolved Hide resolved
Joannis marked this conversation as resolved.
Show resolved Hide resolved

## Tooling Improvements

Tooling has seen some tremendous improvements in 2023. We've seen the introduction of Swiftly, Dependabot for Swift and Chiseled Containers.
Joannis marked this conversation as resolved.
Show resolved Hide resolved

In addition, thanks to the introduction of Package Plugins, we've seen the OpenAPI Generator make an entry. This plugin allows you to generate Swift boilerplate code from an OpenAPI specification. This is a great way for building both HTTP clients and servers.
Joannis marked this conversation as resolved.
Show resolved Hide resolved

## Server Community Survey
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd consider leading with this! It's probably the most interesting part to most readers.


For the first time, we did run a developer community survey, aimed at collecting feedback and information about the shape and breadth of the Swift Server ecosystem.
Joannis marked this conversation as resolved.
Show resolved Hide resolved
We received a huge amount of responses, for which we'd like to thank everyone!

We analyzed the responses and used them to how we're doing with current efforts, and help direct the group's goals and efforts in the upcoming year (see below).
Copy link
Contributor

Choose a reason for hiding this comment

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

and used them to how -> and used them to figure out how

Missing some info there

For example, while the majority of respondents already use Swift Concurrency, there remain challanges in some areas with adoption.
Copy link
Contributor

Choose a reason for hiding this comment

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

challanges -> challenges

Among the highlights that shaped our goals for the next year were: a huge interest in standardized tooling for e.g. swift-format, as well as sourcekit-lsp and various IDEs.
Joannis marked this conversation as resolved.
Show resolved Hide resolved
Joannis marked this conversation as resolved.
Show resolved Hide resolved

We highly encourage you to have a look at the full [SSWG Community Survey 2024 Report](http://TODO), over on the Swift forums!
Copy link
Member

Choose a reason for hiding this comment

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

TODO: When we're ready to post I will make the forums post and then we merge the blog


## 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 Swift Package Index.
Copy link

Choose a reason for hiding this comment

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

Suggested change
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 Swift Package Index.
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've seen 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.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Anything to say about the incubation process in general?


- **Swift Distributed Actors (Cluster)** was accepted in January 2023. This package allows you to write peer-to-peer clusters in Swift, using distributed actors.
Copy link

Choose a reason for hiding this comment

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

Suggested change
- **Swift Distributed Actors (Cluster)** was accepted in January 2023. This package allows you to write peer-to-peer clusters in Swift, using distributed actors.
- **Swift Distributed Actors (Cluster)** was accepted in January 2023. This package enables writing peer-to-peer clusters in Swift using distributed actors.

- **Cassandra Client** was accepted in February 2023, providing a Swift client for Apache Cassandra.
- **SQLiteNIO** 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** and **Swift Distributed Tracing** were accepted in October 2023. These packages enable distributed tracing for Swift. Rounding out the three pillars of observability.
Joannis marked this conversation as resolved.
Show resolved Hide resolved
- **DiscordBM** was accepted in October 2023. DiscirdBM is a Swift client for Discord's Bot API, and is used in Vapor's Penny bot.
Joannis marked this conversation as resolved.
Show resolved Hide resolved
Copy link

Choose a reason for hiding this comment

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

Suggested change
- **DiscordBM** was accepted in October 2023. DiscirdBM is a Swift client for Discord's Bot API, and is used in Vapor's Penny bot.
- **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** was also accepted in October 2023, providing a Swift code generator for OpenAPI specifications, allowing you to generate both servers and clients.
Copy link

Choose a reason for hiding this comment

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

Suggested change
- **Swift OpenAPI Generator** was also accepted in October 2023, providing a Swift code generator for OpenAPI specifications, allowing you to generate both servers and clients.
- **Swift OpenAPI Generator** was also accepted in October 2023, providing a Swift code generator for OpenAPI specifications and enabling generation of both servers and clients.


In addition, **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 the strict concurrency checking 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.
Joannis marked this conversation as resolved.
Show resolved Hide resolved

## Adoption of Structured Concurrency
Copy link
Collaborator

Choose a reason for hiding this comment

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

Repeating my comment above, this feels like a perennial goal. How can this be better framed in terms of progress, work to be done, etc.?

Copy link
Member

Choose a reason for hiding this comment

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

@Joannis how about we state this as sswg maintained libs being expressed in surface APIs in concurrency concepts. Compatibility with service lifecycle etc?


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.
Joannis marked this conversation as resolved.
Show resolved Hide resolved

In addition to working on libraries, we are also planning to work on more guides for developers of libraries and applications on how they can adopt Structured Concurrency and what benefits it brings.
Joannis marked this conversation as resolved.
Show resolved Hide resolved

## Standardised HTTP Server and Middlewares
Joannis marked this conversation as resolved.
Show resolved Hide resolved

In 2023, we've extensively prepared for a standardised HTTP server and middlewares. The in progress, Hummingbird rewrite is already taking advantage of the new HTTP types. The goal for 2024 is to produce a low-level general purpose HTTP server package.
Joannis marked this conversation as resolved.
Show resolved Hide resolved
Joannis marked this conversation as resolved.
Show resolved Hide resolved

## 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](swift.org) website, we'll be able to better showcase Swift on the Server.
Joannis marked this conversation as resolved.
Show resolved Hide resolved

We're looking to create more content for the ecosystem, such as integrated example projects and showcases of Swift-Server projects.
Joannis marked this conversation as resolved.
Show resolved Hide resolved
Joannis marked this conversation as resolved.
Show resolved Hide resolved

In addition, we're looking to connect developers by organising online user group meetings. We're currently planning the first Swift Server User Group meeting, with our goal being three or four meetings per year going forward.

Finally, we're seeing a new edition of the [Swift Server Conference](https://serversideswift.info) in 2024, which will be hosted in London.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Should be the proper name of the conference, e.g. "ServerSide.swift".

Copy link
Collaborator

Choose a reason for hiding this comment

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

Any concluding thoughts?