The Graph Development Update

Issue 01 / September 2018

For our team at The Graph, open source is about more than just making code public, it’s about building communities and the collaboration between them. An important part of building a community is creating transparency through regular communication.

We‘re developing at a fast pace and The Graph is constantly evolving. To make it easier for you to follow the evolution of The Graph from a standalone node to a hosted service and to a decentralized network, we will—starting today—be posting development updates once a month.

New Features

GraphQL Subscriptions

An important feature for dApps is the ability to receive updates whenever data on The Graph changes. The most common way to achieve this with GraphQL is to use GraphQL subscriptions over WebSockets. Servers that implement this protocol seamlessly integrate with frontend frameworks such as Apollo.

As of last week, the Graph Node supports subscriptions, using the same GraphQL fields and parameters that are provided for regular queries. You can try them in the GraphiQL interface by writing a query with subscription { ... } instead of query { ... }.

Multiple subgraphs & hot deployment

An important step towards our next major milestone— the hosted service—is support for indexing and serving multiple subgraphs. This ability has now been added to the Graph Node. We are planning an on-chain Graph Name Service to replace this in the future but until that is ready, the current implementation allows anyone with access to a Graph Node to deploy their subgraphs and give them user-friendly names.

Deploying and managing subgraphs is now possible through the Graph CLI by means of a dedicated graph deploy command. In combination with the watch mode (see the next section), this allows you to continuously deploy subgraphs to a Graph Node while you are making changes.

Auto building & deployment (watch mode)

Previously, deploying a subgraph would require you to first build it, manually copy its subgraph ID and then start the Graph Node, passing in the new ID from the command-line. With graph deploy and the --watch flag, this is now covered by a single command, without requiring a node restart.

All Graph CLI commands now support a -w / --watch flag, monitoring your filesystem and automatically re-running the command (e.g.graph build or graph deploy) as you are working on your subgraph.

Improved error messages

Clear, helpful error messages contribute to a great developer experience. Over the past few weeks, we have, among other things, added helpful connectivity checks with error messages suggesting possible causes. Instead of failing early in several places, we now provide error messages that help you understand what is wrong or missing immediately.

What’s next?

We’ll be at ETHSanFrancisco from October 5th–7th and are planning to ship a few new features and Ethereum syncing improvements before then.

Get Involved

Would you like to get involved in developing The Graph? We’ve begun identifying easy starting points for new contributors: good first issues in Graph Node, good first issues in Graph CLI. We will add more soon.

We always appreciate feedback about The Graph. Don’t be shy to file issues against Graph Node and Graph CLI.

Have questions or want to chat with the team? Come join our Discord!

If you’re excited about The Graph and would like to join the team, take a look at our careers page.

This month, we’d like to give special thanks to the teams who built on The Graph at ETHBerlin and, in doing so, helped us identify improvements.

— Jannis & The Graph Protocol Team ✌️