Skip to content
Merged
2 changes: 1 addition & 1 deletion src/pages/_meta.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export default {
events: { title: "Events & Meetups" },
contribute: {
title: "Contribute to GraphQL",
href: "/community/contribute/essential-links",
href: "/community/contribute/governance",
},
foundation: { title: "Foundation" },
},
Expand Down
8 changes: 4 additions & 4 deletions src/pages/community/contribute/_meta.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
export default {
"essential-links": "",
grant: "Community Grant Program",
development: "Participating in Development",
governance: "GraphQL Project Governance",
"how-graphql-is-developed": "",
"project-resources": "",
"project-meetings": "",
development: "Participating in Development",
grant: "Community Grant Program",
"essential-links": "",
"project-resources": "",
}
72 changes: 65 additions & 7 deletions src/pages/community/contribute/development.mdx
Original file line number Diff line number Diff line change
@@ -1,17 +1,75 @@
import { Cards } from "../../../components/cards"

# Participating in Development

GraphQL is developed in the open, through [GitHub](https://github.com/graphql) and working group meetings that are open for anyone to attend (so long as they are covered under the [free membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership)). In addition, anybody is welcome to view the [recordings of our meetings on YouTube](https://youtube.graphql.org)

## First steps

If you want to get involved in GraphQL, add yourself to the meeting agenda for one of our [working groups or implementations](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#about-the-graphql-specification-project), sign the document if you haven't already, and show up! Or, if you prefer, just open a PR against our projects as this will also initiate the spec membership signature process.

We welcome your participation!

## Getting up to speed

All of our work [happens in the open](https://github.com/graphql). In addition, we record our workgroups' meetings on [YouTube](https://youtube.graphql.org). If you are interested in quickly getting up to speed on what's happening in a working group, the meeting minutes and [replays](https://youtube.graphql.org) are a great place to begin.
All of our work [happens in the open](https://github.com/graphql). In addition, we record our workgroups' meetings on [YouTube](https://youtube.graphql.org). If you are interested in quickly getting up to speed on what's happening in a working group, the [meeting minutes](https://github.com/graphql/graphql-wg/tree/main/notes) and [replays](https://youtube.graphql.org) are a great place to begin.

## Asking questions

The best place to ask a development-related question is in a working group meeting, or by opening a GitHub issue. Please note that if you have an implementation question, you may get a faster answer by [asking in one of the channels more geared toward users](/community/resources/official-channels/).


## GraphQL projects and implementations

<Cards
items={[
{
title: "GraphQL Specification",
link: "https://github.com/graphql/graphql-spec",
description: "This is a Working Draft of the Specification for GraphQL, a query language for APIs created by Facebook. The target audience for this specification is not the client developer, but those who have, or are actively interested in, building their own GraphQL implementations and tools. To join in with its development, join the main GraphQL Working Group",
},
{
title: "GraphQL over HTTP Specification",
link: "https://github.com/graphql/graphql-over-http",
description: "HTTP is the most common choice as the client-server protocol when using GraphQL because of its ubiquity. However the GraphQL specification deliberately does not specify the transport layer. This specification is intended to fill this gap by specifying how GraphQL should be served over HTTP. ",
},
{
title: "GraphQL Scalars Specification",
link: "https://github.com/graphql/graphql-scalars",
description: "Providing a directory of GraphQL Custom Scalar specifications, contributed by the community. GraphQL Custom Scalar specifications are language agnostic and thus can be used to document and standardize behavior across different languages.",
},
{
title: "Dataloader",
link: "https://github.com/graphql/dataloader",
description: "A generic utility to be used as part of your application's data fetching layer to provide a simplified and consistent API over various remote data sources such as databases or web services via batching and caching.",
},
{
title: "GraphiQL IDE",
link: "https://github.com/graphql/graphiql",
description: "Whether you want a simple GraphiQL IDE instance for your server, or a more advanced web or desktop GraphQL IDE experience for your framework or plugin, or you want to build an IDE extension or plugin, you've come to the right place!",
},
{
title: "GraphQL.js",
link: "https://github.com/graphql/graphql-js",
description: "The JavaScript reference implementation for GraphQL.",
},
{
title: "GraphQL Playground",
link: "https://github.com/graphql/graphql-playground",
description: "GraphQL IDE for better development workflows (GraphQL Subscriptions, interactive docs & collaboration).",
},
{
title: "libgraphqlparser",
link: "https://github.com/graphql/libgraphqlparser",
description: "A parser for GraphQL, a query language for describing data requirements on complex application data models, implemented in C++11.",
},
{
title: "Relay Library for GraphQL.js",
link: "https://github.com/graphql/graphql-relay-js",
description: "A library to allow the easy creation of Relay-compliant servers using the GraphQL.js reference implementation of a GraphQL server.",
},
Copy link
Member

@benjie benjie Oct 23, 2025

Choose a reason for hiding this comment

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

These 3 aren't really actively maintained currently.

We seem to be lacking:

  • graphql-http (the reference implementation of graphql-over-http)
  • composite-schemas-spec

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is projects & specification only. I have removed those highlighted and added graphql-http, the composite schema spec and the website repo.

{
title: "SWAPI GraphQL Wrapper",
link: "https://github.com/graphql/swapi-graphql",
description: "A wrapper around the Star Wars API, or \"swapi\" (Swah-pee) the world's first quantified and programmatically-accessible data source for all the data from the Star Wars canon universe, converting it into a GraphQL schema.",
},
]}
/>

If you want to get involved in GraphQL, add yourself to the meeting agenda for one of our [working groups or implementations](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#about-the-graphql-specification-project), sign the document if you haven't already, and show up! Or, if you prefer, just open a PR against our projects as this will also initiate the spec membership signature process.
Copy link
Member

Choose a reason for hiding this comment

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

The TSC document needs agreement to edit; should we link to https://github.com/graphql/graphql-wg#upcoming-meetings instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Changed this to link to the new "how to join" section


We welcome your participation!
4 changes: 2 additions & 2 deletions src/pages/community/contribute/how-graphql-is-developed.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {

At its core, the GraphQL project is organized around the [specification](https://spec.graphql.org), with a wide variety of supporting implementations and tools.

GraphQL has an active and mutually beneficial relationship with its many implementations. The GraphQL specification is continuously evolving under the care of the [GraphQL Working Group](https://github.com/graphql/graphql-wg), which consists of GraphQL spec experts, contributors to public [reference implementations](/code), and implementers. At any given time, GraphQL specification updates are a combination of anticipatory planning with documentation of patterns and behaviors that are already proven in production, sometimes at very large scale.
GraphQL has an active and mutually beneficial relationship with its many implementations. The GraphQL specification is continuously evolving under the care of the [GraphQL Working Group](https://github.com/graphql/graphql-wg), which consists of GraphQL spec experts, contributors to public [reference implementations](/community/contribute/development/#graphql-projects-and-implementations), and implementers. At any given time, GraphQL specification updates are a combination of anticipatory planning with documentation of patterns and behaviors that are already proven in production, sometimes at very large scale.

## Working Groups

Expand All @@ -18,7 +18,7 @@ The GraphQL specification, sub-specifications, and official reference implementa
<div className="border-l-2 border-primary pl-6 md:pl-10">
### The GraphQL Working Group

The [GraphQL Working Group](https://github.com/graphql/graphql-wg) is the main group that plans and implements changes to the [GraphQL specification](https://spec.graphql.org). It meets actively and is the default place for discussion for topics which do not have a separate breakout working group (breakout working groups include the [Input Union WG](https://github.com/graphql/graphql-spec/blob/main/rfcs/InputUnion.md) and the [GraphQL-over-HTTP WG](https://github.com/graphql/graphql-over-http)).
The [GraphQL Working Group](https://github.com/graphql/graphql-wg) is the main group that plans and implements changes to the [GraphQL specification](https://spec.graphql.org). It meets actively and is the default place for discussion for topics which do not have a separate breakout working group (breakout working groups include the [Composite Schemas WG](https://github.com/graphql/composite-schemas-wg/) and the [GraphQL-over-HTTP WG](https://github.com/graphql/graphql-over-http), see [GraphQL subcommittee meetings](/community/contribute/project-meetings/#graphql-subcommittee-meetings) for more).

<Cards
items={[
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
135 changes: 126 additions & 9 deletions src/pages/community/contribute/project-meetings.mdx
Original file line number Diff line number Diff line change
@@ -1,21 +1,36 @@
import { Cards } from "../../../components/cards"
import { Callout } from 'nextra/components'
import { Steps } from 'nextra/components'

# Project Meetings

All GraphQL technical meetings are open to anyone who is interested, so long as they first complete the [GraphQL Specification Membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership).
All GraphQL technical meetings are open to anyone who is interested, so long as they first complete the [GraphQL Specification Membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership). Participation in the technical meetings is free.

All GraphQL technical meetings should appear on the [GraphQL public calendar](https://calendar.graphql.org). If a project's meeting isn't on the calendar or is incorrect, please email [email protected].

- **Who can join GraphQL technical meetings:** Anyone who has signed the free [GraphQL Specification Membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership).
## Who can join GraphQL technical meetings?

- **How to join:** Each GraphQL project must maintain an agenda document for each meeting, and each attendee must add themselves to it prior to attending. To join, open a PR to add your name to the attendee list on an upcoming meeting's agenda (for example, the [GraphQL Working Group](https://github.com/graphql/graphql-wg/tree/HEAD/agendas) or [GraphQL.js](https://github.com/graphql/graphql-js-wg/tree/main/agendas)). The agenda document will have the date, time and Zoom links.
Anyone who has signed the free [GraphQL Specification Membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership).

import { Callout } from 'nextra/components'
## Quick guide: How to join

1. Sign the GraphQL Specification Membership agreement (first time only)
1. Open a pull request against the [EasyCLA repository](https://github.com/graphql/easycla)
1. Follow the steps provided by the EasyCLA bot
1. Choose to sign the CLA as an individual or on behalf of a corporation
1. Open a pull request against the meeting's agenda (forking if necessary)
1. Add your name and affiliation to the agenda
1. Add any agenda items, with a time estimate (optional)
1. Join using the provided Zoom link
1. Notes are taken by AI, and volunteers are welcome to add to a shared notes doc during the meeting
1. Meetings are recorded and later made available on the [GraphQL Foundation Working Groups YouTube channel](https://www.youtube.com/@GraphQLFoundation)

[See below for detailed instructions](#how-to-join-a-meeting) on how to sign the membership agreement and join a meeting using a GitHub pull request.

<Callout type="warning">
**IMPORTANT:** Your PR against the agenda **must** be merged before you can attend. If the EasyCLA bot says you are not covered, you need to follow the links in the bot's comment to sign the [GraphQL Specification Membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership) before you can attend.
</Callout>

If you have questions about this process, please ask [[email protected]](mailto:[email protected]).

## GraphQL Working Group / TSC meeting

The [GraphQL Working Group](https://github.com/graphql/graphql-wg) meets on the first Thursday of each month. When there are topics to address, the [GraphQL Technical Steering Committee (TSC)](https://github.com/graphql/graphql-wg/blob/HEAD/GraphQL-TSC.md) may meet briefly prior to the start of the Working Group meeting.
Expand All @@ -24,8 +39,110 @@ The goal of the working group meeting is to discuss current work and future plan

To join, add yourself to an [upcoming meeting agenda](https://github.com/graphql/graphql-wg/tree/HEAD/agendas).

## GraphQL.js Working Group meeting
## GraphQL subcommittee meetings

<Cards
items={[
{
title: "AI working group",
link: "https://github.com/graphql/ai-wg",
description: "Explores how GraphQL can best support the growing needs of artificial intelligence and machine learning",
},
{
title: "Community working group",
link: "https://github.com/graphql/community-wg",
description: "Serves as the steward of GraphQL's global narrative and market positioning in the technology ecosystem. Developing and executing strategic initiatives that reinforce GraphQL's value proposition while fostering an engaged, educated, and expanding community.",
},
{
title: "Composite schema working group",
link: "https://github.com/graphql/composite-schemas-wg",
description: "Building a specification that covers many of the shared concerns when building a larger GraphQL schema as a composite of many smaller GraphQL schemas.",
},
{
title: "GraphiQL working group",
link: "https://github.com/graphql/graphiql/tree/main/working-group",
description: "Decision making, setting specifications and navigating feature proposals for our shared GraphQL web and desktop IDE experiences as a community.",
},
{
title: "GraphQL.js working group",
link: "https://github.com/graphql/graphql-js-wg",
description: "A monthly virtual meeting of maintainers of commonly used GraphQL libraries and tools and significant contributors in the Javascript ecosystem, operated by the GraphQL Foundation.",
},
{
title: "GraphQL/OTel working group",
link: "https://github.com/graphql/otel-wg",
description: "Defining the best practices and semantic conventions for using OpenTelemetry with GraphQL.",
},
{
title: "GraphQL-over-HTTP working group",
link: "https://github.com/graphql/graphql-over-http/tree/main/working-group",
description: "Working on a specification that allows GraphQL clients and servers with different implementations and technology stacks to interact freely over HTTP.",
},
{
title: "Nullability working group",
link: "https://github.com/graphql/nullability-wg",
description: "Giving clients a way to influence or override nullability checks within queries.",
}
]}
/>

## How to join a meeting

If you have questions about this process, please ask [[email protected]](mailto:[email protected]).

<Steps>
### Make a pull request to the EasyCLA repository

The GraphQL Specification Membership agreement is managed by a neutral GitHub repository where you can open a pull request and initiate the EasyCLA signing process. All pull requests will be closed periodically. You only need to do this one time, and it can be signed by individual contributors or their employers.

You can read about the full process, including details about whether to sign as an individual or under an organization, [at the EasyCLA GitHub repository](https://github.com/graphql/graphql-wg/tree/main/membership).

1. Begin by pressing the edit button in the top right corner of the "README" file

![Edit button](./images/development/Step1-1.png)

2. When prompted, create a fork of the project by pressing the green "Fork this repository" button

![Fork button](./images/development/Step1-2.png)

3. Make a small change to the README file, it doesn't matter what the change is as it won't be merged into the file
4. Press "Commit changes"

![Make a commit](./images/development/Step1-4.png)

5. Confirm your change by pressing "Propose changes", you can use the default commit message
6. This opens a comparison page where you can check your change and press "Create pull request"

![Create pull request](./images/development/Step1-6.png)

7. Now it's time to make your pull request. You can change the title and add to the body of the message if you like, then press "Create pull request"
8. After a minute, an automated comment will appear underneath your pull request from "linux-foundation-easycla bot" asking you to sign the EasyCLA

### Sign the EasyCLA

1. Press "Click here to be authorized" in the message the EasyCLA bot left on your pull request

![Click the link to be authorized](./images/development/Step2-1.png)

2. You'll be asked to grant the Linux Foundation bot some permissions to work with your GitHub account; press "Authorize LF-Engineering"
3. You will be redirected to the EasyCLA platform. Here, you need to choose whether to proceed as an individual or on behalf of your company. If you choose corporate, you may need to contact your company's CLA manager. You'll also be able to read the document before signing it, by pressing "Download PDF"
4. After choosing which way to proceed, the document will be generated with DocuSign, ready for you to sign electronically. When you have filled in the required fields, press "Finish"
5. You will be redirected back to your pull request, and after a few minutes the EasyCLA bot will show that you have signed the agreement

![EasyCLA recognizes the signed CLA](./images/development/Step2-5.png)

### Add yourself to the list of attendees

1. Find your [chosen working group above](#graphql-working-group--tsc-meeting) and find its next agenda by browsing to agendas -> year -> month in the central pane of the GitHub webpage
2. Press the Edit button in the top right corner of the agenda file, and when prompted create a fork by pressing the "Fork this repository" button
3. The file is written in markdown and is generally easy to read. Scroll down to `## Attendees`. Add your information following the format of the other attendees in the list. You can preview your change in a rich text format by pressing "Preview" in the top left of the editing pane

![Create pull request to the agenda](./images/development/Step3-3.png)

The [GraphQL.js working group](https://github.com/graphql/graphql-js-wg) meets the second Tuesday of each month. The goal is to plan development work and resolve issues with [GraphQL.js](https://github.com/graphql/graphql-js).
4. If applicable, add an agenda item under the `## Agenda` heading, make sure you add your item to the end of the list and add an estimated duration of discussion
5. Press "Commit changes", fill in the details of your changes in the popup, and then press "Propose changes"
6. Now you can review your changes and create your pull request to the agenda by pressing "Create pull request"
7. If you successfully signed the EasyCLA, you will pass the Easy CLA check and your pull request may be automatically merged if you pass the automatic checks.
8. If you don't pass the automatic checks, don't worry, reach out on the [community Discord](https://discord.graphql.org/) or request a [TSC member](https://github.com/graphql/graphql-wg/blob/HEAD/GraphQL-TSC.md#tsc-membership) as a reviewer of your pull request.

To join, add yourself to an [upcoming meeting agenda](https://github.com/graphql/graphql-js-wg/tree/HEAD/agendas).
</Steps>