Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Announcing conductor #1512

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
129 changes: 129 additions & 0 deletions website/pages/blog/announcing-conductor-alpha-release.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
title: 'Announcing Conductor, a robust, free MIT-Licensed GraphQL Gateway'
YassinEldeeb marked this conversation as resolved.
Show resolved Hide resolved
tags: [graphQL, conductor, gateway, alpha]
authors: [Yassin Eldeeb]

Check failure on line 4 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L4

[Vale.Spelling] Did you really mean 'Yassin'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'Yassin'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 4, "column": 11}}}, "severity": "ERROR"}

Check failure on line 4 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L4

[Vale.Spelling] Did you really mean 'Eldeeb'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'Eldeeb'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 4, "column": 18}}}, "severity": "ERROR"}
date: 2024-01-15
description:
Announcing the alpha release of Conductor, an MIT-licensed, open-source GraphQL Gateway. Designed
for simplicity and efficiency, it's a robust solution for modern GraphQL needs.
image: /blog-assets/graphql-conductor-alpha-release/cover.png

Check failure on line 9 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L9

[Vale.Spelling] Did you really mean 'graphql'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'graphql'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 9, "column": 21}}}, "severity": "ERROR"}
thumbnail: /blog-assets/graphql-conductor-alpha-release/thumbnail.png

Check failure on line 10 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L10

[Vale.Spelling] Did you really mean 'graphql'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'graphql'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 10, "column": 25}}}, "severity": "ERROR"}
---

After months of intense development, we're thrilled to announce the public launch of
[Conductor](https://the-guild.dev/graphql/gateway) - our latest venture into the world of GraphQL!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"our latest venture into the world of GraphQL!" - what's the purpose of this sentense?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not much, we can remove it.


## For the Community, Embracing All GraphQL Projects

Conductor has been crafted with a clear vision: to empower developers with their advanced GraphQL

Check warning on line 18 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L18

[write-good.Passive] 'been crafted' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'been crafted' may be passive voice. Use active voice if you can.", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 18, "column": 15}}}, "severity": "WARNING"}
needs. Here's what sets it apart:

- **Built with Rust**: Focused on performance and reliability, leveraging Rust's safety and
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we mention our benchmarks and how it compares to all other gateways?
and that we followed these benchmarks from the get go?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure! I don't think we have the green check though, due to some needed work on the query planner.

concurrency capabilities.
- **Exceptional Developer Experience**: We understand that developer experience is paramount. That's
why Conductor is designed to be intuitive, straightforward, and hassle-free, allowing you to focus

Check warning on line 24 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L24

[write-good.Passive] 'is designed' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is designed' may be passive voice. Use active voice if you can.", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 24, "column": 17}}}, "severity": "WARNING"}
on what matters most - building great and performant GraphQL applications.

Check failure on line 25 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L25

[Vale.Spelling] Did you really mean 'performant'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'performant'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 25, "column": 45}}}, "severity": "ERROR"}
- **Real open-source**: Conductor is designed to be accessible to everyone, it is open-source (MIT)

Check warning on line 26 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L26

[write-good.Passive] 'is designed' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is designed' may be passive voice. Use active voice if you can.", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 26, "column": 35}}}, "severity": "WARNING"}

Check warning on line 26 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L26

[write-good.TooWordy] 'it is' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'it is' is too wordy.", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 26, "column": 77}}}, "severity": "WARNING"}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we include here also that the plugins are open source?
especially the ones that are being offered on Enterprise plans on other gateways like JWT, etc...?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure!

and free - and will always be.
- **Self Hosted**: You can self-host Conductor, ensuring that there are no barriers to using this
powerful GraphQL gateway.
- **Supporting Diverse GraphQL Architectures**: Whether you're working with federated, or standalone
APIs, Conductor is versatile enough to handle it all. Our goal is to provide a gateway that adapts

Check failure on line 31 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L31

[Vale.Spelling] Did you really mean 'APIs'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'APIs'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 31, "column": 3}}}, "severity": "ERROR"}
to all graphql projects' needs.
- **Community-Driven Development**: As a community-focused organization, The Guild is constantly
seeking feedback and contributions. Our roadmap is public! Your insights and suggestions will
shape the future of Conductor, making it a tool by the community, for the community.

## Unpacking Conductor's Feature Set

Conductor isn't just another tool; it's a comprehensive solution for managing your GraphQL
architecture. Here's a glimpse of what it offers:

- **GraphQL Spec Compliance**: Fully adheres to the GraphQL specification, ensuring reliable and
standard-compliant behavior.
- **Advanced Gateway Capabilities**: Serves as a dynamic very thin layer between GraphQL consumers

Check warning on line 44 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L44

[write-good.Weasel] 'very' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'very' is a weasel word!", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 44, "column": 58}}}, "severity": "WARNING"}
and servers, enhancing GraphQL runtime with robust plugins for caching, authentication, rate
limiting, CORS, persisted queries (trusted documents), and OpenTelemetry.
- **Flexible and Scalable**: Whether you're working on a small project or a large enterprise
application, Conductor scales with your needs. Its architecture is modular, and can fully
efficiently utlize your resources.

