# Apollo Federation - Subgraph Library Maintainer Support

**URL:** <https://community.apollographql.com/t/apollo-federation-subgraph-library-maintainer-support/1112>\
**Category:** Announcements\
**Tags:** server, federation\
**Created:** [August 17, 2021, 1:57am UTC](https://community.apollographql.com/t/apollo-federation-subgraph-library-maintainer-support/1112 "2021-08-17T01:57:24Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![michael-watson](https://sea1.discourse-cdn.com/flex019/user_avatar/community.apollographql.com/michael-watson/32/739_2.png) [@michael-watson](https://community.apollographql.com/u/michael-watson)\
**Post date:** [August 17, 2021, 1:57am UTC](https://community.apollographql.com/t/apollo-federation-subgraph-library-maintainer-support/1112/1 "2021-08-17T01:57:24Z")

</div>

**[[CTA] Add/upvote your favorite GraphQL library, platform or framework in the repo!](https://github.com/apollographql/apollo-federation-subgraph-compatibility#latest-results)**

Hello Apollo Federation Community!

We want to thank the maintainers of all the Apollo Federation libraries out there for their hard work. Your hard work has helped us establish our [current documentation on other servers with Apollo Federation](https://www.apollographql.com/docs/federation/other-servers/). The time has come for us to establish a better level of support for these libraries maintainers and establish a base foundation for us all. If we haven’t had the pleasure of meeting in the past, my name is Michael Watson and I’m the Developer Advocate for Apollo Federation. I’ve worked with Apollo Federation alongside dozens of Enterprises since it’s inception and it’s been amazing seeing how many languages you can use to create federated subgraphs!

One challenge I’ve seen organizations face is having different features supported (or not) in the various language/implementations tested out. We’ve started up [a new repository](https://github.com/apollographql/apollo-federation-subgraph-compatibility)with the goal of creating a solution that gives a granular understanding of any Apollo Federation library implementation’s spec compliance. [The repository outlines the current testing for spec compliance](https://github.com/apollographql/apollo-federation-subgraph-compatibility#testing-spec-compliance)which is what would be used to test any implementation. To accomplish this, we need to have a common schema that can be implemented by various library maintainers that can be used in this strategy.

A [set of subgraph schemas](https://github.com/apollographql/apollo-federation-subgraph-compatibility#subgraph-schemas) has been created as the common schema; they provide the minimum required to test the Apollo Federation specification. This will common schema will change as needed with the evolution of Apollo Federation. The common schema is made up of three subgraphs:

- [Users](https://github.com/apollographql/apollo-federation-subgraph-compatibility#users) - [This subgraph is provided by the repository](https://github.com/apollographql/apollo-federation-subgraph-compatibility/tree/main/subgraphs/users)
- [Inventory](https://github.com/apollographql/apollo-federation-subgraph-compatibility#inventory) - [This subgraph is provided by the repository](https://github.com/apollographql/apollo-federation-subgraph-compatibility/tree/main/subgraphs/inventory)
- [Product](https://github.com/apollographql/apollo-federation-subgraph-compatibility/blob/main/implementations/_template_/products.graphql) - This subgraph is written by Apollo Federation library maintainers. There are some [example implementations](https://github.com/apollographql/apollo-federation-subgraph-compatibility/tree/main/implementations) in it that can be used for reference

Maintainers of Apollo Federation implementation libraries would implement the `Product` schema in their own folder within this repository to be included in the referenced tests. This is all automated through docker and using `docker-compose` ; this means implementors are responsible for packaging their example into a docker image that can be used in a standardized `docker-compose.yaml` file provided in the repository. The testing workflow can be summarized as:

1. Setup project for test

2. `npm install` packages for the `users` , `inventory` and `graph-router` services

3. Build supergraph SDL for `graph-router` using `rover supergraph compose`

4. Build `users` , `inventory` and `graph-router` docker images

5. For each folder in the `implementations` folder…

6. `docker-compose up` the `docker-compose.yaml` file at root of folder  
_Note: the `products` service in the `docker-compose.yaml` has `build: .` which will build the docker image prior to bringing up all the services_

7. Run spec compliance tests and store results in memory

8. Take all test results and create a table in a markdown file that can be used for Apollo Documentation

_Note: A [GitHub Action](https://github.com/apollographql/apollo-federation-subgraph-compatibility/blob/main/.github/workflows/release.yaml) is used to to automate this testing and upload the results as an GitHub release with the markdown file asset_

This is hopefully the first step to establishing an even stronger foundation for the community that has supported themselves so well. We also created a simple [Maintainers Contributor Guide](https://github.com/apollographql/apollo-federation-subgraph-compatibility/blob/main/CONTRIBUTORS.md) for anyone that wants to contribute back to this repository. We’ve used it internally to add in `apollo-server`, `federation-jvm` , `ariadne` , and `graphene` (with hopefully some more to come soon!). If you are a maintainer and need anything, please feel free to post in this thread or reach out to me directly! We want to help and this strategy will evolve over time to meet the needs of our community.

---

<div class="post-metadata">

**Author:** ![michael-watson](https://sea1.discourse-cdn.com/flex019/user_avatar/community.apollographql.com/michael-watson/32/739_2.png) [@michael-watson](https://community.apollographql.com/u/michael-watson)\
**Post date:** [August 18, 2021, 7:00pm UTC](https://community.apollographql.com/t/apollo-federation-subgraph-library-maintainer-support/1112/2 "2021-08-18T19:00:47Z")

</div>



---

<div class="post-metadata">

**Author:** ![kdawgwilk](https://sea1.discourse-cdn.com/flex019/user_avatar/community.apollographql.com/kdawgwilk/32/1015_2.png) [@kdawgwilk](https://community.apollographql.com/u/kdawgwilk)\
**Post date:** [October 5, 2021, 1:01am UTC](https://community.apollographql.com/t/apollo-federation-subgraph-library-maintainer-support/1112/3 "2021-10-05T01:01:08Z")

</div>

I put up a PR adding new support for a new subgraph library I built for Elixir [Add absinthe\_federation implementation by kdawgwilk · Pull Request #35 · apollographql/apollo-federation-subgraph-compatibility · GitHub](https://github.com/apollographql/apollo-federation-subgraph-compatibility/pull/35) I would love to get that merged upstream

---

<div class="post-metadata">

**Author:** ![hwillson](https://sea1.discourse-cdn.com/flex019/user_avatar/community.apollographql.com/hwillson/32/9_2.png) [@hwillson](https://community.apollographql.com/u/hwillson)\
**Post date:** [April 12, 2022, 10:20pm UTC](https://community.apollographql.com/t/apollo-federation-subgraph-library-maintainer-support/1112/4 "2022-04-12T22:20:30Z")

</div>



---

<div class="post-metadata">

**Author:** ![system](https://sea1.discourse-cdn.com/flex019/user_avatar/community.apollographql.com/system/32/5529_2.png) [@system](https://community.apollographql.com/u/system)\
**Post date:** [February 7, 2025, 12:06am UTC](https://community.apollographql.com/t/apollo-federation-subgraph-library-maintainer-support/1112/5 "2025-02-07T00:06:50Z")

</div>



---

<div class="post-metadata">

**Author:** ![system](https://sea1.discourse-cdn.com/flex019/user_avatar/community.apollographql.com/system/32/5529_2.png) [@system](https://community.apollographql.com/u/system)\
**Post date:** [February 10, 2025, 8:39pm UTC](https://community.apollographql.com/t/apollo-federation-subgraph-library-maintainer-support/1112/6 "2025-02-10T20:39:45Z")

</div>


