Extending the Limits of GraphQL - Syrus Akbary
Eric Baer (@ebaerbaerbaer)
About the Speaker Syrus Akbary (@syrusakbary) is a prolific contributor in the GraphQL community. He has written and maintained ~20 packages including Python's graphene server and the Django integration graphene-django. I got the chance to hang out with him at the GraphQL, and you would be hard-pressed to find anybody more excited about GraphQL, and it's ecosystem.
Graphene (Python) Today
Python Graphene was one of the first significant community projects to develop after the initial GraphQL announcement and is just a little over two years old now. Apart from the GraphQL-js reference implementation, it is the most starred GraphQL project on GitHub. Yes, that an imperfect metric, but it shows that there are a lot of people excited about what Graphene is doing.
There are around 100 companies that are using Graphene in production, and by the looks of Syrus's graphs, it's growing like crazy - especially in the last ten or so months.
Announcement: Graphene 2.0
Graphene's internals have been reworked almost a half dozen times now, Syrus has some real war stories he can tell about how he tried to make it faster while preserving the API surface. Now, a couple of years later, Syrus has a few new ideas that necessitate some breaking changes.
Graphene 2.0 Highlights
- A Simplified codebase (easier to contribute - please contribute)
- A cleaner resolver API
Graphene takes full advantage of Python3 APIs and uses async iterators and class definitions that make the demos of the day very impressive. In ~3 lines of code, you can spin up a WebSocket server and ~10 to hook into it.
express-graphql or Apollo Server, and the answer lies in the reference implementation. Both of those projects are mostly just a thin wrapper around GraphQL-js which is designed first and foremost as a reference to the spec. Graphene-JS, on the other hand, is designed for performance and should be considerably faster in a lot of cases.
Internals aside, the developer experience seems terrific. In particular, the pattern for writing interfaces and derived classes looks like it could cut down on a tremendous amount of code for a lot of projects. As icing on the cake, it looks like it might cut even more boilerplate by integrating directly with some ORMs like Sequelize.