Description
The problem
Currently server integrations are split into separate repos:
- https://github.com/graphql-python/flask-graphql/
- https://github.com/graphql-python/sanic-graphql/
- https://github.com/graphql-python/aiohttp-graphql
- https://github.com/graphql-python/webob-graphql/
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.