Check failure on line 49 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L49

[Vale.Spelling] Did you really mean 'utlize'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'utlize'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 49, "column": 15}}}, "severity": "ERROR"}
- **Extensible Endpoint Configuration**: Allows exposure of multiple GraphQL endpoints from a single

Check warning on line 50 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L50

[write-good.TooWordy] 'multiple' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'multiple' is too wordy.", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 50, "column": 61}}}, "severity": "WARNING"}
instance with configurable plugins per endpoint.
- **VRL (Vector Routing Language) Support**: Offers limitless possibilities for custom logic,
plugins, and response transformers.
- **Comprehensive Security & Monitoring**: Built-in support for various authentication methods,
authorization, rate limiting, and OpenTelemetry for monitoring.
- **Flexible runtime**: Conductor runs either as a binary (and dockerized), and can also run on the

Check failure on line 56 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L56

[Vale.Spelling] Did you really mean 'dockerized'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'dockerized'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 56, "column": 64}}}, "severity": "ERROR"}
Edge (CloudFlare Worker).

## Use It Today!

Conductor's configuration can be defined in both YAML and JSON formats. The config file contains

Check warning on line 61 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L61

[write-good.Passive] 'be defined' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'be defined' may be passive voice. Use active voice if you can.", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 61, "column": 31}}}, "severity": "WARNING"}

Check failure on line 61 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L61

[Vale.Spelling] Did you really mean 'config'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'config'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 61, "column": 77}}}, "severity": "ERROR"}
several key sections:

- **Server**: Configure the HTTP server settings, including port and host.
- **Logger**: Set up logging levels for Conductor's operations.
- **Sources**: Define the GraphQL sources/endpoints that Conductor will interact with. We support
both monolith GraphQL and Federation sources.
- **Endpoints**: Specify the GraphQL endpoints Conductor will expose, including path, source, and
plugins.
- **Plugins**: List global plugins that apply to all endpoints, including CORS, authentication, and
more.

### Configuration File Example

```yaml
server:
port: 9000

logger:
level: info

sources:
- type: graphql
id: my-source
config:
endpoint: https://my-source.com/graphql

endpoints:
- path: /graphql
from: my-source
plugins:
- type: graphiql

Check failure on line 92 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L92

[Vale.Spelling] Did you really mean 'graphiql'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'graphiql'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 92, "column": 15}}}, "severity": "ERROR"}

plugins:
- type: cors

Check failure on line 95 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L95

[Vale.Spelling] Did you really mean 'cors'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'cors'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 95, "column": 11}}}, "severity": "ERROR"}
config:
allowed_origin: '*'

Check failure on line 97 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L97

[Vale.Spelling] Did you really mean 'allowed_origin'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'allowed_origin'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 97, "column": 7}}}, "severity": "ERROR"}
```

### Running Conductor

Conductor can be ran via the docker image, and it can even be ran via npx for quick and convenient

Check failure on line 102 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L102

[Vale.Spelling] Did you really mean 'npx'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'npx'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 102, "column": 71}}}, "severity": "ERROR"}
usage. It also fully supports running as a WASM on Cloudflare Workers, providing flexibility in
deployment options.

```sh
npx @graphql-conductor/bin ./conductor.config.yaml

Check failure on line 107 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L107

[Vale.Spelling] Did you really mean 'npx'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'npx'?", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 107, "column": 1}}}, "severity": "ERROR"}
```

For more details on setting up and running Conductor, refer to our documentation.

## Join the Alpha Release: Be Part of the Conductor Community
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

join the alpha release feels like it is still close
they don't need to join anything, just try it out?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, agree


This alpha release is an invitation to early adopters in the GraphQL community to join us in

Check warning on line 114 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L114

[write-good.Weasel] 'early' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'early' is a weasel word!", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 114, "column": 40}}}, "severity": "WARNING"}
refining and enhancing Conductor.

### How to Get Involved

- **Try the Alpha Version**: Sign up for the alpha release [here](). We can connect and learn about
your needs and how to integrate Conductor within your architecture!
- **Provide Feedback and Contribute**: Your insights are invaluable. Share your feedback, report
bugs, or contribute to the codebase.

### The Journey Ahead

The alpha release is just the beginning. We're committed to continuously improving Conductor, adding
new features, and ensuring it remains at the forefront. By participating in this early stage, you're

Check warning on line 127 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L127

[alex.ProfanityUnlikely] Be careful with 'remains', it’s profane in some cases.
Raw output
{"message": "[alex.ProfanityUnlikely] Be careful with 'remains', it’s profane in some cases.", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 127, "column": 31}}}, "severity": "WARNING"}

Check warning on line 127 in website/pages/blog/announcing-conductor-alpha-release.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] website/pages/blog/announcing-conductor-alpha-release.mdx#L127

[write-good.Weasel] 'early' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'early' is a weasel word!", "location": {"path": "website/pages/blog/announcing-conductor-alpha-release.mdx", "range": {"start": {"line": 127, "column": 82}}}, "severity": "WARNING"}
not just trying out a new tool; you're actively contributing to the shaping of a gateway heading to
redefine what it means to have a community-driven open source and free GraphQL gateway.
Loading