SSWG-0021: Swift Cassandra Client

The review of SSWG-0021: Swift Cassandra Client begins now and runs for two weeks, until February 2nd, 2023.


Reviews are an important part of the Swift Server Work Group incubation process . All review feedback should be either on this forum thread or, if you would like to keep your feedback private, directly to the review manager (via email) or direct message in the Swift forums).

The package is being proposed in Incubating maturity level, given it's long and successful use inside Apple. Please note the Maturity Justification inside the proposal for details.

The previous pitch thread is here: [Pitch] Swift Cassandra Client


What goes into a review of a proposal?

The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, become listed on the Swift Server Ecosystem index page.

When reviewing a proposal, here are some questions to consider:

  • What is your evaluation of the proposal and its APIs/implementation?
  • Is the problem being addressed relevant for the wider Swift on Server ecosystem?
  • Does this proposal fit well with the feel and direction of the Swift Server ecosystem?
  • If you have used other libraries in Swift or other languages, how do you feel that this proposal compares to those?
  • How much effort did you put into your review? A glance, a quick reading, or an in-depth study?

Thanks,
Konrad 'ktoso' Malawski
Review Manager

10 Likes

+1 one to this. It's a great addition to the Swift server ecosystem

As @0xTim mentioned in the pitch thread I would prefer this being proposed at sandbox level. It does not cover a number of the criteria for incubating level.

  • It doesn't have a stable API
  • It only has one user who is successfully using it in production (albeit a rather important one).

I imagine these will be overcome very quickly and the project can move up to incubating at that point.

1 Like

Thank you for the input everyone. There wasn't much action in the review thread, but we've taken into account the feedback from the pitch as well: [Pitch] Swift Cassandra Client

The SSWG has voted to accept, this proposal as-is, including its Incubating status.
The rationale is as follows:

  • Concerns were mentioned about the lack of stable API (the project is 0.x) and entering the process at Incubating level
    • The SSWG Incubation process is fairly "mechanical". The set of rules required to meet a specific incubation level is laid out in the incubation process document, and only the Graduated level requires a stable API. In a sense, getting to graduation is what the Incubation process is here for after all.
  • Concerns were raised about only 1 (at least, to our knowledge) user of this library potentially not meeting the "must have 2+ production users" requirement.
    • While it is true that there is "one user" in the sense of it being "Apple", it is being used in multiple projects, and is definitely load bearing for a number of important services (though they cannot be named explicitly). Considering this wide production use, and dedicated maintenance team we consider the "2+ users" requirement to be met, since there are various groups inside Apple using the library, and not just one part/project.

The project offers both async and future based APIs, with a focus on the async versions, which follows our SSWG recommendations.

As related outcome of this review, we will be updating the guidance about when wrapping C/C++ libraries is considered okey, and when it is frowned upon. Today the wording in the SSWG guides can be read a bit too shunning towards C/C++ wrappers. However, for some types of libraries, e.g. "fat clients" (such that have a lot of complex logic in them), wrappers are a very viable option. We'll soon update wording in guides to handle this nuance better, while still recommending pure Swift implementations whenever possible.

Overall, congratulations and we're looking forward to seeing more adoption of this library!

9 Likes