Pitch - GraphQL

I'd like to pitch the GraphQLSwift organization's GraphQL library to the SSWG incubation process. This library is a Swift port of the JavaScript reference GraphQL implementation, written on top of Swift NIO. It provides full server-side instrumentation for defining GraphQL schemas, resolving queries, and encoding/decoding GraphQL messages.

Motivation

GraphQL is an increasingly common web API technology that improves client overfetching and reduces network communication between clients and servers.

Proposed solution

This package is already released and in use. In fact, as far as I can tell, it is the only open-source GraphQL spec implementation in Swift. All other implementations I could find are either forks or depend upon the proposed package. The repository averages about 70 clones per week, and underpins other popular server-side GraphQL packages, such as Graphiti and GraphZahl, both of which are listed in the graphql.org's Swift server language support section.

As for improvements, detailed usage documentation should be added. While the tests provide some examples, adding usage narratives in the readme would certainly be helpful.

Also, while this package defines all the primitives needed for GraphQL, constructing schemas is clunky. In fact, simplifying schema definition is the focus of many of the inheriting packages, including Graphiti. We should discuss whether the proposed GraphQL package should be modified to contain schema definition tools, or whether those overlays should be considered separately.

Thanks so much for considering!!

30 Likes

This is very cool! I'm in favour of this being adopted by the SSWG.

4 Likes

Great work and definitely a nice addition!

Thank you for the pitch! Let's do a formal proposal and get it through the process :slight_smile:
Details here: https://github.com/swift-server/sswg/blob/main/process/incubation.md

Specifically refer to this bit:

Proposals are submitted to the SSWG by creating a PR that adds the proposal document to the proposal directory. Proposals follow a template and include the following information: ...

I can serve as the sswg representative to shepard this proposal through the process -- if you'd need any help please reach out :slight_smile:

One of the important questions will be which level this should be accepted as; please have a look at the requirements we list on the linked process page and let's see where this project would fit :slight_smile:

1 Like

+1 this sounds like a great addition

Awesome, thanks for the feedback! I'll get the formal proposal process started :+1:

2 Likes

Awesome, I've created a formal proposal in github. @ksoto, please reach out to me with any input or suggestions :slight_smile: . Thanks again!

1 Like

Awesome, I skimmed the proposal and only have nitpick to clean it up -- looks good! Thank you for going through the maturity level checklist, I don't foresee any issues here :slight_smile:

We chatted with other SSWG members and there's support for accepting the package, let's follow the process and get another formal +1 here and I'll then move this into a formal review :+1:

@0xTim or @adam-fowler want to add your +1 to meet the formal requriement to move to review phase?

cc @server-workgroup

1 Like

Ah, one thing, we thought that it's probably worth pitching the GitHub - GraphQLSwift/Graphiti: The Swift GraphQL Schema framework for macOS and Linux library together with this, as they kind of go hand in hand, right? WDYT?

I don't think we need a separate pitch, I assume it is maintained by same folks? We'd just need to add it to the * Implementation: [GraphQL](https://github.com/GraphQLSwift/GraphQL) section in the proposal.

1 Like

+1 from me - I think this library would be a valuable addition to the incubation process and for the ecosystem.

Also agree that Graphiti should probably be bundled in with the same proposal

2 Likes

+1 from me as well

This is a great addition to the ecosystem.

I have had some experience working with this library and have made a few minor changes. In general it is easy to work with. I also think we should include Graphiti the schema authoring library with this pitch.

2 Likes

Awesome, thanks for the support guys! I've updated the proposal to include Graphiti as well.

Looking good, let’s kick off the review on Monday :-) I’ll handle be the review manager and post that thread :+1:

1 Like

Review thread has been kicked off: SSWG-0019: GraphQL & Graphiti

1 Like