typelevel / governance

Typelevel governance
Creative Commons Attribution 4.0 International
8 stars 1 forks source link

Project Submission: Grackle GraphQL #110

Closed milessabin closed 1 year ago

milessabin commented 1 year ago

Project Name

Grackle GraphQL

Project Short Description

Grackle is a purely functional GraphQL engine built for the Typelevel stack, designed for applications built with Cats, Cats Effect, FS2, http4s, Doobie and Skunk.

The project is maintained on github and published under an open source licence for Scala 2 and 3; and JVM, JS and native targets.

Project Type

In accordance with the Typelevel Charter, I am proposing the project be a:

Project Management

Both the above are linked to from the projects README.

About the Project

The project was initially created by AURA/Gemini to support the end-user and internal interface for all components of their next-generation observatory control system.

Shortly after its inception it was adopted by ITV for its ITVX streaming service where it now delivers content-related metadata to all forms of streaming client and to distribution partners; and article metadata for the ITV news site.

A significant motivation for its creation was the lack of alternatives which integrated smoothly with the broader Typelevel ecosystem. As such it has been built with a foundation in cats, cats-effect, fs2, and with special attention to backing GraphQL interfaces with functional database abstractions such as Typelevel's doobie and skunk.

GraphQL is a query language for typed APIs. Talk of languages and types leads naturally to thinking about evaluating GraphQL queries as involving type checking, interpretation and compilation. A common functional approach to compilation and interpretation is the "programs as values" model, and this is model that Grackle adopts.

Grackle compiles GraphQL queries into programs in a simple internal query language, type checks those programs, transforms them in a variety of ways (for instance to map a GraphQL query onto an efficient SQL query, or to compose several independent APIs into a single uniform API) and then interprets the resulting program to execute the query.

Motivation for this submission

jducoeur commented 1 year ago

@typelevel/steering: please vote with reaction on the issue. ๐Ÿ‘ for yes, ๐Ÿ‘Ž for no, ๐Ÿ‘€ to abstain. Voting is open three business days (through Friday, June 23) and until quorum (7) is reached.

rossabaker commented 1 year ago

Thanks, @jducoeur. Apologies, I've had a tumultuous week and this is the first it floated onto my GitHub notifications.

We're already at quorum, and it only needs one more :+1: to assure the 3/4 vote and move this along before Friday. It would be nice, after I introduced a delay being asleep at the wheel.

rossabaker commented 1 year ago

Approved with 9 ๐Ÿ‘, which is both a quorum and enough to assure the supermajority. Migration steps are tracked in #111.

milessabin commented 1 year ago

Thanks! :tada: