Hello everyone,
the SSWG team came together to review and update the maturity levels of SSWG endorsed projects recently and we'd like to share the results with you.
The projects currently endorsed by the server work group can be found here: Swift.org - Swift Server Work Group (SSWG) and we'll be updating their status (according to the changes outlined in this post) shortly.
Keep in mind that the SSWG endorsement's purpose is not to pick the "best" library, but only ensure that long-term health and quality of these projects is kept to a high standard.
You can learn more about what each status in the Incubation Process means over here: sswg/incubation.md at master · swift-server/sswg · GitHub
This year we also introduced a "conditional level-up" given that the review is a periodic (currently every 6 months) process, and we had a few packages which were just on the edge of moving up a level and we'd rather collaborate with their maintainers to polish them up rather than have them miss a cycle.
Projects not mentioned in the list below, remain in their current status. We discussed all projects in depth, however to keep this list short and focused, we only mention projects which changed their status, or deserve more discussion on why they remain in the current status (e.g. why they didn't graduate yet).
-
SwiftMetrics
- has gained good adoption throughout the ecosystem, both in libraries, frameworks and end-users directly adopting the API successfully.
- not well documented release methodology preventing graduation
- @ktoso submitted documentation here already: [SSWG] document release process by ktoso · Pull Request #100 · apple/swift-metrics · GitHub
- good amount of production use both in open source and commercial projects
- Recommendation:
- conditional on documenting the release methodology: promote from Incubating to Graduated
-
PostgresNIO
- has gained a good amount of usage
- has major major internal work & potential API changes upcoming
- Recommendation:
- stay in Incubating
-
RediStack
- has gained adoption and is a great project overall
- single maintainer requirement is preventing it from graduating to Incubating
- Recommendation:
- stay in Sandbox
-
SwiftAPNS
- lacking secondary maintainer, Kyle the primary maintainer would love to find a collaborator so we could move the project to the next maturity phase though -- if you're interested, please reach out!
- Recommendation:
- stay in Incubating
-
SwiftStatsdClient
- pretty small project and no changes in API or functionality are anticipated
- recently tagged 1.0 version: Release 1.0.0 release · apple/swift-statsd-client · GitHub
- is adopted by various real projects in the wild and works well enough for them
- Recommendation:
- promote from Sandbox to Incubating
- SwiftPrometheus
-
gRPC Swift
- project is widely used in various organizations and has a dedicated team supporting it
- Recommendation:
- promote to Graduated
-
Swift Crypto
- guarantees around API of Swift Crypto and its evolution are somewhat tied to Apple platforms, so defining it purely in terms of SSWG maturity is a bit tricky.
- Recommendation:
- stay in Incubating
-
OpenAPIKit
- Smoke framework integrating into their code generation tooling supporting production use cases
- Not quite wide enough adoption to promote to next level just yet
- Recommendation:
- stay in Sandbox
-
MongoSwift
- confirmed a few significant production use-cases
- has dedicated and responsive team supporting the project
- Recommendation:
- promote from Sandbox to Incubating
-
Swift AWS Lambda Runtime
- confirmed significant production use-cases via vapor and other communities
- significant API changes coming after Swift 5.5 lands, so team recommends keeping in Sandbox until the API stabilizes.
- Recommendation:
- Stay in Sandbox until 1.0 with stable API is released, then may promote to Incubating
-
Backtrace
- real solution to this would be done on the language level, no need to promote this package further than its current level.
- should be used through Lifecycle most of the time rather than directly -- such documentation was added to the README: https://github.com/swift-server/swift-backtrace/pull/50
- Recommendation:
- stays in Incubating
-
Service Lifecycle
- expected API changes for async await, however possible in additive non-breaking ways
- Conditional Recommendation:
- needs better documentation around usage and integrating with other frameworks
- tag 1.0 and commit to stable API
- conditional on the two points above, promote to Incubating
-
Soto for AWS
- confirmed use-cases in various communities
- project is well supported and maintained
- fairly stable API, though will change/gain async/await support following SSWG guidance
- Recommendation:
- promote from Sandbox to Incubating
The remaining projects, e.g. AsyncHTTPClient (Graduated), SwiftNIO (Graduated) and similar ones receive no changes to their status. You can check the full list of projects here: Swift.org - Swift Server Work Group (SSWG)
We would also like to use this opportunity to mention that RediStack and SwiftAPNS specifically are very much interested in getting new contributors and maintainers -- if these domains are of interest to you please reach out here or in the appropriate repositories!
It would help those projects reach the next maturity level if we could confirm there are more active maintainers on them
We will continue to revise and think about the maturity levels and requirements as well, so make sure they suit the needs of the ecosystem.
We're excited to see all those projects mature and grow communities around them, and we're already looking forward to the next maturity update cycle!
SSWG Team