SN is a strange solution if we were starting from scratch, but given the requirements, it makes sense.
- We cannot make breaking changes to GraphQL
- Developers must be able to evolve their services without doing full rewrites
- We must continue to support both advanced clients (Relay, Apollo, etc) and simple clients (curl, etc)
- Some GraphQL clients use caches
- Data produced by GraphQL services has to be trustworthy, so apps can trust the data in their caches
- In addition to existing GraphQL services, we must also cater to future GraphQL services