graphql-python / graphql-server

This is the core package for using GraphQL in a custom server easily
MIT License
120 stars 72 forks source link

RFC: Merge `flask-graphql`, `sanic-graphql` etc into `graphql-server-core` #34

Closed jkimbo closed 4 years ago

jkimbo commented 4 years ago

The problem

Currently server integrations are split into separate repos:

And they are all depend on https://github.com/graphql-python/graphql-server-core

The issue with this is that each framework specific library shares a lot of code with the other libraries and it's hard to coordinate cross cutting changes.

The solution

The suggestion is that we merge the framework specific code into the grapqhl-server-core library so that the code is consolidated into 1 place. That way it's much easier to share code and keep things up to date.

To install the integration with flask for example:

pip install graphql-server-core[flask]

Then you can use it by:

from grapqhl_server.flask import GraphQLView

...

Drawbacks

It will make the graphql-server-core library harder to maintain. At the moment it is very small and easy to test. Merging in the other server libs will make the library become more complex, harder to test (you will need to install all of the dependencies for testing) and easier to accidentally add unneeded dependencies. Any contributions will have to make sure they don't break other server variants supported by the library which they are not familiar with.

Alternatives

We keep the separation of libraries and try and consolidate folder layout and coding standards.

List of packages to merge

jkimbo commented 4 years ago

@KingDarBoja is going to make a first go at this with integrating flask-graphql into this library.

KingDarBoja commented 4 years ago

Alright, flask-graphql got merged into this, next one should be sanic-graphql.

jnak commented 4 years ago

I'm definitely in favor of this change. I've identified improvements in flask-graphql that would entail touching all the different server integration repos.

KingDarBoja commented 4 years ago

This is finally done! All four backend servers are merged into graphql-server-core.

jkimbo commented 4 years ago

Great work @KingDarBoja ! Going to close this issue now.

Cito commented 4 years ago

Time to rename this from "graphql-server-core" to probably just "graphql-server" now. :)