Apollo Federation 2 Compatibility - Showcasing Community Libraries

:wave: all! A little while back we posted details about the Apollo Federation subgraph library compatibility test suite we’re maintaining, as a way to help showcase community Federation compatible subgraph libraries and tools. The community feedback and participation we’ve received with regards to helping add new projects to the test suite has been incredible!

We now have many subgraph libraries across several different languages and frameworks represented, and have plans underway to help expand the support of existing libraries, and add several more! :tada: To help with this effort we just finished updating the subgraph compatibility test suite to check for Federation 2 subgraph spec support, which means we now have a new round of :x:’s to turn into :white_check_mark:’s :sweat_smile:. Quick example (head over here for the full table of supported subgraphs in the Federation Docs):

Language Library Federation 1 Support Federation 2 Support
Java / Kotlin Federation JVM
_service :white_check_mark:
@key (single) :white_check_mark:
@key (multi) :white_check_mark:
@key (composite) :white_check_mark:
@requires :white_check_mark:
@provides :white_check_mark:
@ftv1 :white_check_mark:
@link :white_check_mark:
@shareable :white_check_mark:
@tag :white_check_mark:
@override :white_check_mark:
@inaccessible :x:
JavaScript / TypeScript Apollo Server
_service :white_check_mark:
@key (single) :white_check_mark:
@key (multi) :white_check_mark:
@key (composite) :white_check_mark:
@requires :white_check_mark:
@provides :white_check_mark:
@ftv1 :white_check_mark:
@link :white_check_mark:
@shareable :white_check_mark:
@tag :white_check_mark:
@override :white_check_mark:
@inaccessible :white_check_mark:
JavaScript / TypeScript express-graphql
_service :white_check_mark:
@key (single) :white_check_mark:
@key (multi) :white_check_mark:
@key (composite) :white_check_mark:
@requires :white_check_mark:
@provides :white_check_mark:
@ftv1 :x:
@link :white_check_mark:
@shareable :white_check_mark:
@tag :white_check_mark:
@override :white_check_mark:
@inaccessible :white_check_mark:

We are very interested in working with library authors to help add Federation 2 support to the libraries that are already represented in the test suite, as well as helping get Federation 2 support into new libraries that aren’t yet represented. If you have experience with the libraries listed in the testing matrix and would like to join in the fun by helping implement Federation 2 support, definitely let us know! Or if you would like to have your project added to the compatibility suite, we’d love to hear about that as well! The subgraph library compatibility project CONTRIBUTORS guide dives into the specifics, but feel free to post any questions about this project here as well. Thanks all!

2 Likes
  • @link
    • Must be seen as a valid schema directive in the subgraph library service sdl. Is verified by checking for its inclusion in the query { _service { sdl } } result.

I didn’t see this referenced anywhere else in documentation, but does this mean we are supposed to resolve the directive definition from the @link directive? Also I’m unclear about which schema we need to apply the @link to, is it the outer schema where we have added the federation v1 directives, or the inner one returned by the sdl?