# What the heck is GraphQL anyway? According to [graphql.org](https://graphql.org/) GraphQL is "A query language for your API" which is really only part of it. [Demo time](https://www.graphqlhub.com/playground?query={%0A%20%20graphQLHub%0A%20%20giphy%20{%0A%09%09random(tag%3A%22graphql%22)%20{%0A%20%20%20%20%09id%0A%20%20%20%20%20%20url%0A%20%20%20%20%20%20images%20{%0A%20%20%20%20%20%20%20%20original%20{%0A%20%20%20%20%20%20%20%20%20%20url%0A%20%20%20%20%20%20%20%20}%0A%20%20%20%20%20%20}%0A%20%20%09}%0A%20%20}%0A}) GraphQL is a specification for the GraphQL query language and how servers and clients should interact to implement those queries. The [GraphQL specification](https://github.com/facebook/graphql) is maintained by Facebook and should probably be treated with care (anyone who has had to maintain a react-native app knows what I'm talking about). Facebook's philosophy of "move fast and break things" is great for products but is not great for software dependencies. Still, there are plenty of open source implementations of the spec now and you don't need to rely on Facebook's implementations of the server or client. At this time my gut feeling is still "avoid react/relay" but I know plenty of people who have and are building successful apps with them. Notable open source efforts include [Apollo](https://www.apollographql.com/), developed by the [Meteor team](https://www.meteor.com/) - it includes a JavaScript server, browser client and a bunch of other stuff (like bindings for various JavaScript frameworks). We'll be using the Apollo client in our demonstrations today. Still, this is an Elixir talk so you're probably most interested in hearing about [Absinthe](https://absinthe-graphql.org/). Check out the `step-2` branch to learn about it.