GraphQL Ecosystem

About me! ๐ค
ย
- Write code! - mostly for fun ๐
 - Love to play Football โฝ
 - Working with Prisma (prisma.io) on OSS ๐ผ
 - Twitter (and across internet): @divyenduz ๐ฆ
 
Aim ๐ณ
- Cover width and not depth of the GraphQL stack ๐ต๏ธโโ๏ธ
 - Save you tons of research time โ
 - Challenges
- Engineering ๐ฉโ๐ป
 - Human ๐
 
 - Help you get started on OSS โค๏ธ
- This is an ongoing discussion
Find me @divyenduz on ๐ฆ - DM are open! 
 - This is an ongoing discussion
 
GraphQL

- Single Endpoint for all data โ๏ธ
 - Contract between client and server ๐๏ธ
	
- Static analysis/optimization/safety
 - Decoupled client/server
 
 - SDL
 
GraphQL


Origin ๐ฐ
- Mobile development at Facebookย
 - Open sourced in 2015 (started in 2012)
	
- Language agnostic
 - Transport agnostic
 - What was open sourced?
 
 


Reference Implementation in JS
Spec
The Ecosystem โ๏ธ
- graphql-import
 - graphql-config
 - graphql-cli
 - graphql-tools
 - graphql-binding
 - VSCode GraphQL
 - ----------------------------------------
 - Clients
- graphql-request/Apollo/urql/relay
 
 - Servers
- graphql-yoga/apollo-server
 
 - More
- Playground
 
 
graphql-import
- SDL does not have an import system
 - Good: Intelligent auto-import
 - Bad: The comment syntax
 - Challenges:
	
- Upcoming features
 - Collisions
 - Cyclic imports
 
 
https://github.com/prismagraphql/graphql-import

graphql-config
- Language agnostic configuration
 - Good: Supported by a lot of tools in Ecosystem
 - Bad: Too many variations (opinion)
 - Challenges:
	
- Adoption
 - Simplification
 
 
https://github.com/prismagraphql/graphql-config
graphql-cli
- Common development workflows
 - Good: Awesome getting started experience
	
- graphql create, get-schema, lint etc
 - graphql codegen: code generation
 - graphql-config
 - Language agnostic
 
 - Bad*: Open issues that need love ๐ค
 - Challenges:
	
- Powerful plugin system
 
 
https://github.com/graphql-cli/graphql-cli
graphql-tools
- Powerful yet easy abstraction over graphql-js ๐
 - Good: Schema stitching ๐
	
- Architectures*
 - Delegation
 - graphql-binding
 
 - Bad: Only exists in JS 1๏ธโฃ
 - Challenges:
	
- Implementation in other languages
 
 
https://github.com/apollographql/graphql-tools
graphql-binding
- Auto-generated SDK for your GraphQL API ๐
 - Supports schema stitching & codegen
 - Good: Amazing developer experience, type safety
 - Bad: Only exists in JS 1๏ธโฃ
 - Challenges:
	
- Abstraction overhead
 
 - Resources: https://w3z.in/42f3a
 
https://github.com/graphql-binding/graphql-binding

VSCode GraphQL
- Language service protocol โค๏ธ
 - Auto-completion, highlighting, lint ๐ฉโ๐ป
 - Integrated development experience ๐คฏ
 - Good: Reduced context switch ๐
 - Bad: Edge cases need some love ๐ช
 - Challenges:
	
- Client queries mapping
 
 - Upcoming:
	
- Execute GraphQL operations โฉ
 
 
https://github.com/prismagraphql/vscode-graphql
Important Note about OSS
- Humans ๐คนโโ๏ธ
 - Empathy ๐ค
 - Help/join ๐
 
Questions? ๐ค
Feedback ๐
https://www.divyendusingh.com
Thank you ๐
GraphQL Ecosystem
By Divyendu Singh
GraphQL Ecosystem
- 583