graph-gophers / graphql-go

GraphQL server with a focus on ease of use
BSD 2-Clause "Simplified" License
4.65k stars 492 forks source link

Unlist Support for Apollo Federation? #554

Closed steve-gray closed 1 year ago

steve-gray commented 1 year ago

There's #528 tracking the wider issue, however in the interim I'd suggest potentially some changes to the package. At the moment it'd be fairly misleading for anyone who picks up this package to see those release notes, or the examples folder and be able to assume it supports federation. At a mechanical level you can basically stitch schemas, but all of the smarts for routers, directives, the ability to actually connect entities from subgraphs today is non-existent.

To avoid confusion (like how I got caught out), I'd suggest maybe....

pavelnikolov commented 1 year ago

@steve-gray I'm sorry to hear that you have had such an experience. I'll consider improving the documentation to explicitly mention that we do not offer full feature coverage for Apollo Federation. It's just a bare minimum _service field in the schema.

steve-gray commented 1 year ago

All good.

The main issue is that the schema annotations are unsupported as are the other entity lookups - meaning it's not possible to use this to power a sub-graph. We're using Apollos federation router.

Hopefully support for that would be easier to achieve / however in the here and now we're just having to face up to a very painful migration of a massive project to gcqlgen at short notice.

It's something that took the utility from "I love this package and I'm a graph-gopher till I die..." to zero once we had the need.

pavelnikolov commented 1 year ago

As requested:

  1. I have mentioned in the Apollo Federation example:

    NOTE: This library doesn't support the full Apollo Federation subgraph spec!

  2. I added a clarification in the v1.4 release notes that we have only added support for the _service field.
pavelnikolov commented 1 year ago

@steve-gray I'm happy to announce that this library now fully support all features from the GraphQL spec need in order to implement the Apollo Federation Subgraph spec.

For more information check the README.md: https://github.com/graph-gophers/graphql-go/tree/master/example/federation/compatibility

The code needed to support Apollo Federation is in the latest master branch. I expect to release it with v1.6.0 soon.