@sacha
Saw your mention on Grapher. Wanted to share my thoughts a bit. First of all thanks for the mention!
Apollo+GraphQL is a data layer, meaning mutations and data fetching are done through the same “system”, while Grapher is a secure data fetcher and relationship manager for MongoDB. I insist on secure, because securing a data graph was one of the biggest challenges I faced, what fields to allow/disallow, how deep can the graph go, and all this logic has been put into it.
So the only thing it has in common with Apollo graphql, is the fetching data as a graph thingie, except Grapher is MongoDB only. And the “query” is not a separate query language, it’s your friendly javascript object, which can be dynamic & manipulated with ease.
It’s tied to Meteor because we wanted reactivity (Something that Apollo does not have and does not plan on supporting officially), it can be untied from Meteor, but it then becomes tied to MongoDB and we can still expose it to NPM. However, for now that’s not in the plan, you want to use this software ? Go Meteor, it’s something exclusive, it’s crafted for it.
Keep in mind, you can have links that communicate with any type of database:
But you need your root to stay in Mongo.
We had to make a hard choice on grapher: “Satisfy all databases” / “Make MongoDB fetching performant as hell”. We chose the latter from our business perspective. Also, we can integrate Grapher into Apollo for it to benefit from the technology we built for highly performant mongodb queries.
How performant ?
Apollo cannot do this, not because they don’t want to but because what we built specifically applies to MongoDB and uses its technologies to achieve this.
Grapher was the first step in scaling Meteor, by allowing us to link data with ease and fetch it without hassles, securely and without boilerplate. Next step was Redis Oplog, which today is now released on atmosphere:
https://atmospherejs.com/cultofcoders/redis-oplog
There is a very important principle in programming (and in life):
“I don’t know the key to success, but the key to failure is trying to please everybody”
Apollo, is something that would have Grapher integrated in it. It’s not a replacement for it, for sure!