├── .gitignore
├── notes
├── 2018
│ ├── 2018-05-24.md
│ └── 2018-09-20.md
├── 2023
│ ├── 2023-04.md
│ └── 2023-07.md
├── 2024
│ ├── 2024-01.md
│ ├── 2024-08.md
│ ├── 2024-05.md
│ ├── 2024-06.md
│ └── 2024-10.md
├── 2025
│ ├── 2025-03.md
│ ├── 2025-10.md
│ ├── 2025-07.md
│ ├── 2025-11.md
│ ├── 2025-12.md
│ ├── summary-2025-08-21.md
│ ├── 2025-06.md
│ ├── 2025-02.md
│ ├── summary-2025-05-15.md
│ └── summary-2025-10-02.md
└── README.md
├── .prettierignore
├── agendas
├── 2017
│ ├── 2017-08-14.md
│ └── 2017-10-27.md
├── 2018
│ ├── 2018-05-24.md
│ ├── 2018-03-22.md
│ ├── 2018-02-01.md
│ ├── 2018-06-14.md
│ ├── 2018-09-20.md
│ └── 2018-11-06.md
├── 2019
│ ├── 2019-08-01.md
│ ├── 2019-07-03.md
│ ├── 2019-06-06.md
│ ├── 2019-09-12.md
│ ├── 2019-05-02.md
│ ├── 2019-11-07.md
│ ├── 2019-10-10.md
│ └── 2019-12-05.md
├── 2020
│ ├── 2020-04-02.md
│ ├── 2020-12-03.md
│ ├── 2020-06-11.md
│ ├── 2020-11-05.md
│ └── 2020-10-01.md
├── 2021
│ ├── 2021-08-05.md
│ ├── 2021-04-01.md
│ ├── 2021-09-02.md
│ └── 2021-11-04.md
├── 2024
│ └── 07-Jul
│ │ └── 04-wg-primary.md
├── 2025
│ ├── 01-Jan
│ │ └── 02-wg-primary.md
│ ├── 06-Jun
│ │ └── 19-wg-secondary-eu.md
│ └── 09-Sep
│ │ └── 04-wg-primary.md
└── 2026
│ └── 01-Jan
│ └── 01-wg-primary.md
├── rfcs
├── subscriptions_01.png
├── subscriptions_02.png
├── subscriptions_03.png
├── AbstractFilter
│ ├── MatchesSpec.md
│ └── AbstractFilterArgumentSpec.md
├── glossary
│ └── README.md
├── README.md
├── TEMPLATE.md
├── FieldExtensions.md
├── FeatureDiscovery.md
├── SchemaFragments.md
├── CompositeSchemas.md
├── FullSchemas.md
├── ObjectIdentification.md
└── MetadataStructs.md
├── membership
├── GraphQL-Specification_Membership-2021-01-25-PREVIEW.pdf
└── README.md
├── tools
└── gen-agenda.js
├── package.json
├── .github
├── ISSUE_TEMPLATE
│ └── action-item.md
├── PULL_REQUEST_TEMPLATE
│ └── agenda-attendance.md
└── workflows
│ └── wgutils-automerge.yml
├── JoiningAMeeting.md
└── wg.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .git/
2 | node_modules/
3 |
--------------------------------------------------------------------------------
/notes/2023/2023-04.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - April 2023
2 |
3 | No notes.
4 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | agendas/*/*.md
2 | agendas/*/*/*.md
3 | rfcs/SemanticNullability.md
4 |
--------------------------------------------------------------------------------
/agendas/2025/01-Jan/02-wg-primary.md:
--------------------------------------------------------------------------------
1 | Cancelled and rescheduled to next week due to winter break.
2 |
--------------------------------------------------------------------------------
/rfcs/subscriptions_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphql/graphql-wg/HEAD/rfcs/subscriptions_01.png
--------------------------------------------------------------------------------
/rfcs/subscriptions_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphql/graphql-wg/HEAD/rfcs/subscriptions_02.png
--------------------------------------------------------------------------------
/rfcs/subscriptions_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphql/graphql-wg/HEAD/rfcs/subscriptions_03.png
--------------------------------------------------------------------------------
/agendas/2025/06-Jun/19-wg-secondary-eu.md:
--------------------------------------------------------------------------------
1 | This meeting has been postponed due to Juneteenth, it will be next week instead.
2 |
--------------------------------------------------------------------------------
/agendas/2024/07-Jul/04-wg-primary.md:
--------------------------------------------------------------------------------
1 | This meeting has been moved to [the 18th](./18-wg-primary.md) due to July 4th
2 | celebrations.
3 |
--------------------------------------------------------------------------------
/rfcs/AbstractFilter/MatchesSpec.md:
--------------------------------------------------------------------------------
1 | TODO: copy over matches spec, and update based on discussion and link to
2 | AbstractFilterArgumentSpec
3 |
--------------------------------------------------------------------------------
/agendas/2026/01-Jan/01-wg-primary.md:
--------------------------------------------------------------------------------
1 | Meeting canceled due to New Years Day.
2 |
3 | Please attend instead the [meeting in 2 weeks](./15-wg-primary.md)
4 |
--------------------------------------------------------------------------------
/membership/GraphQL-Specification_Membership-2021-01-25-PREVIEW.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/graphql/graphql-wg/HEAD/membership/GraphQL-Specification_Membership-2021-01-25-PREVIEW.pdf
--------------------------------------------------------------------------------
/tools/gen-agenda.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | console.error(
3 | `\
4 | Please instead run:
5 |
6 | yarn && yarn gen-agenda ${process.argv.slice(2).join(" ")}
7 | `
8 | );
9 | process.exit(1);
10 |
--------------------------------------------------------------------------------
/notes/README.md:
--------------------------------------------------------------------------------
1 | ## Notes for all past working group sessions are kept here.
2 |
3 | Interested in [taking notes](https://github.com/graphql/graphql-wg#volunteer-to-take-notes) for a meeting? Sign up for the next session!
4 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "scripts": {
3 | "gen-agenda": "wgutils agenda gen"
4 | },
5 | "devDependencies": {
6 | "prettier": "^2.1.2",
7 | "wgutils": "^1.3.0"
8 | },
9 | "prettier": {
10 | "proseWrap": "always"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/agendas/2025/09-Sep/04-wg-primary.md:
--------------------------------------------------------------------------------
1 | This meeting has been cancelled, but:
2 |
3 | 1. The
4 | [September 2025 GraphQL Spec release](https://spec.graphql.org/September2025/)
5 | is live (pending JDF ratification) 🎉
6 | 2. See you at [GraphQLConf 2025](https://graphql.org/conf/2025/) in Amsterdam 🇳🇱
7 | on Monday! ✈️
8 | 3. There's a Working Group track on Tuesday where you can hear the latest on our
9 | various projects!
10 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/action-item.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Meeting Action Item
3 | about: Template for action items recommended during GraphQL Working Group meetings.
4 | labels: 'Action item :clapper:'
5 |
6 | ---
7 |
8 |
9 |
10 | - assignee(s):
11 | - source:
12 |
13 | ---
14 |
15 | _Note: Action Item issues are reviewed and closed during Working Group
16 | meetings._
17 |
--------------------------------------------------------------------------------
/notes/2024/2024-01.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - January 2024
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | # Primary
7 |
8 | ## Update on TSC membership vote (5m, Lee)
9 |
10 | ## Type system ordering RFC (15m, Benjie)
11 |
12 | - Anthony: Do we need ordering for everything? Tools want to choose the order
13 | they display the type definitions for an example.
14 | - Matt: what about protobuf/other formats that have a fixed order forever?
15 | Modifying the order of an enum becomes a breaking change.
16 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE/agenda-attendance.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Meeting Agenda or Attendance
3 | about: Template for adding agenda or attendance to an upcoming GraphQL Working Group meeting.
4 | labels: 'Agenda :hand:'
5 | ---
6 |
7 |
23 |
--------------------------------------------------------------------------------
/notes/2025/2025-03.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - March 2025
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | Agenda:
7 | https://github.com/graphql/graphql-wg/blob/main/agendas/2025/03-Mar/06-wg-primary.md
8 |
9 | ## GraphQL Conf WG sessions
10 |
11 | - We want to make GraphQL Conf about community
12 | - Proposal
13 | [https://gist.github.com/benjie/0ca0fd87cee41783d8fd19d659c9ca0a](https://gist.github.com/benjie/0ca0fd87cee41783d8fd19d659c9ca0a)
14 | - Please reach out to Lee or Benjie if you have any ideas
15 |
16 | ## Non nullable includeDeprecated argument
17 |
18 | - RFC1 => Martin to make graphql-js PR and add it to next month agenda.
19 |
20 | ## Open Telemetry
21 |
22 | -
23 |
24 | ## Nullability
25 |
26 | - Alex: aim is to reach consensus by the next wg.
27 | - Lee: OK to let solution 2. go.
28 | - Alex: solution 3. and 4. Would create a kind of dialect.
29 | - Alex: need a document directive.
30 | - Alex: we also need to disable null bubbling.
31 | - Alex: breaking changes are fuzzy,
32 |
--------------------------------------------------------------------------------
/notes/2024/2024-08.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - August 2024
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | ## Determine volunteers for note taking (1m, Host)
7 |
8 | - Stephen
9 |
10 | ## Review agenda (2m, Host)
11 |
12 | - Fragment arguments (10m, Jovi)
13 |
14 | ## Review prior secondary meetings (5m, Host)
15 |
16 | - skipped
17 |
18 | ## Review previous meeting's action items (5m, Host)
19 |
20 | - skipped
21 |
22 | ## Fragment arguments (10m, Jovi)
23 |
24 | Spec PR:
25 | [https://github.com/graphql/graphql-spec/pull/1081](https://github.com/graphql/graphql-spec/pull/1081)
26 |
27 | GraphQL.js PR:
28 | [https://github.com/graphql/graphql-js/pull/4015](https://github.com/graphql/graphql-js/pull/4015)
29 |
30 | - Jovi: _Do we want to backport to GraphQL 16?_
31 | - Jovi: _Are we ready to advance to RFC2? _
32 | - Michael: Was thinking variable scoping could be difficult in execution. That
33 | is the main concern for me. I will look at that.
34 | - Michael: I recall three problems that Joe Savona said about GraphQL and this
35 | was one of them. This will be awesome
36 | - Jovi: As a client, this has come up quite a bit as well
37 |
--------------------------------------------------------------------------------
/rfcs/glossary/README.md:
--------------------------------------------------------------------------------
1 | # Glossary RFC
2 |
3 | The GraphQL spec uses a lot of terminology, some of this terminology is
4 | introduced implicitly, some is defined explicitly, but either way finding the
5 | definition when you read a term in the spec can be challenging.
6 |
7 | To address these challenges, we propose adding a glossary to the GraphQL spec.
8 | This glossary will be in the form of an additional appendix at the end of the
9 | GraphQL spec.
10 |
11 | We may or may not enhance `spec-md` with glossary-specific features (for
12 | example linking to definitions where terms are used, or displaying the
13 | definition on hover in a tooltip). This is currently seen as a separate effort
14 | since having a glossary is useful in itself, so we should concentrate for now
15 | on the glossary definitions only.
16 |
17 | This RFC is composed of this file (`rfcs/glossary/README.md`) which explains
18 | the thought behind the glossary RFC, and the glossary file itself
19 | ([`rfcs/glossary/Appendix C -- Glossary.md`](./Appendix%20C%20--%20Glossary.md))
20 | which should be suitable for moving directly into the `spec/` folder in order
21 | to add the glossary to the spec.
22 |
23 | The glossary is not yet complete, and PRs adding definitions to it (in
24 | alphabetical order) are welcome.
25 |
--------------------------------------------------------------------------------
/rfcs/README.md:
--------------------------------------------------------------------------------
1 | # GraphQL RFC (request for comments) Working Documents
2 |
3 | The files found here are collaborative notes exploring various proposals for advancing the GraphQL specification. Documents included in this directory imply no specific approval or support nor are any proposals required to create a document here.
4 |
5 | ## Disclaimers
6 |
7 | * Documents included in this directory imply no specific approval or support for inclusion in the GraphQL spec.
8 | * Documents here may be historical or out of date.
9 | * An active GraphQL RFC may not be documented here; there is no requirement to do so.
10 |
11 | ## Contributing
12 |
13 | Pull requests are encouraged. New documents and other non-destructive changes may be merged with a low degree of scrutiny and minimal review.
14 |
15 | That said, please follow these suggestions:
16 |
17 | * New proposals should be presented in a [working group meeting](../agendas). Submitting a document here is not sufficient or required to introduce a new proposal.
18 | * Favor documents which define a problem and explore a solution space rather than propose a specific change. The intent of documents found here are to help ask and answer questions to build confidence and advance an RFC.
19 | * A template is provided [here](./TEMPLATE.md) as a starting point for new RFCs.
--------------------------------------------------------------------------------
/rfcs/TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
3 |
4 | # RFC:
5 |
6 | **Proposed by:** [](https://github.com/) -
7 | **Current champion:** [](https://github.com/) -
8 |
9 |
11 |
12 | ## 📜 Problem Statement
13 |
14 |
17 |
18 | **Example**
19 |
20 |
21 |
22 | ## 💡 Proposed Solution
23 |
24 |
28 |
29 | ## ⚠️ Risks
30 |
31 |
33 |
34 | ## Appendix
35 |
36 |
38 |
39 | ### 🎨 Prior Art
40 |
41 |
43 |
44 | ### 🤔 Alternatives Considered
45 |
46 |
47 |
--------------------------------------------------------------------------------
/notes/2025/2025-10.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - October 2025
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | Agenda:
7 | https://github.com/graphql/graphql-wg/blob/main/agendas/2025/10-Oct/02-wg-primary.md
8 |
9 | Matt Mahonney is MC for the meeting
10 |
11 | ## AI working group
12 |
13 | - Starts on October 23rd
14 | - Might conflict with the HTTP wg
15 | - Martin: HTTP wg has been very quiet
16 | - Pascal: AI WG - do we have a repo?
17 |
18 | ## Move gateway performance benchmark repo and federation audit repo under the foundation
19 |
20 | - Skipped: Review Sept Secondary Meeting
21 | - Benjie -
22 | [@matches directive](https://github.com/graphql/graphql-wg/pull/1817/files).
23 |
24 | ## Update description of Fragments in the spec
25 |
26 | - Janette: do we need to make this a RFC?
27 | - Benjie: I would consider this editorial
28 | - Benjie: could use some rewording maybe? But overall support
29 | - Kewei: Should we defined modularity because it hasn’t appeared in the spec?
30 | - Martin: should we merge and iterate?
31 | - Matt: Goal is to get this merged next month
32 | - We probably need more approval from TSC
33 | - Ping people if not responsive
34 | - Janette: Will remove the fake function + rethink introducing the word
35 | “modularity”
36 | - Benjie - Fragments allow client components and logic to describe their
37 | specific data requirements locally. Fragments can then be composed together to
38 | form a GraphQL operation to issue to the server.
39 |
40 | ## How to get involved in the working group
41 |
42 | - RFCs requiring champions: [https://benjie.dev/rfcs/](https://benjie.dev/rfcs/)
43 | - Documentations
44 |
--------------------------------------------------------------------------------
/notes/2024/2024-05.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - May 2024
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | ## Request for feedback on graphql-js change regarding "dev-mode" detection (process.env, globalThis.process.env) (2m, Benjie)
7 |
8 | - [graphql/graphql-js#4075](https://github.com/graphql/graphql-js/issues/4075)
9 | - If you are impacted by this, please take a look and give us feedback, we want
10 | to make a decision next GraphQL-JS-WG Meeting.
11 | - Notes:
12 | - Benjie: `instanceof` checks - if you’re familiar with Node, you know the
13 | “dual package hazard” endemic to ESM/CJS
14 | - Different solutions proposed to problem in the link - please do weigh in on
15 | this issue
16 | - Next GraphQL.js WG we will make a decision and ship it - so please do weigh
17 | in!
18 |
19 | ## Restricting graphql-js exports to one or few entry points. (2m, Jeff)
20 |
21 | - [graphql/graphql-js#4074](https://github.com/graphql/graphql-js/issues/4074)
22 | - Looking for feedback from dependent library authors if they would be impacted
23 | by this change and if someone has specific concerns.
24 | - Please do check your projects and copypaste the template into this issue
25 | - Matt: we could probably list everything as an export path
26 | - Would be useful if there was a script to fix on upgrade to fix all package
27 | imports
28 | - Might ease adoption of a version bump - (like a codemod?)
29 |
30 | ## Additional Topics
31 |
32 | - TSC voting process
33 | - [https://github.com/graphql/graphql-wg/pull/1515](https://github.com/graphql/graphql-wg/pull/1515)
34 | - GraphQLConf CFP open :)
35 | - [https://graphql.org/conf/2024/speak/](https://graphql.org/conf/2024/speak/)
36 |
--------------------------------------------------------------------------------
/notes/2025/2025-07.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - July 2025
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | # July secondary meeting
7 |
8 | ### Schema coordinates
9 |
10 | - Lee: looks like schema coordinates is a separate grammar (so that we don’t
11 | have to have questions about comments, whitespace, etc…)
12 | - Benjie: different syntax, but same tokens.
13 | - Lee: we already have dot punctuator, which can be handled separately for
14 | schema coordinates.
15 | - Mark: function on AST nodes? Used for error messages.
16 | - Benjie: Do we need a separate appendix B? What does that mean for “Name”?
17 | - Lee: “Name” is already a lexical token.
18 | - Benjie: looks like we need a separate lexer implementation?
19 | - Lee: yes. `parseName()` can probably be reused. No String values. No
20 | complicated lex tokens.
21 | - Lee: it’s also good for tree shaking/robustness
22 | - Mark: feeling good about the graphql-js changes
23 | - Lee: I can do a PR on your PR about the graphql-spec
24 | - Mark: is it still OK for the spec cut?
25 | - Lee: it may still be good?
26 |
27 | ### Error reporting for sibling field
28 |
29 | - Benjie: after the error has propagated, no other error can propagate
30 | - Lee: parallel execution: 2 errors are encountered
31 | - Lee: it’s non-deterministic
32 | - Benjie: that is fine
33 | - Lee: we could add “propagationDepth”
34 | - Lee: iOS engineers wanted to avoid drawing partial object
35 |
36 | ### visitedFragments
37 |
38 | - Lee: for fields, we group per arguments/directives
39 | - What if we add a similar rule for fragments?
40 | - Benjie: that doesn’t work with components oriented design
41 | - Lee: we break that already for fields. Fragments are not modulazired.
42 |
--------------------------------------------------------------------------------
/.github/workflows/wgutils-automerge.yml:
--------------------------------------------------------------------------------
1 | name: Agenda auto-merge
2 |
3 | on:
4 | pull_request_target:
5 | types: [synchronize, opened, reopened]
6 |
7 | permissions:
8 | contents: write
9 | pull-requests: read
10 | checks: read
11 |
12 | jobs:
13 | validate-and-merge:
14 | if: ${{ github.event.pull_request.base.ref == 'main' }}
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | # SECURITY: it's critical we do not check out the source pull request!
19 | - name: Checkout the main branch
20 | uses: actions/checkout@v3
21 | with:
22 | ref: main
23 |
24 | # We need wgutils to be installed
25 | - run: yarn install
26 |
27 | - name: Wait for checks to pass
28 | env:
29 | GH_TOKEN: ${{ github.token }}
30 | run: |
31 | # Give 15 seconds for any checks to register
32 | sleep 15
33 |
34 | # Wait for checks to pass
35 | gh pr checks ${{ github.event.pull_request.number }} --fail-fast --watch --required 2>&1 || true
36 | # Now get the result in JSON
37 | CHECKS_OUTPUT="$(gh pr checks ${{ github.event.pull_request.number }} --required --json bucket --jq 'map(.bucket == "pass") | all' 2>&1 || true)"
38 |
39 | if [[ "$CHECKS_OUTPUT" == "true" ]]; then
40 | echo "$CHECKS_OUTPUT"
41 | else
42 | echo "PR state failed? $CHECKS_OUTPUT"
43 | exit 1
44 | fi
45 |
46 | - name: Automerge if wgutils approves
47 | env:
48 | GH_TOKEN: ${{ github.token }}
49 | run: |
50 | if yarn wgutils can-automerge "${{ github.event.pull_request.number }}" "${{ github.event.pull_request.head.sha }}"; then
51 | gh pr merge "${{ github.event.pull_request.number }}" --squash --auto --match-head-commit "${{ github.event.pull_request.head.sha }}"
52 | fi
53 |
--------------------------------------------------------------------------------
/notes/2024/2024-06.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - June 2024
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | ## Editorial change to "composite" term (2m, Jovi)
7 |
8 | - [https://github.com/graphql/graphql-spec/pull/1078](https://github.com/graphql/graphql-spec/pull/1078)
9 |
10 | ## Editorial: show how the parts of a request are passed to ExecuteRequest (5m, Benjie)
11 |
12 | - [https://github.com/graphql/graphql-spec/pull/1090](https://github.com/graphql/graphql-spec/pull/1090)
13 | - Discussed in the April WG
14 | - Wanted to define “extensions”
15 | - This now explicitly calls it with all the named parameters
16 | - Sets us up for future changes to be smaller
17 |
18 | ## Move Fragment Arguments RFC to RFC2? (10m, Jovi)
19 |
20 | - [https://github.com/graphql/graphql-spec/pull/1081](https://github.com/graphql/graphql-spec/pull/1081)
21 | - Matt: There no remaining major pieces that are left unbuilt. Minor issues to
22 | be worked on before acceptance
23 | - Lee: I think this means we’re really close, and we just need validator
24 | - Matt: Ready to push to RFC2 as soon as we have that
25 | - Rob: With GraphQL.js there was an issue with large arguments. Is that still an
26 | issue?
27 | - Jovi: I believe we don’t serialize and just use names now
28 | - Benjie: I think we can do it purely on the the name now for preventing
29 | recursion
30 | - Lee: We previously discussed that it’s a validation error to use a fragment in
31 | the same selection set with different arguments (similar to fields). With
32 | fields you would use field aliases, so that naturally leads to the idea of
33 | fragment aliases.
34 |
35 | ## Define data collections used in the spec (10m, Benjie)
36 |
37 | - Benjie: in the April WG we discussed that we don’t state the order of things
38 | very well
39 | - Benjie: could you just return the result in random order for the introspection
40 | etc
41 | - Benjie: we are working to making this clear, we broadly define what a list/map
42 | is
43 |
--------------------------------------------------------------------------------
/agendas/2018/2018-05-24.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #5
2 |
3 | To attend this meeting, edit this page to add your name to the list of attendees
4 | and include any additions to the Agenda below.
5 |
6 | - **Video Conference Link**: https://meet.google.com/fgn-fyyh-hxd
7 | - **Live Notes**: https://docs.google.com/document/d/1JPUTGyXAvzIuSENEjjEIG9-ryI-5126tq8kpD-QCiKc/edit?usp=sharing
8 | - **Date**: May 24th 2018
9 | - **Time**: 9:00PM - 12:00AM UTC
10 | - 2:00PM - 5:00PM PDT (UTC-7) (California)
11 | - 7:00AM - 10:00AM AEST (UTC+10) (May 25th) (Sydney)
12 | - 11:00PM - 2:00AM CEST (UTC+2) (Berlin)
13 |
14 | ## Physical Locations
15 |
16 | TBD
17 |
18 | ## Attendees
19 |
20 | Name | Organization | Location
21 | -------------------- | ------------- | ----------------------
22 | Lee Byron | Robinhood | Menlo Park, CA
23 | Theodor Diaconu | Cult of Coders| Iasi, Romania
24 | Samer Buna | jsComplete | Stateline, NV
25 | Oleg Ilyenko | Sangria | Berlin, Germany
26 | Johannes Schickling | Prisma | San Francisco, CA
27 | Søren Bramer Schmidt | Prisma | San Francisco, CA
28 | Andreas Marek | graphql-java/Atlassian | Sydney
29 | Michael Paris* | AWS | Seattle, WA
30 | Antoine Boyer* | AWS | Seattle, WA
31 | Ivan Goncharov | APIs.guru | Lviv, Ukraine
32 | Tony Ghita | Twitch | San Francisco, CA
33 | Brad Baker | Atlassian |
34 |
35 | \*: willing to take notes (eg. Joe Montana*)
36 |
37 | ## Agenda
38 |
39 | 1. Opening of the meeting
40 | 1. Introduction of attendees
41 | 1. Review agenda (5m)
42 | 1. Determine volunteers for note taking (5m)
43 | 1. Plans for special session next month (LB,JS 5m)
44 | 1. Dates for upcoming sessions (LB, 5m)
45 | 1. Update from editor on May2018 release (LB, 5m)
46 | 1. Limiting the scope of "Directives Are Unique Per Location" validation, [#429](https://github.com/facebook/graphql/issues/429). (OI 10m)
47 | 1. Acceptance test update
48 | 1. Transport level batching questions
49 |
50 |
51 | ## Agenda and Attendee guidelines
52 |
53 | - To cover everything, discussion will be time-constrained per topic.
54 | - Topics that require less discussion should be covered first.
55 | - To respect meeting size, attendees should be relevant to the agenda.
56 | - Read the [participation guidelines](../README.md#participation-guidelines).
57 |
--------------------------------------------------------------------------------
/rfcs/FieldExtensions.md:
--------------------------------------------------------------------------------
1 | # RFC: Field Extensions
2 |
3 | **Champion:** [Emily Goodwin](https://github.com/egoodwinx)
4 | **Co-Champion:** [Martin Bonnin](https://github.com/martinbonnin)
5 |
6 | ## Problem statement
7 |
8 | The current GraphQL specification allows [type system extensions](https://spec.graphql.org/draft/#sec-Type-System-Extensions).
9 |
10 | For example, it is possible to add directives to an existing type. In this example (from the [specification text](https://spec.graphql.org/draft/#sel-FAHZnCNCAACCck1E)), a directive is added to a User type without adding fields:
11 |
12 | ```graphql
13 | extend type User @addedDirective
14 | ```
15 |
16 | The same thing is not possible for fields:
17 |
18 | ```graphql
19 | # This is not valid GraphQL
20 | extend type User {
21 | id: ID! @key
22 | }
23 | ```
24 |
25 | This has been an ongoing pain point when working in clients that do not own the schema but want to annotate it for codegen or other reasons. In Apollo Kotlin, this has led to the proliferation of directives ending in `*Field` whose only goal is to work around that limitation. For an example, this is happening in the [nullability directives](https://specs.apollo.dev/nullability/v0.4/):
26 |
27 | ```graphql
28 | # This can be added to a field definition directly
29 | directive @semanticNonNull(levels: [Int!]! = [0]) on FIELD_DEFINITION
30 |
31 | # This is the same thing but on the containing type.
32 | # It is more verbose and cumbersome to write and maintain
33 | directive @semanticNonNullField(name: String!, levels: [Int!]! = [0]) repeatable on OBJECT | INTERFACE
34 | ```
35 |
36 | ## Proposal
37 |
38 | This proposal introduces specific syntax to add directive to existing field definitions. It builds on top of the [schema coordinates RFC](https://github.com/graphql/graphql-wg/blob/main/rfcs/SchemaCoordinates.md) to allow for a shorter syntax:
39 |
40 | ```graphql
41 | extend field User.id @key
42 | ```
43 |
44 | Or for the nullability example above:
45 |
46 | ```graphql
47 | extend field User.address @semanticNonNull
48 | ```
49 |
50 | This syntax purposedly disallows changing the type of the field and is limited to adding directives. The same validation as for other type system extensions would apply: the directive needs either not be already present or be repeatable.
51 |
52 | Syntax:
53 |
54 | ```
55 | FieldExtension:
56 | extend field FieldCoordinates Directives[const]
57 | ```
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/rfcs/FeatureDiscovery.md:
--------------------------------------------------------------------------------
1 | # RFC: Feature Discovery
2 |
3 | **Proposed by:**
4 |
5 | - [Young Min Kim](https://github.com/aprilrd) - The Trade Desk
6 |
7 | This RFC provides a way for the clients to determine if a GraphQL server supports a feature that cannot be discovered through the current GraphQL introspection functionality.
8 |
9 | ## 📜 Problem Statement
10 |
11 | Thus far, a GraphQL client could use the [schema introspection](https://spec.graphql.org/draft/#sec-Schema-Introspection.Schema-Introspection-Schema) to check if a feature is available on a server. For example, a client can discover Defer/Stream through the `directives` field and Input Union through the `mutationType` field.
12 |
13 | However, some new GraphQL features such as Client Controlled Nullability, Fragment Arguments, and Fragment Modularity change the syntax of the GraphQL documents, which cannot be described via the existing schema introspection. We would like a way to describe a server's supported feature set in an unambigous way.
14 |
15 | ## ✅ RFC Goals
16 |
17 | - A unambigous way to describe a supported feature set
18 | - Open a path for developer tools to validate documents based on the target server's supported features
19 |
20 | ## 🚫 RFC Non-goals
21 |
22 | - TBD
23 |
24 | ## 🗿 Prior Art
25 |
26 | A GraphQL client can choose to test the support by requesting a document with the specific feature and checking errors in response. However, this method requires a client to understand how a server can fail given a specific unsupported feature; how a server returns an error for an unknown syntax (`Syntax Error: Expected Name, found !`) is different from how a server returns an error for an unknown directive (`Unknown directive "defer".`). So the status quo is not acceptable.
27 |
28 | ## Related Issues
29 |
30 | * Client Controlled Nullability: https://github.com/graphql/graphql-spec/pull/895
31 | * Fragment Arguments: https://github.com/graphql/graphql-spec/pull/865
32 | * Fragment Modularity: https://github.com/graphql/graphql-wg/pull/839
33 |
34 | ## 🧑💻 Proposed Solution
35 |
36 | TBD
37 |
38 | ### Option A: Extending a schema for schema introspection
39 |
40 | We can add a new field `__features` under the `__Schema` type. `__features` can return a list of features in some shape.
41 |
42 | ### Option B: Add a new root-level meta field next to `__schema` and `__type`
43 |
44 | `__feature` will take an argument for a feature name such as `non-nullable-designator` and returns _some info_ or `null`.
45 |
46 | ### Option C: TBD
47 |
48 |
--------------------------------------------------------------------------------
/rfcs/SchemaFragments.md:
--------------------------------------------------------------------------------
1 | # RFC: Schema Fragments
2 |
3 | ## Problem
4 |
5 | When writing large schemas, there is no way to reuse similar fields between `ObjectTypeDefinition`(s) and `InputValueDefinition`(s). One can use [interfaces](https://spec.graphql.org/June2018/#sec-Interfaces) to enforce that particular fields are implemented, though this doesn't really help, as a schema creator I still have to repeat X fields on X amount of types.
6 |
7 | Below I have `Users`(s) and `Post`(s) and where both types have the following properties; `id`, `createdAt` and `updatedAt`:
8 |
9 | ```graphql
10 | type User {
11 | id: ID # Repeated
12 | createdAt: DateTime # Repeated
13 | updatedAt: DateTime # Repeated
14 | name: String
15 | }
16 |
17 | type Post {
18 | id: ID # Repeated
19 | createdAt: DateTime # Repeated
20 | updatedAt: DateTime # Repeated
21 | content: String
22 | }
23 | ```
24 |
25 | > Notice how the three properties are repeated.
26 |
27 | As mentioned, you can use interfaces here, so for example a `BaseInterface` that contains the properties, and then this is implemented on each type:
28 |
29 | ```graphql
30 | interface BaseInterface {
31 | id: ID # Repeated
32 | createdAt: DateTime # Repeated
33 | updatedAt: DateTime # Repeated
34 | }
35 |
36 | type User implements BaseInterface {
37 | id: ID # Repeated
38 | createdAt: DateTime # Repeated
39 | updatedAt: DateTime # Repeated
40 | name: String
41 | }
42 |
43 | type Post implements BaseInterface {
44 | id: ID # Repeated
45 | createdAt: DateTime # Repeated
46 | updatedAt: DateTime # Repeated
47 | content: String
48 | }
49 | ```
50 |
51 | However, this isn't helpful at scale because your still repeating each field.
52 |
53 | ## Solution
54 |
55 | Enable the usage of fragments on `ObjectTypeDefinition`(s) and `InputValueDefinition`(s) to reduce the repetition of common fields.
56 |
57 | Below I have `Users`(s) and `Post`(s) and where both types have the following properties; `id`, `createdAt` and `updatedAt`. The listed properties are only defined once and I use the fragment spread syntax to apply them to each type:
58 |
59 | ```graphql
60 | fragment BaseInterface on ObjectTypeDefinition {
61 | id: ID
62 | createdAt: DateTime
63 | updatedAt: DateTime
64 | }
65 |
66 | type User {
67 | ...BaseInterface
68 | name: String
69 | }
70 |
71 | type Post {
72 | ...BaseInterface
73 | content: String
74 | }
75 | ```
76 |
77 | ## Implementation
78 |
79 | I assume that the GraphQL parser would need to be adapted to allow the usage of fragments on the fields, and then I see it being something that your tool should implement similar to how interfaces are enforced.
80 |
--------------------------------------------------------------------------------
/notes/2025/2025-11.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - November 2025
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | ### TSC elections
7 |
8 | Lee: November-December tend to move very slowly. The last batch of TSC ends in
9 | January. We need to update.
10 |
11 | TSC nominations are open all of the time.
12 |
13 | Suggestion: kick off votes in January
14 |
15 | (Thumbs up from the audience)
16 |
17 | ### Reminder: grants available for key initiatives
18 |
19 | AI grants are welcome
20 |
21 | ### RFC: Object Identification / **id meta field & **Entity meta interface
22 |
23 | Lenz: the client has no schema knowledge. This makes it hard to inject the “id”
24 | field
25 |
26 | Linters are hard to setup. People forget to add them all the times, etc…
27 |
28 | Matt (in chat): we have this internally and it’s not good enough.
29 |
30 | Lee: id may represent different things. Maybe it’s the identifier, maybe it’s a
31 | refetchable token, maybe it’s a cache key.
32 |
33 | Matt (in chat): we have found a limiting factor is the need to continue to fetch
34 | `__typename` which greatly limits our schema evolution.
35 |
36 | Lee: we could build referential transparency
37 |
38 | Matt: this was a thing at facebook. But:
39 |
40 | - strong != fetchable
41 | - What you want is something short and globally unique.
42 |
43 | The typenames are maybe long (~30, ~40) and that adds to the payload size.
44 |
45 | Schema evolution becomes hard if you depend on typename. For an example, you
46 | can’t change an object to an interface.
47 |
48 | Lee (in chat): use `__key` instead of `id`
49 |
50 | Lee: would be nice to have someone from Meta brain dump what they have tried.
51 |
52 | Lee: something that serves multiple purposes is hard. Uncoupling would be good
53 | and allow graph mode response formats, etc…
54 |
55 | Lee: moving to RFC1
56 |
57 | ### Updating the description of Fragments in the spec
58 |
59 | Benjie: we really really strongly should be encouraging this.
60 |
61 | We should also have it in the documentation but it should be in the spec.
62 |
63 | Lee: non-normative note
64 |
65 | The spec should be careful about best practices, it’s more about requirements.
66 |
67 | Janette: “component” isn’t great, let’s figure out a better word for “component”
68 |
69 | Janette: We should have a separate client spec! Describing client best practices
70 | is hard in the current spec
71 |
72 | Matt: should we put motivation in the spec? It feels separate from the spec.
73 |
74 | ### Release trains
75 |
76 | ### Capabilities
77 |
78 | Benjie: we can do the capabilities
79 |
80 | ### defer/stream Updates
81 |
--------------------------------------------------------------------------------
/agendas/2018/2018-03-22.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #4
2 |
3 | To attend this meeting, edit this page to add your name to the list of attendees
4 | and include any additions to the Agenda below.
5 |
6 | - **Video Conference Link**: https://bluejeans.com/821051302
7 | - **Live Notes**: [Google Doc](https://docs.google.com/document/d/1sr0JCRM0kIBmUE7mGes2WsRvAiv6FBGKwb58nNNAVhI/edit?usp=sharing)
8 | - **Date**: March 22th 2018
9 | - **Time**: 2:00PM - 5:00PM PST
10 | - 8:00AM - 11:00AM GMT+11
11 | - 10:00PM - 1:00AM GMT+1
12 |
13 | ## Attendees
14 |
15 | Name | Organization | Location
16 | -------------------- | ------------- | ----------------------
17 | Lee Byron | Facebook | Menlo Park, CA
18 | Oleg Ilyenko | Sangria | Berlin, Germany
19 | Cole Turner* | PayPal | San Jose, CA
20 | Mike Marcacci | Boltline | Moab, UT
21 | Siddharth Gupta* | Glassdoor | San Francisco, CA
22 | Ivan Goncharov | APIs.guru | Lviv, Ukraine
23 | Andreas Marek | graphql-java/Atlassian | Sydney, Australia
24 | Brad Baker | graphql-java/Atlassian | Sydney, Australia
25 | Johannes Schickling | Graphcool | Menlo Park, CA
26 | Evans Hauser | Apollo | San Francisco, CA
27 | Tony Ghita | graphql-go/Twitch | San Francisco, CA
28 |
29 | \*: willing to take notes (eg. Joe Montana*)
30 |
31 | ## Agenda
32 |
33 | 1. Opening of the meeting (LB)
34 | 1. Introduction of attendees (all)
35 | 1. Review agenda (LB, 5m)
36 | 1. Determine volunteers for note taking (LB, 5m)
37 | 1. Update on next spec release (LB, 10m)
38 | 1. Continue discussing interface hierarchies (MM, 10m) [RFC](https://github.com/facebook/graphql/pull/373), [POC](https://github.com/graphql/graphql-js/pull/1218)
39 | - Do we have a compelling enough use case?
40 | - What are the change costs, exactly?
41 | - Next steps (merge, kill, stall?)
42 | 1. [Null default values](https://github.com/facebook/graphql/pull/418) (LB, 15m)
43 | 1. [OpenCRUD](https://github.com/opencrud/opencrud) (JS, 10m)
44 | 1. [Top level directives](https://github.com/facebook/graphql/issues/410) (all, 5m)
45 | 1. GraphQL.js documentation (LB/JS 5m)
46 | 1. GraphQL ecosystem docs (LB/JS 10m)
47 | 1. Ecosystem pairity between programming languages? (LB/JS 10m)
48 | - Shared tasks needing help? Perhaps Google summer of code or just new people?
49 |
50 |
51 | ## Agenda and Attendee guidelines
52 |
53 | - To cover everything, discussion will be time-constrained per topic.
54 | - Topics that require less discussion should be covered first.
55 | - To respect meeting size, attendees should be relevant to the agenda.
56 | - Read the [participation guidelines](../README.md#participation-guidelines).
57 |
--------------------------------------------------------------------------------
/notes/2025/2025-12.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - December 2025
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | ## **TSC elections editorial** (5m, Benjie)
7 |
8 | - [Fix a bunch of typos](https://github.com/graphql/graphql-wg/pull/1857/files)
9 | - [Fix term dates](https://github.com/graphql/graphql-wg/pull/1858/files)
10 | - [Mailing list is private](https://github.com/graphql/graphql-wg/pull/1859/files)
11 |
12 | Please review.
13 |
14 | ## **TSC elections**: open for self-nominations (5m, Host)
15 |
16 | - [Election process](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#election-process)
17 | - [Nomination form](https://tsc-nomination.graphql.org/)
18 |
19 | The form is published and ongoing. It’s now evergreen.
20 |
21 | Martin: can we make an issue? \
22 | Lee: yup. \
23 | Benjie: the current batch is moved 1 month \
24 | Lee: sounds good.
25 |
26 | ## **TSC**: Please approve "handbooks" project (5m, Benjie)
27 |
28 | Benjie: community-maintained. More nuanced.
29 |
30 | Central location
31 |
32 | Martin: how do you want feedback?
33 |
34 | Benjie: put a thumbsup in the signal chat
35 |
36 | ## **Release trains** (1m, Martin)
37 |
38 | - Next train is coming in August 2026
39 | 🚆[ https://github.com/graphql/graphql-wg/commit/2e59337e1c32004d2a470abe13bcbde106028427#diff-0a56fdef517219e1e64b42887631cd81321957af3dfc460dc6bdba756f39dfe0R64](https://github.com/graphql/graphql-wg/commit/2e59337e1c32004d2a470abe13bcbde106028427#diff-0a56fdef517219e1e64b42887631cd81321957af3dfc460dc6bdba756f39dfe0R64)
40 |
41 | Martin: just a simple announcement, that’s all there is.
42 |
43 | ## **scalars.graphql.org** (10m, Martin)
44 |
45 | - What is the criteria to
46 | merge?[ graphql/graphql-scalars#38](https://github.com/graphql/graphql-scalars/pull/38)
47 | - [graphql/graphql-scalars#39](https://github.com/graphql/graphql-scalars/issues/39)
48 | - [https://github.com/graphql/graphql-scal ars/pulls](https://github.com/graphql/graphql-scalars/pulls)
49 |
50 | Versioning: the website should include the latest version. \
51 | Lee: we should remove the friction. Versioning helps with that.
52 |
53 | ## **Issue club** (5m, Martin)
54 |
55 | - [#1673](https://github.com/graphql/graphql-wg/issues/1673)
56 | - Do we want to do this in the main wg or in a separate meeting?
57 |
58 | Let’s use the secondary working group.
59 |
60 | ## **Discuss RFC field extensions** (10m, Emily)
61 |
62 | - Review the spec CR, do we want changes to the
63 | format?[ graphql/graphql-spec#1196](https://github.com/graphql/graphql-spec/pull/1196)
64 | - [https://github.com/graphql/graphql-wg/blob/main/rfcs/FieldExtensions.md](https://github.com/graphql/graphql-wg/blob/main/rfcs/FieldExtensions.md)
65 |
66 | Do we want to allow adding arguments?
67 |
68 | We should revisit adding a description for Types/Fields
69 |
--------------------------------------------------------------------------------
/agendas/2017/2017-08-14.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #1
2 |
3 | [Notes](../notes/2017-08-14.md)
4 |
5 | - **Date**: 14 August 2017
6 | - **Time**: 9:00 AM to 12:00 PM PDT
7 |
8 | ## Physical Locations
9 |
10 | If you plan to join at one of these locations, please reach out to the contact
11 | *before* showing up so they know to expect you and to receive logistics. Plan to
12 | arrive at least 10 minutes before the meeting begins.
13 |
14 | - Facebook, Menlo Park, CA
15 | - **Location**:
16 | 1 Facebook Way, Building 20
17 | Menlo Park, CA, 94025
18 | - **Contact**: Lee Byron \
19 | - Apollo HQ, San Francisco, CA
20 | - **Location**:
21 | 140 10th Street
22 | San Francisco, CA, 94103
23 | - **Contact**: Sashko Stubailo \
24 |
25 | ## Attendees
26 |
27 | Name | Organization | Location
28 | ------------- | ------------- | -------------
29 | Lee Byron | Facebook | Menlo Park, CA
30 | Greg Hurrell | Facebook | Menlo Park, CA
31 | Angel Gomez\* | Facebook | Menlo Park, CA
32 | Johannes Schickling | Graphcool | Berlin, Germany
33 | Ivan Goncharov| APIs.guru | Lviv, Ukraine
34 | Sashko Stubailo | Apollo | San Francisco, CA
35 | Oleg Ilyenko | Sangria | Berlin, Germany
36 | Andi Marek | graphql-java | Germany
37 | Robert Zhu | Facebook | Boston, MA
38 | James Baxley | Apollo | Anderson, SC
39 | Dan Schafer | Facebook | Menlo Park, CA
40 | Martijn Walraven | Apollo | Amsterdam, The Netherlands
41 | Ian MacLeod | Convoy | Seattle, WA
42 | Robert Mosolgo | graphql-ruby | Charlottesville, VA
43 | Thea Lamkin | Apollo | San Francisco, CA
44 |
45 | \*: willing to take notes (eg. Joe Montana*)
46 |
47 | ## Agenda
48 |
49 | 1. Opening of the meeting
50 | 1. Introduction of attendees
51 | 1. Determine volunteers for note taking (5m)
52 | 1. Review agenda (5m)
53 | 1. Discuss upcoming meeting schedule (5m)
54 | 1. [GCL: GraphQL Configuration Language](https://github.com/graphcool/gcl) (5m)
55 | 1. [Status Update on Subscriptions error-handling](https://github.com/graphql/graphql-js/pull/918) (10m)
56 | 1. ["Verbatim string" literals and schema descriptions](https://github.com/graphql/graphql-js/pull/926) (30m)
57 | 1. [Standardizing unique IDs in the spec/tooling](https://github.com/facebook/graphql/pull/232) (30m)
58 | 1. [Define process for the changes to the specification](https://github.com/graphql/graphql-wg/issues/9) (30m)
59 | 1. GraphQL Configuration for cross-tool usage.
60 | 1. [Clarify relationship between custom scalars and serialization formats](https://github.com/facebook/graphql/issues/337) (if time permits)
61 | 1. Meta: How has this meeting worked today? (10m)
62 |
63 | ## Agenda and Attendee guidelines
64 |
65 | - To cover everything, discussion will be time-constrained per topic.
66 | - Topics that require less discussion should be covered first.
67 | - To respect meeting size, attendees should be relevant to the agenda.
68 | - Read the [participation guidelines](../README.md#participation-guidelines).
69 |
--------------------------------------------------------------------------------
/agendas/2018/2018-02-01.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #3
2 |
3 | [Notes](../notes/2018-02-01.md)
4 |
5 | - **Date**: February 1st 2018
6 | - **Time**: 9:00AM - 12:00PM PST
7 |
8 | ## Physical Locations
9 |
10 | We've booked a large room at Facebook HQ in Building 23 for this meeting, and
11 | can host lunch afterwards. If you plan to join at this location, please
12 | reach out to the contact *before* showing up so they know to expect you and to
13 | receive logistics. Plan to arrive at least 10 minutes before the meeting begins.
14 |
15 | - Facebook, Menlo Park, CA
16 | - **Location**:
17 | 1 Facebook Way, Building 23
18 | Menlo Park, CA, 94025
19 | - **Contact**: Lee Byron \
20 |
21 | ## Attendees
22 |
23 | Name | Organization | Location
24 | -------------------- | ------------- | ----------------------
25 | Lee Byron | Facebook | Menlo Park, CA
26 | Ivan Goncharov | APIs.guru | Lviv, Ukraine
27 | Johannes Schickling | Graphcool | San Francisco, CA
28 | Søren Bramer Schmidt | Graphcool | San Francisco, CA
29 | Marc Giroux | GitHub | Montreal, Canada
30 | Oleg Ilyenko | Sangria | Berlin, Germany
31 | Kim Brandwijk | Supergraphql | The Netherlands
32 | Orta Therox * | Artsy | New York City, NY
33 | Alan Johnson * | Artsy | New York, NY
34 | Mike Marcacci | Boltline | San Diego, CA
35 | Syrus Akbary | Graphene | San Francisco, CA
36 | James Baxley | Apollo | Anderson, SC
37 | Martijn Walraven | Apollo | Amsterdam, The Netherlands
38 | Sashko Stubailo | Apollo | San Francisco, CA
39 | Jimmy Jia | 4Catalyzer | New York, NY
40 |
41 | \*: willing to take notes (eg. Joe Montana*)
42 |
43 | ## Agenda
44 |
45 | 1. Opening of the meeting
46 | 1. Introduction of attendees
47 | 1. Review agenda (5m)
48 | 1. Determine volunteers for note taking (5m)
49 | 1. Discuss upcoming meeting schedule (5m)
50 | 1. Share status of Schema Definition Language & Next spec version (10m)
51 | 1. Present [graphql-import](https://github.com/graphcool/graphql-import) (5m)
52 | 1. Next steps for ["GraphQL over HTTP" spec](https://github.com/APIs-guru/graphql-over-http) (15m)
53 | 1. [SDL syntax for custom scalars](https://github.com/facebook/graphql/pull/326#issuecomment-347948670) (15m)
54 | 1. Discuss subscriptions for live queries (15m)
55 | 1. Discuss moving connection/global ID specs from Relay into best practices repo (15m)
56 | 1. Exposing schema metadata (30m)
57 | 1. Discuss errors (30m)
58 | 1. Discuss interface hierarchies (30m) [RFC](https://github.com/facebook/graphql/pull/373), [POC](https://github.com/graphql/graphql-js/pull/1218)
59 |
60 | ## Agenda and Attendee guidelines
61 |
62 | - To cover everything, discussion will be time-constrained per topic.
63 | - Topics that require less discussion should be covered first.
64 | - To respect meeting size, attendees should be relevant to the agenda.
65 | - Read the [participation guidelines](../README.md#participation-guidelines).
66 |
--------------------------------------------------------------------------------
/agendas/2019/2019-08-01.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – August 2019
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. Anyone in the public GraphQL
6 | community may attend, provided they first sign the [Specification Membership Agreement](https://github.com/graphql/foundation) or belong to an organization who has signed.
7 |
8 | - **Video Conference Link**: https://meet.google.com/tzs-aqvz-opr
9 | - **Live Notes**: https://docs.google.com/document/d/1Q-e2iuW9U2C-P-PNZ5NesCtcuLX1IgF6RKT1B4v_Bqc/edit?usp=sharing
10 | - **Date & Time**: [August 1st 2019 16:00 - 19:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2019&month=8&day=1&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152)
11 |
12 | *NOTE:* Meeting date and time may change up to a week before the meeting.
13 | Please check the agenda the week of the meeting to confirm.
14 |
15 |
16 | ## Agenda and Attendee Guidelines
17 |
18 | *To attend this meeting or propose a topic*, edit this page and add your name
19 | to the list of attendees below along with your organization and location. Add any agenda item you wish to discuss, please include relevant links.
20 |
21 | - Each attendee (or attendee's organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
22 | - Read the [participation guidelines](../README.md#participation-guidelines).
23 | - To cover everything, discussion may be time-constrained per topic.
24 | - Topics that require less discussion should be covered first.
25 | - To respect meeting size, attendees should be relevant to the agenda.
26 |
27 |
28 | ## Attendees
29 |
30 | Name | Organization | Location
31 | -------------------- | ------------------ | ----------------------
32 | Lee Byron | GraphQL Foundation | Menlo Park, CA
33 | Robert Zhu | AWS | Boston, MA
34 | Michael Staib | ChilliCream | Zurich
35 | Rafael Staib | ChilliCream | Zurich
36 | Dan Schafer | Facebook | Menlo Park, CA
37 | Bruno Scheufler\* | GraphCMS | Berlin, DE
38 | Krithika Prakash | IBM | New York, NY
39 | Erik Wittern | IBM Research | Yorktown Heights, NY
40 | Alan Cha | IBM Research | Yorktown Heights, NY
41 | Evan Huus | Shopify | Ottawa, Canada
42 | Ivan Goncharov | Independent Dev | Lviv, UA
43 | *ADD YOUR NAME HERE* | *COMPANY / ORG* | *WHERE YOU ARE*
44 |
45 | \*: willing to take notes (eg. Joe Montana\*)
46 |
47 |
48 | ## Agenda
49 |
50 | 1. Opening of the meeting
51 | 1. Introduction of attendees
52 | 1. Review [previous meeting's action items](../notes/2019-07-03.md#action-items) and check progress on those
53 | 1. Review agenda (5m)
54 | 1. Determine volunteers for note taking (5m)
55 | 1. Parse ambiguity [PR](https://github.com/graphql/graphql-spec/pull/598) & greedy lexing [PR](https://github.com/graphql/graphql-spec/pull/599) (Lee, 10m)
56 | 1. Number lexer follow restriction [RFC](https://github.com/graphql/graphql-spec/pull/601) (Lee, 10m)
57 | 1. libgraphqlparser (Erik) (10m)
58 | 1. GraphQL CATS (Michael Staib, et al, 10m)
59 | 1. *ADD YOUR AGENDA ITEM ABOVE HERE*
60 |
--------------------------------------------------------------------------------
/agendas/2017/2017-10-27.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #2
2 |
3 | [Notes](../notes/2017-10-27.md)
4 |
5 | - **Date**: October 27th 2017
6 | - **Time**: 9:00AM - 12:00PM PST
7 |
8 | ## Physical Locations
9 |
10 | We've booked a large room at Facebook HQ in Building 23 for this meeting, and
11 | can host lunch afterwards. If you plan to join at this location, please
12 | reach out to the contact *before* showing up so they know to expect you and to
13 | receive logistics. Plan to arrive at least 10 minutes before the meeting begins.
14 |
15 | - Facebook, Menlo Park, CA
16 | - **Location**:
17 | 1 Facebook Way, Building 23
18 | Menlo Park, CA, 94025
19 | - **Contact**: Lee Byron \
20 | - Apollo HQ, San Francisco, CA
21 | - **Location**:
22 | 140 10th Street
23 | San Francisco, CA, 94103
24 | - **Contact**: Sashko Stubailo \
25 |
26 | ## Attendees
27 |
28 | Name | Organization | Location
29 | ------------------- | ------------- | -----------------
30 | Lee Byron | Facebook | Menlo Park, CA
31 | Greg Hurrell | Facebook | Menlo Park, CA
32 | Syrus Akbary | Graphene | San Francisco, CA
33 | Hyo Jeong | Facebook | Menlo Park, CA
34 | Ivan Goncharov | APIs.guru | Menlo Park, CA
35 | Roman Hotsiy | APIs.guru | Menlo Park, CA
36 | Johannes Schickling | Graphcool |
37 | Søren B. Schmidt | Graphcool |
38 | Brad Baker | Atlassian, graphql-java | Sydney, Australia, (3am yikes)
39 | Andi Marek | Atlassian, graphql-java | Sydney, Australia
40 | Oleg Ilyenko | Sangria | Berlin, Germany
41 | Dan Schafer | Facebook | Menlo Park, CA
42 | Sashko Stubailo | Apollo | San Francisco, CA
43 | James Baxley* | Apollo | San Francisco, CA
44 | Martijn Walraven | Apollo | San Francisco, CA
45 | William Lyon | Neo4j | San Mateo, CA
46 | Michael Hunger | Neo4j | Dresden, Germany
47 |
48 | \*: willing to take notes (eg. Joe Montana*)
49 |
50 | ## Agenda
51 |
52 | 1. Opening of the meeting
53 | 1. Introduction of attendees
54 | 1. Review agenda (5m)
55 | 1. Determine volunteers for note taking (5m)
56 | 1. Review current Draft for ["Stages for changes to the GraphQL Specification"](https://github.com/facebook/graphql/blob/master/CONTRIBUTING.md) ([original PR](https://github.com/facebook/graphql/pull/342)) (10m).
57 | 1. Discuss status of [IDL specification](https://github.com/facebook/graphql/pull/90) (10m)
58 | 1. Status of [Scalar serialize as built-in scalar type](https://github.com/facebook/graphql/pull/326) RFC (10m)
59 | 1. Discuss interest in and possible scope of defining a more structured format for errors (15m)
60 | 1. Update on community projects around schema stitching (15m)
61 | 1. Namespacing discussion
62 | 1. Discuss next steps for ["Standardizing unique IDs in the spec/tooling"](https://github.com/facebook/graphql/pull/232) (20m)
63 | 1. "[GraphQL over HTTP](https://github.com/graphql/graphql-wg/pull/34)" specification (20m)
64 | 1. Discuss upcoming meeting schedule (5m)
65 |
66 | ## Agenda and Attendee guidelines
67 |
68 | - To cover everything, discussion will be time-constrained per topic.
69 | - Topics that require less discussion should be covered first.
70 | - To respect meeting size, attendees should be relevant to the agenda.
71 | - Read the [participation guidelines](../README.md#participation-guidelines).
72 |
--------------------------------------------------------------------------------
/notes/2025/summary-2025-08-21.md:
--------------------------------------------------------------------------------
1 | # Meeting Summary for Working Group Meeting
2 |
3 | **NOTICE**: This summary was auto-generated by Zoom's "AI". AI-generated
4 | content may be inaccurate or misleading. Always check for accuracy. If in
5 | doubt, please consult the meeting recording at
6 | https://youtube.com/@GraphQLFoundation/playlists
7 |
8 | - Meeting start: 2025-08-21T18:08:37Z
9 | - Meeting end: 2025-08-21T19:20:51Z
10 | - Summary start: 2025-08-21T18:45:33Z
11 | - Summary end: 2025-08-21T19:18:31Z
12 |
13 | Benjie and Mark discussed the implementation status of schema coordinates for the GraphQL spec, with Mark having submitted PRs that Benjie plans to merge into Lee's original pull request before an upcoming conference. They explored standardization needs for persisted queries, particularly focusing on query name uniqueness in mono-repos and potential namespacing approaches to ensure uniqueness across applications. The conversation also covered document identification in GraphQL, debating solutions like aliasing and the implications of having the same document exist in different clients with the same hash.
14 |
15 | ## Next Steps
16 |
17 | - Benjie to review the schema coordinates spec change carefully before GraphQL Kickoff.
18 | - Mark to open a new pull request for the schema coordinates implementation directly to the next branch in GraphQLjs.
19 | - Mark to comment on Lee's pull request about the new implementation with an independent lexer.
20 | - Mark and Benjie to continue the discussion about persisted operations/queries in person at the upcoming conference.
21 |
22 | ## Summary
23 |
24 | ### GraphQL Schema Coordinates Implementation Status
25 |
26 | Benjie and Mark discuss the status of schema coordinates implementation for the GraphQL spec. Mark has submitted PRs for both the spec change and a JavaScript implementation with an independent lexer, but they haven't been reviewed yet. The implementation avoids including unnecessary elements like whitespace and comments while maintaining position tracking for error messages. Benjie decides to merge Mark's changes into Lee's original pull request and will review the spec changes before the upcoming GraphQL conference.
27 |
28 | ### Persisted Query Standardization Discussion
29 |
30 | Mark discusses the need for standardization around persisted queries, particularly focusing on the issue of query name uniqueness in mono-repos where different projects might have identical query names but different operations. He proposes a namespacing approach for query names to ensure uniqueness across applications, which would help with setting appropriate constraints and alerts. Benjie suggests discussing this topic further in person and mentions an alternative approach of generating one trusted document containing all fragments and operations for each client version, using the operation name as a reference within that document.
31 |
32 | ### GraphQL Document Identification Solutions
33 |
34 | Benjie and Mark discuss document identification in GraphQL, with Benjie suggesting aliasing as a solution. Mark explains that people want to write config files with aliases that correlate to SHA hashes, allowing them to update queries without changing config files. They debate the implications of having the same document exist in different clients with the same hash, creating a many-to-one mapping issue. Benjie suggests storing both the hash and metadata about where documents come from, while Mark expresses concern about the complexity of requiring repository names and other metadata to compute document hashes.
35 |
--------------------------------------------------------------------------------
/notes/2025/2025-06.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - June 2025
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | Agenda:
7 | https://github.com/graphql/graphql-wg/blob/main/agendas/2025/06-Jun/05-wg-primary.md
8 |
9 | ## GraphQL Foundation Marketing Request - Input on AI Topic
10 |
11 | - GraphQL Foundation marketing committee would love to hear from you about AI.
12 | - Recognize that we're not hype-oriented, we want to talk about real things
13 | - Target software developer audience building for AI
14 | - Question to TSC: what role do we want to suggest that AI plays in that
15 | ecosystem
16 | - Please think about these questions
17 | - What would the strategy look like for talking about AI and GraphQL?
18 | - Jeff: curious to get all perspectives, they will all add dimension and weight
19 | to the piece.
20 | - Are there any concerns?
21 | - Michael: so long as the content isn't generated no concerns!
22 | - **Questions for TSC: **
23 | - **Strategic Vision**
24 | - As AI agents become primary interfaces for digital applications, how do
25 | you see the fundamental relationship between APIs and applications
26 | changing over the next 2-3 years? What role should GraphQL play in this
27 | transformation?
28 | - Given that AI systems need deterministic, policy-aware API orchestration,
29 | what specific GraphQL capabilities or patterns do you believe will become
30 | most critical for agentic applications?
31 | - **Forward-Looking Predictions**
32 | - How do you envision the developer experience changing when GraphQL becomes
33 | the primary abstraction layer between AI and backend systems? What new
34 | tooling or practices might emerge?
35 | - With protocols like MCP gaining momentum, how should the GraphQL
36 | Foundation position GraphQL to capture this wave of AI-driven API
37 | integration? What strategic initiatives might be most impactful?
38 | - As other API technologies compete for the AI integration space, what
39 | unique advantages does GraphQL offer that we should be emphasizing? Where
40 | is GraphQL most defensible?
41 | - **Foundation Strategy**
42 | - Given this AI-driven opportunity, what should be the GraphQL Foundation's
43 | top 2-3 priorities over the next 18 months to ensure GraphQL becomes the
44 | standard for AI-API orchestration?
45 | - What role should the Foundation play in developing standards or best
46 | practices for GraphQL-based AI integrations? Should we be collaborating
47 | with AI companies or protocol developers?
48 | - How can we best mobilize the GraphQL community to build the tooling,
49 | examples, and advocacy needed for this future?
50 |
51 | ## GraphQL over HTTP
52 |
53 | - How do we make this official (status code) - it’s an IETF spec; we can work
54 | with them to extend, e.g. to 294
55 | - Michael expressed some concerns for the impact on gateways
56 | - Do you have concrete examples of this breaking with current running code?
57 | - Please come to the WG if you want to discuss
58 | - Can we introduce this in a way that is not required? - Agreed that it is a
59 | “SHOULD” rather than a “MUST”
60 |
61 | ## Executable descriptions
62 |
63 | - We can add descriptions to the schema but not operations. There's already a PR
64 | open for operation descriptions; I've brought it up to date.
65 |
66 | ---
67 |
68 | Much more was discussed but no further manual notes were taken; please see the
69 | AI notes for further notes.
70 |
--------------------------------------------------------------------------------
/agendas/2018/2018-06-14.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #6
2 |
3 | *GraphQL Europe Edition* — this session is being scheduled to take place the day before the [GraphQL Europe](https://www.graphql-europe.org/) conference.
4 |
5 | To attend this meeting, edit this page to add your name to the list of attendees
6 | and include any additions to the Agenda below.
7 |
8 | - **Video Conference Link**: https://meet.google.com/pkk-vipq-atg
9 | - **Live Notes**: https://docs.google.com/document/d/1ReWmmFb6tqjXIvXe8fePZTMXZbJQHeKxHOU2sZ0nvC8/edit?usp=sharing
10 | - **Date**: June 14th 2018
11 | - **Time**: 14:30 - 16:30 UTC
12 | - 7:30AM - 9:30AM PDT (UTC-7) (California)
13 | - 12:30AM - 2:30AM AEST (UTC+10) (June 15th) (Sydney)
14 | - 4:30PM - 6:30PM CEST (UTC+2) (Berlin)
15 |
16 | ## Physical Locations
17 |
18 | **Prisma HQ**
19 | * [Torstraße 60, Berlin, Germany](https://goo.gl/maps/J8n3j7FG1Mz)
20 | * 3rd floor
21 | * Entrance is blocked, so you should enter through a shop on the right of the entrance.
22 |
23 | ## Attendees
24 |
25 | Name | Organization | Location
26 | -------------------- | ------------- | ----------------------
27 | Lee Byron | Robinhood | Berlin, Germany
28 | Johannes Schickling | Prisma | Berlin, Germany
29 | Søren Bramer Schmidt | Prisma | Berlin, Germany
30 | Divyendu Singh | Prisma | Berlin
31 | Oleg Ilyenko | Sangria | Berlin, Germany
32 | Tim Griesser | CaterCow | Brooklyn, NY
33 | Michael Hunger* | Neo4j | Berlin, Germany
34 | Steve Faulkner | Microsoft | Philadelphia, PA
35 | Jesse Rosenberger* | Apollo | Helsinki, Finland
36 | Matt Mahoney | Facebook | Menlo Park, CA
37 | James Baxley | Apollo | South Carolina, US
38 | Ivan Goncharov | APIs.guru | Berlin, Germany
39 | jon wong | Coursera | Berlin, Germany
40 | Andreas Marek | graphql-java/Atlassian | Syndey
41 |
42 | \*: willing to take notes (eg. Joe Montana*)
43 |
44 | ## Agenda
45 |
46 | 1. Opening of the meeting
47 | 1. Introduction of attendees
48 | 1. Review agenda (5m)
49 | 1. Determine volunteers for note taking (5m)
50 | 1. Update on Spec Release (LB 5m)
51 | 1. Should Interfaces be required to be implemented? ([#460](https://github.com/facebook/graphql/pull/460)) (LB 10m)
52 | 1. Update on: limiting the scope of "Directives Are Unique Per Location" validation, [#429](https://github.com/facebook/graphql/issues/429). (OI 10m)
53 | 1. Discuss proposed RFC for [inputUnion type](https://github.com/facebook/graphql/pull/395). Related [graphql-js PR](https://github.com/graphql/graphql-js/pull/1196). (TG 10m)
54 | 1. Future work process, direction, representatives from Facebook? (MH 5m)
55 | 1. Partial Results (Defer, Batch, Stream) [Lee's Presentation 2016](https://dev-blog.apollodata.com/new-features-in-graphql-batch-defer-stream-live-and-subscribe-7585d0c28b07) (MH 5-10m)
56 | 1. Licensing issues: [express-graphql](https://github.com/graphql/express-graphql/issues/434), [codemirror-graphql](https://github.com/graphql/codemirror-graphql/blob/master/PATENTS), [GraphiQL](https://github.com/graphql/graphiql/issues/10), [Logo](https://github.com/facebook/graphql/issues/398). (IG 5m)
57 | 1. Streaming discussion (10m JS)
58 |
59 | ## Agenda and Attendee guidelines
60 |
61 | - To cover everything, discussion will be time-constrained per topic.
62 | - Topics that require less discussion should be covered first.
63 | - To respect meeting size, attendees should be relevant to the agenda.
64 | - Read the [participation guidelines](../README.md#participation-guidelines).
65 |
--------------------------------------------------------------------------------
/agendas/2019/2019-07-03.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – July 2019
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. Anyone in the public GraphQL
6 | community may attend, provided they first sign the [Specification Membership Agreement](https://github.com/graphql/foundation) or belong to an organization who has signed.
7 |
8 | - **Video Conference Link**: [Google Hangout](https://meet.google.com/kko-yzzc-aqk)
9 | - **Live Notes**: [Google Doc](https://docs.google.com/document/d/1Q5l18IhpH3h3WAJDzCF62T5Sr2inAzJFgsnBg9Sg9ws/edit?usp=sharing)
10 | - **Date & Time**: [July 3rd 2019 16:00 - 19:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2019&month=7&day=3&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152)
11 |
12 | *NOTE:* Meeting date and time may change up to a week before the meeting.
13 | Please check the agenda the week of the meeting to confirm.
14 |
15 |
16 | ## Agenda and Attendee Guidelines
17 |
18 | *To attend this meeting or propose a topic*, edit this page and add your name
19 | to the list of attendees below along with your organization and location. Add any agenda item you wish to discuss, please include relevant links.
20 |
21 | - Each attendee (or attendee's organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
22 | - Read the [participation guidelines](../README.md#participation-guidelines).
23 | - To cover everything, discussion may be time-constrained per topic.
24 | - Topics that require less discussion should be covered first.
25 | - To respect meeting size, attendees should be relevant to the agenda.
26 |
27 |
28 | ## Attendees
29 |
30 | Name | Organization | Location
31 | -------------------- | ------------------ | ----------------------
32 | Lee Byron | GraphQL Foundation | Menlo Park, CA
33 | James Baxley | Apollo | South Carolina, US
34 | Devon Blandin\* | Artsy | New York, NY
35 | Andi Marek | Atlassian (GraphQL Java) | Sydney
36 | Robert Zhu | AWS | Boston, MA
37 | Michael Staib | ChilliCream | Zurich, Switzerland
38 | Rafael Staib | ChilliCream | Zurich, Switzerland
39 | Matt Mahoney | Facebook | New York, NY
40 | Dan Schafer | Facebook | Menlo Park, CA
41 | Bruno Scheufler\* | GraphCMS | Berlin, DE
42 | Craig Smitham | GraphZen | Dallas, TX
43 | Alan Cha | IBM | Cortlandt, NY
44 | Erik Wittern | IBM | New York, NY
45 | Mike Marcacci | Marcacci Labs, Inc | Woodside, CA
46 | Tanay Pratap | Microsoft | Bangalore, India
47 | Evan Huus | Shopify | Ottawa, Canada
48 | Ivan Goncharov | Individual Contrib | Lviv, Ukraine
49 |
50 | \*: willing to take notes (eg. Joe Montana\*)
51 |
52 |
53 | ## Agenda
54 |
55 | 1. Opening of the meeting
56 | 1. Introduction of attendees
57 | 1. Review agenda (5m)
58 | 1. Determine volunteers for note taking (5m)
59 | 1. Review [previous meeting's action items](../notes/2019-06-06.md#action-items) and check progress on those
60 | 1. graphql.org website planning (Tanay, 10m)
61 | 1. Interface Inheritance RFC (Maracci, 15m, [RFC](https://github.com/graphql/graphql-spec/pull/373), [Implementation](https://github.com/graphql/graphql-js/pull/1218))
62 | 1. DateTime RFC (Andi, 20m)
63 | 1. Spec editorial change criteria & plan (Ivan, 10m)
64 | 1. *ADD YOUR AGENDA ITEM ABOVE HERE*
65 |
--------------------------------------------------------------------------------
/notes/2025/2025-02.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - February 2025
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | Agenda:
7 | https://github.com/graphql/graphql-wg/blob/main/agendas/2025/02-Feb/06-wg-primary.md
8 |
9 | ## TSC elections results (2m, Host)
10 |
11 | - [Election issue](https://github.com/graphql/graphql-wg/issues/1612)
12 |
13 | - Might want to reschedule the voting window so that it doesn’t happen during
14 | the holidays.
15 | - There is now a handbook for TSC members. Should it be public?
16 | - There is a GH group for TSC emeritus (+Discord too)
17 | - Security should stay private. TSC emeritus can have access but are not
18 | expected to drive the topics.
19 |
20 | ## Announce the new[ Community WG](https://github.com/graphql/community-wg)? (5m, Uri)
21 |
22 | - Uri: New working group; first meeting is coming up next week.
23 | - Two goals:
24 | - Add more transparency
25 | - Empower the community
26 | - It's a broad scope. It's for things that don't fit into the technical working
27 | groups - for example improvements to docs/website, gatherings, social media
28 | posts, channels like Discord/Slack, etc.
29 | - It will run in the same way as the other WGs
30 | - Thinking about community growth, messaging to our community and to other
31 | communities
32 | - In the first meeting we'll discuss how often we should meet.
33 | - Come, join, influence the future of this WG!
34 | - Lee: we have the separation of GraphQL technical work being open and community
35 | first, and prioritising what's best for the community overall rather than
36 | what's best for a particular vendor; and the Foundation dealing with
37 | non-technical work only. But the non-technical work shouldn't be
38 | Foundation-only - so it's exciting we're opening this up and pulling the
39 | community and foundation board together.
40 |
41 | ## Archive[ GraphQL Playground](https://github.com/graphql/graphql-playground)? (5m, Benjie)
42 |
43 | - Intent: GraphiQL would have options so that Playground would be a thin layer
44 | on top of GraphiQL.
45 | - Last commit on Playground was 3 years ago but we still have issues getting
46 | opened.
47 | - Uri: GraphiQL should support most of the features of playground but not 100%
48 | sure
49 | - Benjie: navigation through the docs are probably possible but it’s mostly
50 | styling.
51 | - Lee: if we had maintainers, would we still have this vision of sharing the
52 | code between GraphiQLvs Playground
53 | - Lee: we could add a big banner with a big warning and a call for maintainers
54 | - Michael: What is the value of having 2 different things?
55 | - Benjie: If we keep Playground, we would probably write it on top of GraphiQL
56 | - Playground is basically a “ready to go” preset of GraphiQL
57 | - Michael: We don’t want to split the maintainer work.
58 | - Benjie: Does anyone have instructions how to move to GraphiQL? We could add
59 | those instructions to the repo.
60 | - Martin: can we archive and then de-archive if needed
61 | - Lee: yes we can
62 |
63 | ## Defer/Stream updates (20m, Rob)
64 |
65 | - [Spec update: Move "Path" to it's own section](https://github.com/graphql/graphql-spec/pull/1129)
66 | Merge as an editorial fix?
67 | - [Stream initialCount argument](https://github.com/graphql/defer-stream-wg/discussions/104)
68 | - [Stream on different instances of the same field](https://github.com/graphql/defer-stream-wg/discussions/100):
69 | Adding validation to prevent this
70 | - Please
71 | review[ Spec Edits: Section 3](https://github.com/graphql/graphql-spec/pull/1132)
72 |
--------------------------------------------------------------------------------
/JoiningAMeeting.md:
--------------------------------------------------------------------------------
1 | # Joining a meeting
2 |
3 | 1. Find information about our [set of meetings][] in the repo Readme.
4 | 2. Subscribe to our [calendar][] to see upcoming meetings.
5 | 3. Find an upcoming [agenda file][] in the `agendas/` directory.
6 | 4. Read and follow the steps below to add yourself to an upcoming meeting.
7 |
8 | [set of meetings]: https://github.com/graphql/graphql-wg#upcoming-meetings
9 | [calendar]:
10 | https://calendar.google.com/calendar/u/0/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8@group.calendar.google.com
11 | [agenda file]: https://github.com/graphql/graphql-wg/tree/main/agendas
12 |
13 | ## How to join
14 |
15 | Hello! You're welcome to join our working group meeting and add to the agenda by
16 | following these three steps:
17 |
18 | 1. Add your name to the list of attendees (in alphabetical order).
19 |
20 | - To respect meeting size, attendees should be relevant to the agenda. That
21 | means we expect most who join the meeting to participate in discussion. If
22 | you'd rather just watch, check out our [YouTube][].
23 |
24 | - Please include the organization (or project) you represent, and the
25 | location (including [country code][]) you expect to be located in during
26 | the meeting.
27 |
28 | - If you're willing to help take notes, add "✏️" after your name (eg. Ada
29 | Lovelace ✏). This is hugely helpful!
30 |
31 | 2. If relevant, add your topic to the agenda (sorted by expected time).
32 |
33 | - Every agenda item has four parts: 1) the topic, 2) an expected time
34 | constraint, 3) who's leading the discussion, and 4) a list of any relevant
35 | links (RFC docs, issues, PRs, presentations, etc). Follow the format of
36 | existing agenda items.
37 |
38 | - Know what you want to get out of the agenda topic - what feedback do you
39 | need? What questions do you need answered? Are you looking for consensus
40 | or just directional feedback?
41 |
42 | - If your topic is a new proposal it's likely an ["RFC 0"][rfc stages]. The
43 | barrier of entry for documenting new proposals is intentionally low,
44 | writing a few sentences about the problem you're trying to solve and the
45 | rough shape of your proposed solution is normally sufficient.
46 |
47 | You can create a link for this:
48 |
49 | - As an issue against the graphql-wg repo.
50 | - As a GitHub discussion in the graphql-wg repo.
51 | - As an RFC document into the rfcs/ folder of the graphql-wg repo.
52 |
53 | 3. Review our guidelines and agree to our Spec Membership & CLA.
54 |
55 | - Review and understand our Spec Membership Agreement, Participation &
56 | Contribution Guidelines, and Code of Conduct. You'll find links to these
57 | in the first agenda item of every meeting.
58 |
59 | - If this is your first time, our bot will comment on your Pull Request with
60 | a link to our Spec Membership & CLA. Please follow along and agree before
61 | your PR is merged.
62 |
63 | Your organization may sign this for all of its members. To set this up,
64 | please ask operations@graphql.org.
65 |
66 | PLEASE TAKE NOTE:
67 |
68 | - By joining this meeting you must agree to the Specification Membership
69 | Agreement and Code of Conduct.
70 |
71 | - Meetings are recorded and made available on [YouTube][], by joining you
72 | consent to being recorded.
73 |
74 | [youtube]: https://www.youtube.com/channel/UCERcwLeheOXp_u61jEXxHMA
75 | [country code]:
76 | https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes
77 | [rfc stages]:
78 | https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md#rfc-contribution-stages
79 |
--------------------------------------------------------------------------------
/agendas/2018/2018-09-20.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #7
2 |
3 | To attend this meeting, edit this page to add your name to the list of attendees
4 | and include any additions to the Agenda below.
5 |
6 | - **Video Conference Link**: https://meet.google.com/tfa-tdcm-ows
7 | - **Live Notes**: https://docs.google.com/document/d/1fFq9-3jvAxmKH4ys5di5OsLKaRLYBCW3JpbvQdDT6EY/edit?usp=sharing
8 | - **Date**: September 20th 2018
9 | - **Time**: 20:00 - 23:00 UTC
10 | - 1:00PM - 4:00PM PDT (UTC-7) (California)
11 | - 6:00AM - 9:00AM AEST (UTC+10) (Sept 21st) (Sydney)
12 | - 10:00PM - 1:00AM CEST (UTC+2) (Berlin)
13 |
14 | ## Attendees
15 |
16 | Name | Organization | Location
17 | -------------------- | ------------- | ----------------------
18 | Lee Byron | Robinhood | Menlo Park, CA
19 | Michael Staib | ChilliCream | Zurich, Switzerland
20 | Matt Mahoney | Facebook | New York, NY
21 | Bojan Tomic* | GraphQL SPQR | Amsterdam, Netherlands
22 | Syrus Akbary | Graphene | Madrid, Spain
23 | Jimmy Jia | 4Catalyzer | New York, NY
24 | Siddharth Sampath | Credit Karma | San Francisco, CA
25 | Brad Baker | Atlassian | Sydney NSW
26 | Ivan Goncharov | APIs.guru | Lviv, Ukraine
27 | Johannes Schickling | Prisma | Berlin, Germany
28 | Oleg Ilyenko | Sangria | Berlin, Germany
29 | Steve Faulkner | Microsoft | Philadelphia, PA
30 | Craig Smitham | GraphZen | Dallas, TX
31 |
32 | \*: willing to take notes (eg. Joe Montana*)
33 |
34 | ## Agenda
35 |
36 | 1. Opening of the meeting
37 | 1. Introduction of attendees
38 | 1. Review agenda (5m)
39 | 1. Determine volunteers for note taking (5m)
40 | 1. Discussion of [Allowing singular variables for lists](https://github.com/facebook/graphql/pull/509) (10m)
41 | 1. Discussion of [Variable Definition Directives](https://github.com/facebook/graphql/pull/510) (5m)
42 | 1. Update on [#429](https://github.com/facebook/graphql/issues/429) - limiting the scope of "Directives Are Unique Per Location" validation. (OI 10m)
43 | - [#470](https://github.com/facebook/graphql/pull/470) - [RFC] "Directive order is significant" section
44 | - [#471](https://github.com/facebook/graphql/pull/471) - [RFC] Limit uniqueness to `@skip`, `@include` and `@deprecated` directives _(alternative solution)_
45 | - [#472](https://github.com/facebook/graphql/pull/472) - [RFC] Limit directive uniqueness to explicitly marked directives _(alternative solution)_
46 | 1. Update on [Compatibility Acceptance Tests (CATs)](https://github.com/graphql-cats/graphql-cats). (OI 10m)
47 | - Added more validation rule tests genrated from graphql-js ([scenario files](https://github.com/graphql-cats/graphql-cats/tree/master/scenarios/validation))
48 | - Added support for previousely discussed error codes and mapping ([mapping](https://github.com/graphql-cats/graphql-cats/blob/master/scenarios/error-mapping.yaml), [docs](https://github.com/graphql-cats/graphql-cats#error-mapping))
49 | - [Proposal for CATs support in graphql-js](https://github.com/graphql/graphql-js/issues/1404)
50 | 1. [Proposal to support description on Schema](https://github.com/facebook/graphql/pull/466) (IG 5m)
51 | 1. Next steps for "Define custom scalars in terms of built-in scalars" ([spec changes](https://github.com/facebook/graphql/pull/326), [graphql-js](https://github.com/graphql/graphql-js/pull/914)) (IG 15m)
52 |
53 | ## Agenda and Attendee guidelines
54 |
55 | - To cover everything, discussion will be time-constrained per topic.
56 | - Topics that require less discussion should be covered first.
57 | - To respect meeting size, attendees should be relevant to the agenda.
58 | - Read the [participation guidelines](../README.md#participation-guidelines).
59 |
--------------------------------------------------------------------------------
/notes/2018/2018-05-24.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #5 Notes (May 24, 2018)
2 |
3 | [Agenda](../agendas/2018-05-24.md)
4 |
5 | ## Last session recap:
6 | Next upcoming session GraphQL (day before GraphQL Europe conference, possibly 3-5pm local time)
7 | Johannes Schickling to find space Lee Byron to ping regulars
8 |
9 | ## Dates for upcoming sessions:
10 | - 09-20-2018, 11-08-2018 Lee Byron to build empty agendas in graphql-wg
11 | - Cadence: 6-8 weeks for 2-3 hours.
12 |
13 | ## Updates from Lee Byron:
14 | - Academic citation tool for people to formally quote the spec. Release by the end of the week?
15 | - Release notes, needs help on compiling the list of things that changed in the spec. Release notes to be created as a draft first, to be added for next week. MP, OL, JS to help LB. We can use it as an opportunity to treat it as a PR event, coordinate the implementations around blog/posts and tweets announcing it.
16 |
17 | ## Agenda Items
18 |
19 | ### “Directives Are Unique Per Location" validation, [#429](https://github.com/facebook/graphql/issues/429):
20 | - Biggest motivation is to split up the schema. By having the directive used multiple times on the same field we can leverage type extensions to achieve that.
21 | - 3 possible solutions laid out in [#429](https://github.com/facebook/graphql/issues/429).
22 | - Should this new rule apply to both query and schema definition? Applying it to only schema could lead to implementation/confusion errors.
23 | - All possible solutions seem viable, none preferred yet.
24 |
25 | Seems like this is worth moving forward on. The biggest concerns are
26 | - where do we split behavior (SDL vs. queries)
27 | - implementations will need to change from a map to map
28 |
29 | ### There is currently no standard error messages in the spec the implementations can reliably use:
30 |
31 | ([graphql CATS](https://github.com/graphql-cats/graphql-cats)) Common testing framework to test how spec compliant a given implementation is:
32 | CATS is to be run against library implementations not a production GraphQL server.
33 |
34 | Thoughts:
35 | - Error codes/ identifiers for rules (Rules have multiple components, so an id per rule wouldn’t be granular enough)
36 | - Identifying substring?
37 | - There should be a programmatic way to understand the test results
38 | - We can add testing specification to CATS and later add it to the spec if needed
39 |
40 | Proposed solution:
41 | Have CATS introduce some concept of a mapping, that maps from implementation specific errors to GraphQL spec errors. Each implementation can contribute to CATS by adding the list of error messages for each spec rule component. OL will open a new issue on CATS to show how this would work + examples
42 |
43 | ### Transport level batching (Executing multiple operations in a single request)
44 |
45 | Thoughts:
46 | - Batch support was added to Relay. Place to start with, things needed:
47 | - List of operations & variables
48 | - Number of times to run each operation (with potentially different variables)
49 | - Dependency between operations (if any)
50 | - You can achieve primitive batching with aliasing, though operation dependency and executing both mutation and query wouldn't be possible with aliasing alone.
51 | - BB to look at championing batch support
52 |
53 | - @defer first class support, like @skip and @include? Batch wasn’t a priority for LB.
54 | - Sangria has batch support through export feature.
55 | - @defer was implemented in graphql-java
56 |
57 | ## Closing thoughts
58 |
59 | - Open source Facebook fund for GraphQL? The whole ecosystem could benefit from such a fund. Lee Byron to reach out to Facebook.
60 | - Find ways to level GraphQL ecosystem across languages.
61 |
62 | Next agendas ideas:
63 | - Map types? (find champions for new ideas and proposal to the spec)
64 |
65 |
--------------------------------------------------------------------------------
/notes/2024/2024-10.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - October 2024
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | Agenda:
7 | [https://github.com/graphql/graphql-wg/blob/main/agendas/2024/10-Oct/03-wg-primary.md](https://github.com/graphql/graphql-wg/blob/main/agendas/2024/10-Oct/03-wg-primary.md)
8 |
9 | ## [Advance @oneOf to RFC3?](https://github.com/graphql/graphql-spec/pull/825) (10m, Benjie)
10 |
11 | - Hesitation from
12 | Yaacov:[ do we need the new validation rule?](https://github.com/benjie/graphql-spec/pull/1)
13 | - Benjie: I thought we needed this, but Yaacov may be correct
14 | - Might need a slight modification
15 | - There are complexities around variables that can be embedded in a location
16 | e.g. non-nullable ones
17 | - Michael: is this an implementation details?
18 | - Benjie: I think it’s clear w/ a validation rule but Yaacov points out that if
19 | people follow the other rules then this one is potentially superfluous.
20 | - Michael: we could advance it and iterate
21 | - Benjie: not a massive rush to push to RFC3 - final editorial
22 | - It would be fine either way prob
23 | - Can change it later if needed
24 |
25 | ## Incremental Delivery update (15m, Rob)
26 |
27 | - [New Spec Draft](https://github.com/graphql/graphql-spec/pull/1110)
28 | - Rob:
29 | - New response format (June 2023) has general consensus. This version does not
30 | duplicate fields when they're both deferred and not deferred.
31 | - Implemented in GraphQL v17 alpha.
32 | - We'd love to get eyes on the spec draft. It's a big PR. Early feedback
33 | appreciated.
34 | - Plan is to break this down into an integration branch and review it section by
35 | section in smaller PRs.
36 | - Response section first describes what the response looks like.
37 | - (Benjie) If there are standalone changes to merge into the spec rather than
38 | integration branch, would be beneficial. General approach you’re proposing
39 | would be wise
40 | - See also: Rob’s GraphQLConf talk
41 | - [https://youtu.be/LEyDeNoobT0](https://youtu.be/LEyDeNoobT0)
42 | - Kewei: does this apply to defer _and_ stream?
43 | - Rob: Response format covers defer and stream, but the algorithms for stream
44 | are not here yet
45 | - Kewei: does reviewing the response format make sense if we don't have stream's
46 | algorithms specified yet?
47 | - Rob: I think it's unlikely the response format will change.
48 | - Rob: I expect the stream diff to be smaller, just a little addition on top.
49 | - [https://youtu.be/LEyDeNoobT0](https://youtu.be/LEyDeNoobT0)
50 | - Rob: planning to get an integration branch set up for next month with the
51 | response changes.
52 |
53 | ## [Replace ExecuteSelectionSet with ExecuteGroupedFieldSet](https://github.com/graphql/graphql-spec/pull/1039) (15m, Benjie)
54 |
55 | - Needed by Yaacov, Rob and Benjie's various implementations of incremental
56 | delivery, and also
57 | by[ Jovi's fragment arguments](https://github.com/graphql/graphql-spec/pull/1081#issuecomment-2329504269)
58 | PR
59 | - Essentially a re-write of some copy for the purpose of naming - helps other
60 | PRs get through with smaller diffs
61 |
62 | ## [Fix coercion table for list](https://github.com/graphql/graphql-spec/pull/1057/files) - editorial? (10m, Benjie)
63 |
64 | - Benjie: Spec table is wrong. Verified GraphQL.js behavior
65 |
66 | ## [Validate that operation type exists](https://github.com/graphql/graphql-spec/pull/1098) (10m, Benjie)
67 |
68 | - Kewei: How did we not catch this?
69 | - Matt: I believe Relay’s Rust code would already validate this
70 | - Stephen: Any tool that walks the schema document would have to fail if a
71 | schema violated this. Perhaps it’s already being validated everywhere even
72 | though it’s technically never been in the spec.
73 | - Moved from RFC0 to RFC1
74 |
--------------------------------------------------------------------------------
/agendas/2019/2019-06-06.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – June 2019
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. Anyone in the public GraphQL
6 | community may attend, provided they first sign the [Specification Membership Agreement](https://github.com/graphql/foundation) or belong to an organization who has signed.
7 |
8 | - **Video Conference Link**: https://zoom.us/j/914568568
9 | - **Live Notes**: https://docs.google.com/document/d/14T6Yx40fzNnvao09yrSjWNdvfDMNoOpKDS6dO74tK1o/edit?usp=sharing
10 | - **TCQ**: https://tcq.app/meeting/qwUK
11 | - **Date & Time**: [June 6th 2019 16:00 - 19:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2019&month=6&day=6&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152)
12 |
13 | *NOTE:* Meeting date and time may change up to a week before the meeting.
14 | Please check the agenda the week of the meeting to confirm.
15 |
16 |
17 | ## Agenda and Attendee Guidelines
18 |
19 | *To attend this meeting or propose a topic*, edit this page and add your name
20 | to the list of attendees below along with your organization and location. Add any agenda item you wish to discuss, please include relevant links.
21 |
22 | - Each attendee (or attendee's organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
23 | - Read the [participation guidelines](../README.md#participation-guidelines).
24 | - To cover everything, discussion may be time-constrained per topic.
25 | - Topics that require less discussion should be covered first.
26 | - To respect meeting size, attendees should be relevant to the agenda.
27 |
28 |
29 | ## Attendees
30 |
31 | Name | Organization | Location
32 | -------------------- | ------------------ | ----------------------
33 | Lee Byron | GraphQL Foundation | Menlo Park, CA
34 | Seth Newberry | Linux Foundation | San Diego, CA
35 | James Baxley | Apollo | Greenville, SC
36 | Devon Blandin\* | Artsy | New York, NY
37 | Luke Korth | Braintree | Columbus, OH
38 | Michael Staib | ChilliCream | Zurich, Switzerland
39 | Rafael Staib | ChilliCream | Zurich, Switzerland
40 | Jafar Husain | Facebook | Menlo Park, CA
41 | Matt Mahoney | Facebook | New York, NY
42 | Bruno Scheufler\* | GraphCMS | Berlin, DE
43 | Craig Smitham | GraphZen | Dallas, TX
44 | Erik Wittern | IBM Research | New York, NY
45 | Tanay Pratap | Microsoft | Bengaluru, India
46 | Benjie Gillam | PostGraphile | Southampton, UK
47 | Evan Huus | Shopify | Ottawa, Canada
48 | Alec Aivazis | Individual Contrib | Los Angeles, CA
49 | Ivan Goncharov | Individual Contrib | Lviv, Ukraine
50 | Pavel Chertorogov | Individual Contrib | Almaty, Kazakhstan
51 | Rikki Schulte | Individual Contrib | Cleveland, OH
52 | Yash Handa | Individual Contrib | Delhi, IN
53 | *ADD YOUR NAME HERE* | *COMPANY / ORG* | *WHERE YOU ARE*
54 |
55 | \*: willing to take notes (eg. Joe Montana\*)
56 |
57 |
58 | ## Agenda
59 |
60 | 1. Opening of the meeting
61 | 1. Introduction of attendees
62 | 1. Review agenda (5m)
63 | 1. Determine volunteers for note taking (5m)
64 | 1. Review DevStats https://devstats.graphql.org #174 (5m)
65 | 1. Slack alternatives (10m)
66 | 1. GraphiQL WG update (Benjie, Rikki) (15m)
67 | 1. Tracking actionable items after each WG (Ivan) (10m)
68 | 1. GraphQL.org Q&A & Call for Maintainers (5m)
69 | 1. GraphQL FAQ (Ivan) (15m)
70 | 1. Interface inheritance (Michael) (5m)
71 | 1. @oneField (Benjie) (5m)
72 | 1. *ADD YOUR AGENDA ITEM ABOVE HERE*
--------------------------------------------------------------------------------
/rfcs/CompositeSchemas.md:
--------------------------------------------------------------------------------
1 | # RFC: GraphQL Composite Schemas
2 |
3 | There's a _lot_ of different ways of combining multiple GraphQL schemas together to form a larger composite schema, and the wide variety of options can make it challenging to design schemas in a way that will be easy to compose later. To name but a few approaches:
4 |
5 | - Schema merging and stitching (various implementations in many languages)
6 | - GraphQL modules and other "extend type"-based approaches
7 | - Federation (Apollo's v1 and v2, Mercurius, WunderGraph, Hot Chocolate, etc)
8 | - Hasura's GraphQL Joins
9 | - Atlassian's Nadel
10 | - StepZen
11 |
12 | Though these are all separate solutions to similar problems, there are various concerns that most of them have to consider:
13 |
14 | - Identifying the schemas to join
15 | - Discovering/defining the relationships between the types/schemas
16 | - Schema manipulation to avoid conflicts (e.g. renaming types/fields)
17 | - Resolving questions around type "ownership", redundancy and/or sharing; detecting conflicts
18 | - Detecting breaking changes
19 | - Actually fetching the relevant data, and combining it to fulfil the GraphQL request
20 | - Managing composition metadata with respect to handling the above concerns
21 | - etc
22 |
23 | It feels like it would be of benefit to the ecosystem at large if there were a shared specification that covers a few of these needs.
24 |
25 | If this is of interest to you, please enter your name, GitHub handle, and organization below:
26 |
27 |
28 | | Name | GitHub | Organization | Location |
29 | | :---------------- | :------------ | :--------------- | :------------------ |
30 | | Benjie Gillam | @Benjie | Graphile | Chandler's Ford, UK |
31 | | Yaacov Rydzinski | @yaacovCR | Individual | Neve Daniel, IL |
32 | | Roman Ivantsov | @rivantsov | Microsoft | Redmond, WA, US |
33 | | Tim Suchanek | @timsuchanek | GraphCDN | Berlin, DE |
34 | | Saihajpreet Singh | @saihaj | The Guild | Ottawa, ON, CA |
35 | | Matteo Collina | @mcollina | NearForm | Forlì, IT |
36 | | Uri Goldshtein | @urigo | The Guild | Tel Aviv, IL |
37 | | Marc-Andre Giroux | @xuorig | Netflix | Montreal, Canada |
38 | | Praveen Durairaju | @praveenweb | Hasura | Bangalore, India |
39 | | Hugh Willson | @hwillson | Apollo | Ottawa, ON, CA |
40 | | Michael Staib | @michaelstaib | ChilliCream Inc. | Zurich, CH |
41 | | Nicholas DeJaco | @ndejaco2 | Amazon | Seattle, WA, US |
42 | | Rafael Abreu | @grillorafael | Individual | Dublin, IE. |
43 | | Julian Mayorga | @okjulian | GraphQLApps | RS, Brazil |
44 | | Caleb Thomas | @linux-jedi | Meta | Brooklyn, NY, US |
45 | | Nathan Chapman | @nathanchapman | Individual | Austin, TX, US |
46 | | Bobbie Cochrane | @bobbiejc | StepZen | Oriental, NC |
47 | | Chi Chan | @chikit | Meta | San Jose, CA, US |
48 | | Agata Witkowska | @agata-wit | Tyk | Gdansk, PL |
49 | | Predrag Gruevski | @obi1kenobi | Kensho | Boston, MA, US |
50 | | Dariusz Kuc | @dariuszkuc | Apollo | Chicago, IL, US |
51 | | John Starich | @JohnStarich | IBM | Austin, TX, US |
52 | | Jason Webb | @jwebb49 | Intuit | San Diego, CA, US |
53 | | Laurin Quast | @n1rual | The Guild | Mannheim, DE |
54 | | Jens Neuse | @jensneuse | WunderGraph | Bretten, DE |
55 | | Dustin Deus | @starptech | WunderGraph | Wuppertal, DE |
56 | | Martijn Walraven | @martijnwalraven | Apollo | Amsterdam, NL |
57 | | Jonny Green | @jonnydgreen | Unity | Bath, UK |
58 | | Daniel Winter | @d-winter | Hygraph | Gießen, DE |
59 | | Jonas Faber | @flexzuu | Hygraph | Butzbach, DE |
60 |
--------------------------------------------------------------------------------
/agendas/2019/2019-09-12.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – September 2019
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. Anyone in the public GraphQL
6 | community may attend, provided they first sign the [Specification Membership Agreement](https://github.com/graphql/foundation) or belong to an organization who has signed.
7 |
8 | - **Video Conference Link**: https://zoom.us/j/299112450
9 | - **Live Notes**: https://docs.google.com/document/d/1-5Kl97mWzGM6N35vHSj3oKkXghRWy2bUdp_WY3fMOSU/edit?usp=sharing
10 | - **Date & Time**: [September 12th 2019 16:00 - 19:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2019&month=9&day=12&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152)
11 |
12 | *NOTE:* Meeting date and time may change up to a week before the meeting.
13 | Please check the agenda the week of the meeting to confirm.
14 |
15 |
16 | ## Agenda and Attendee Guidelines
17 |
18 | *To attend this meeting or propose a topic*, edit this page and add your name
19 | to the list of attendees below along with your organization and location. Add any agenda item you wish to discuss, please include relevant links.
20 |
21 | - Each attendee (or attendee's organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
22 | - Read the [participation guidelines](../README.md#participation-guidelines).
23 | - To cover everything, discussion may be time-constrained per topic.
24 | - Topics that require less discussion should be covered first.
25 | - To respect meeting size, attendees should be relevant to the agenda.
26 |
27 |
28 | ## Attendees
29 |
30 | Name | Organization | Location
31 | -------------------- | ------------------ | ----------------------
32 | Lee Byron | GraphQL Foundation | Menlo Park, CA
33 | Benjie Gillam | GraphiQL Team | Southampton, UK
34 | Ivan Goncharov | GraphQL.js Team | Lviv, Urkaine
35 | Antoine Boyer | Amazon | Seattle, WA
36 | Richard Threlkeld | Amazon | Seattle, WA
37 | Robert Zhu | Amazon | Seattle, WA
38 | Michael Staib | ChilliCream | Zurich
39 | Rafael Staib | ChilliCream | Zurich
40 | Jafar Husain | Facebook | San Francisco, CA
41 | Matt Mahoney | Facebook | New York, NY
42 | Krithika Prakash | IBM | New York, NY
43 | Morris Matsa | IBM | Somers, NY
44 | Alan Cha | IBM Research | Yorktown Heights, NY
45 | Erik Wittern | IBM Research | Yorktown Heights, NY
46 | Mike Marcacci | Marcacci Labs, Inc | Woodside, CA
47 | Tanay Pratap | Microsoft | Bangalore, India
48 | [Stephen Spalding*](mailto:sspalding@netflix.com)| Netflix | Los Gatos, CA
49 | Vince Foley | New Relic | Portland, OR
50 | Ashwin Hegde | PayPal | Bangalore, India
51 | Gabriel McAdams | PayPal | San Jose, CA
52 | Wojciech Trocki | Red Hat/IBM | Dublin, Ireland
53 | Evan Huus | Shopify | Ottawa, Canada
54 |
55 | \*: willing to take notes (eg. Joe Montana\*)
56 |
57 |
58 | ## Agenda
59 |
60 | 1. Opening of the meeting
61 | 1. Introduction of attendees
62 | 1. Determine volunteers for note taking (5m)
63 | 1. Review agenda (5m)
64 | 1. Review [previous meeting's action items](../notes/2019-08-01.md#action-items) and check progress on those
65 | 1. GraphQL WG 2020 schedule (Lee, 10m)
66 | 1. Lexer lookaheads (Lee, 10m) [RFC 1](https://github.com/graphql/graphql-spec/pull/599) [RFC 2](https://github.com/graphql/graphql-spec/pull/601)
67 | 1. Discuss status of interface implementation by interfaces (Mike, 10m) [PR](https://github.com/graphql/graphql-js/pull/2084) [RFC](https://github.com/graphql/graphql-spec/pull/373)
68 | 1. Discuss policy for breaking changes to typescript definitions (Mike, 10m)
69 | 1. Input Union (Vince, 15m)
70 | 1. Object Identity and fetchability (Matt, 10m)
71 | 1. *ADD YOUR AGENDA ITEM ABOVE HERE*
72 |
--------------------------------------------------------------------------------
/agendas/2019/2019-05-02.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – May 2019
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. Anyone in the public GraphQL
6 | community may attend, provided they first sign the [Specification Membership Agreement](https://github.com/graphql/foundation) or belong to an organization who has signed.
7 |
8 | - **Video Conference Link**: https://zoom.us/j/345734904
9 | - **Live Notes**: https://docs.google.com/document/d/1owrTFFwPFTMwkjmP09m5I_VUSqJX-733QWIbkl9cQ04/edit?usp=sharing
10 | - **Date & Time**: [May 2nd 2019 16:00 - 19:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2019&month=5&day=2&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152)
11 |
12 | *NOTE:* Meeting date and time may change up to a week before the meeting.
13 | Please check the agenda the week of the meeting to confirm.
14 |
15 |
16 | ## Agenda and Attendee Guidelines
17 |
18 | *To attend this meeting or propose a topic*, edit this page and add your name
19 | to the list of attendees below along with your organization and location. Add any agenda item you wish to discuss, please include relevant links.
20 |
21 | - Each attendee (or attendee's organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
22 | - Read the [participation guidelines](../README.md#participation-guidelines).
23 | - To cover everything, discussion may be time-constrained per topic.
24 | - Topics that require less discussion should be covered first.
25 | - To respect meeting size, attendees should be relevant to the agenda.
26 |
27 |
28 | ## Attendees
29 |
30 | Name | Organization | Location
31 | -------------------- | ------------------ | ----------------------
32 | Lee Byron | GraphQL Foundation | Menlo Park, CA
33 | Scott Nicholas | Linux Foundation | Boston, MA
34 | Seth Newberry | Joint Development Foundation | San Diego, CA
35 | Robert Zhu | Amazon | Boston, MA
36 | Antoine Boyer | Amazon (AWS AppSync) | Seattle, WA
37 | James Baxley | Apollo | Greenville, SC
38 | Martijn Walraven | Apollo | Amsterdam, The Netherlands
39 | Andi Marek | Atlassian/GraphQL Java | Sydney
40 | Cory Monty\* | Braintree | Chicago, IL
41 | Kyle DeTella | Braintree | Chicago, IL
42 | Michael Staib | ChilliCream | Zurich, Switzerland
43 | Rafael Staib | ChilliCream | Zurich, Switzerland
44 | Tim Griesser | Cypress.io | Brooklyn, NY
45 | Dan Schafer | Facebook | San Francisco, CA
46 | Matt Mahoney | Facebook | New York, NY
47 | Craig Smitham | GraphZen | Dallas, TX
48 | Erik Wittern | IBM Research | Yorktown Heights, NY
49 | Carson Derr | Individual Contrib/gqlc | Frederick, MD
50 | Ivan Goncharov | Individual Contrib | Lviv, Ukraine
51 | Matt Farmer | Individual Contrib | Oakland, CA
52 | Orta Therox | Individual Contrib | New York, NY
53 | Rikki Schulte | Individual Contrib | Cleveland, OH
54 | Pavel Chertorogov | Individual Contrib | Almaty, Kazakhstan
55 | Steve Faulkner | Microsoft | Philadelphia, PA
56 | Tanay Pratap | Microsoft | Bengaluru, IN
57 | William Lyon | Neo4j | Missoula, MT
58 | Vince Foley | New Relic / Absinthe | Portland, OR
59 | Benjie Gillam | PostGraphile | Southampton, UK
60 | Joel Turkel | Salsify | Boston, MA
61 | Andrew Sprouse | TakeShape | Brooklyn, NY
62 | Rui Araujo | Zalando | Berlin, DE
63 |
64 | \*: willing to take notes (eg. Joe Montana\*)
65 |
66 |
67 | ## Agenda
68 |
69 | 1. Opening of the meeting
70 | 1. Introduction of attendees (10m)
71 | 1. Review agenda (5m)
72 | 1. Determine volunteers for note taking (5m)
73 | 1. GraphQL Foundation & JDF Update + Brief Q&A (Lee/Scott/Seth, 5m)
74 | 1. Demo / Discuss using https://tcq.app/ (Steve, 15m)
75 | 1. OffsetDateTime Scalar (Andi, 15min)
76 | 1. Scope out the GraphiQL Future / WG (Orta, 20m)
77 | 1. Input Unions RFC (Tim/Rikki, 30m)
78 | 1. Two-stage introspection (Ivan, 15min)
79 | 1. GraphQL Compiler Discussion (Carson, 5m)
80 |
--------------------------------------------------------------------------------
/agendas/2018/2018-11-06.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #8
2 |
3 | To attend this meeting, edit this page to add your name to the list of attendees
4 | and include any additions to the Agenda below.
5 |
6 | This session is timed to align with the [GraphQL Summit](https://summit.graphql.com/) conference, we'll be looking into holding an in-person meeting for those who can attend.
7 |
8 | - **Video Conference Link**:
9 |
10 | > Join from PC, Mac, iOS or Android: https://meetings.ringcentral.com/j/1489250526
11 | >
12 | > Or iPhone one-tap:
13 | > (773) 231-9226,,1489250526
14 | >
15 | > Or Telephone:
16 | > Dial:(773) 231-9226
17 | > Meeting ID: 148 925 0526
18 | > International numbers available: https://meetings.ringcentral.com/teleconference
19 |
20 | - **Live Notes**: https://docs.google.com/document/d/1juYKFdIl4Xxx3iAAo6lIu5Gm3vhLQCmAvKtsYKx4pMM/edit
21 | - **Date**: November 6th 2018
22 | - **Time**: 20:00 - 23:00 UTC
23 | - 12:00PM - 3:00PM PST (UTC-8) (California)
24 | - 7:00AM - 10:00AM AEDT (UTC+11) (Nov 9th) (Sydney)
25 | - 9:00PM - 12:00AM CET (UTC+1) (Berlin)
26 |
27 | ## Physical Locations
28 |
29 | **Apollo HQ**
30 | * [140 10th St, San Francisco, CA 94103](https://goo.gl/maps/S7tzxCFpbcu)
31 | * 2nd floor, Andromeda conference room
32 | * Please arrive no earlier than 11:45a.
33 | * Ring the doorbell when you arrive and someone will usher you to _Andromeda_.
34 | * We'll have some snacks and beverages available.
35 |
36 | ## Attendees
37 |
38 | Name | Organization | Location
39 | -------------------- | ------------- | ----------------------
40 | Lee Byron | Robinhood | Menlo Park, CA
41 | Michael Staib | ChilliCream | Zurich, Switzerland
42 | Mike Marcacci | Boltline | San Diego,
43 | Matt Mahoney | Facebook | Menlo Park, CA
44 | Dan Schafer | Facebook | Menlo Park, CA
45 | Andreas Kollegger | Neo4j | Malmö, Sweden
46 | William Lyon | Neo4j | Missoula, MT (in SF)
47 | Adam Scarr | 99designs | Melbourne, Australia (in SF)
48 | Mathew Byrne | 99designs | Melbourne, Australia (in SF)
49 | Kevin Smithson | Philips | Foster City, CA
50 | Tim Griesser | Cypress.io | Brooklyn, NY (in SF)
51 | Craig Smitham | GraphZen | Dallas, TX (in SF)
52 | Oleg Ilyenko | Sangria | Berlin, Germany
53 | Jesse Rosenberger | Apollo | San Francisco, CA
54 | Hugh Willson | Apollo | San Francisco, CA
55 | Benjie Gillam | PostGraphile | Southampton, UK (in SF)
56 | Ivan Goncharov | APIs.guru | Lviv, Ukraine (in SF)
57 |
58 | \*: willing to take notes (eg. Joe Montana*)
59 |
60 | ## Agenda
61 |
62 | 1. Opening of the meeting
63 | 1. Introduction of attendees
64 | 1. Review agenda (5m)
65 | 1. Determine volunteers for note taking (5m)
66 | 1. Future WG meeting date proposals (10m)
67 | 1. GraphQL Foundation (Updates & Discussion) (10m)
68 | 1. Briefing on ISO GQL (SQL for Graphs) (5m)
69 | 1. graphql-cats adoption issues (5m)
70 | 1. Interface inheritance (10m) [RFC](https://github.com/facebook/graphql/pull/373), [reference implementation](https://github.com/graphql/graphql-js/pull/1218) <- needs more eyes
71 | 1. Discussion of [Deprecation Directive Additions](https://github.com/facebook/graphql/pull/525) (5m)
72 | 1. Continued discussion on input unions, [RFC](https://github.com/facebook/graphql/pull/395) (10m)
73 | 1. Update on [#429](https://github.com/facebook/graphql/issues/429) - limiting the scope of "Directives Are Unique Per Location" validation. (OI 10m)
74 | - [#470](https://github.com/facebook/graphql/pull/470) - [RFC] "Directive order is significant" section
75 | - [#472](https://github.com/facebook/graphql/pull/472) - [RFC] Limit directive uniqueness to explicitly marked directives
76 | - [graphql-js #1541](https://github.com/graphql/graphql-js/pull/1541) - [RFC] Added support for repeatable directives (also added [an implementation in Sangria](https://github.com/sangria-graphql/sangria/pull/412))
77 | 1. Potential issues with ignored characters (5m, IG)
78 |
79 | ## Agenda and Attendee guidelines
80 |
81 | - To cover everything, discussion will be time-constrained per topic.
82 | - Topics that require less discussion should be covered first.
83 | - To respect meeting size, attendees should be relevant to the agenda.
84 | - Read the [participation guidelines](../README.md#participation-guidelines).
85 |
--------------------------------------------------------------------------------
/notes/2023/2023-07.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Notes - July 2023
2 |
3 | **Watch the replays:**
4 | [GraphQL Working Group Meetings on YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb)
5 |
6 | # Primary
7 |
8 | Agenda:
9 | [https://github.com/graphql/graphql-wg/blob/main/agendas/2023/07-Jul/06-wg-primary.md](https://github.com/graphql/graphql-wg/blob/main/agendas/2023/07-Jul/06-wg-primary.md)
10 |
11 | ## Determine volunteers for note taking (1m, Lee)
12 |
13 | - Benjie
14 |
15 | ## Review agenda (2m, Lee)
16 |
17 | - NOTE: YouTube videos are now up to date, Benjie has semi-automated the upload
18 | process so we should be able to keep them much more in sync in future
19 |
20 | ## Review prior secondary meetings (5m, Lee)
21 |
22 | - [June WG Secondary, APAC](https://github.com/graphql/graphql-wg/blob/main/agendas/2023/06-Jun/07-wg-secondary-apac.md)
23 | - [June WG Secondary, EU](https://github.com/graphql/graphql-wg/blob/main/agendas/2023/06-Jun/15-wg-secondary-eu.md)
24 | - Meetings have been cancelled recently due to lack of agenda - are they still
25 | needed? Yes, just everyone is busy on @stream/@defer right now.
26 |
27 | ## Review previous meeting's action items (5m, Lee)
28 |
29 | - [Ready for review](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+is%3Aopen+label%3A%22Ready+for+review+%F0%9F%99%8C%22+sort%3Aupdated-desc)
30 | - [All open action items (by last update)](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+is%3Aopen+label%3A%22Action+item+%3Aclapper%3A%22+sort%3Aupdated-desc)
31 | - [All open action items (by meeting)](https://github.com/graphql/graphql-wg/projects?query=is%3Aopen+sort%3Aname-asc)
32 | - Lots of other things are still on the back burner: client controlled
33 | nullability, fragment isolation, input unions / @oneOf, schema coordinates,
34 | etc - at the moment most contributor work is going into the incremental
35 | delivery work.
36 | - oneOf was recently merged to graphql-js. Has been supported in HotChocolate
37 | for 1.5 years
38 |
39 | ## Client Controlled Nullability (10m)
40 |
41 | - Issue with CCN was around bubbling and syntax. Main issue is that Alex isn't
42 | currently able to champion it, but was held back by slow interactions with
43 | Relay team - would be great to get faster feedback/iteration.
44 | - Clients like Relay won't be able to take advantage of CCN without compiling it
45 | away and reimplementing on the client to give fragment isolation.
46 | - Relay can interpret the developer demand rather than passing it through, and
47 | already does similar things with client-side directives, so we could see CCN
48 | as just a tool to be enabled by frameworks.
49 | - To merge CCN before fragment modularity, we need to be sure it won't block
50 | fragment modularity in future.
51 | - Consensus was that it's okay for Relay to wipe it all away, but if all clients
52 | have to do that it would lose a lot of its value.
53 |
54 | ## TSC mailing list
55 |
56 | - TSC mailing list was out of date. Benjie and Jory have been working together
57 | to get things up to date, but we're concerned we don't have the best email
58 | address for TSC members. TSC members: please send Benjie (DM on Discord,
59 | Twitter, or email him) your best email address.
60 | - TSC members: if you're not in the TSC chat in Discord, please reach out to
61 | Benjie (via Discord).
62 | - Are we using the right communication channels? Should we re-introduce slack
63 | but on a smaller basis for just project chat? Probably not, because WG work
64 | should be open.
65 |
66 | ## Defer execution model - Early vs Delayed (30m, Rob)
67 |
68 | - Early execution kicks off resolver execution for deferred fields before the
69 | previous response is finished building.
70 | - Deferred execution wants until the previous response is finished before
71 | running resolvers for deferred fields.
72 | - Deferred execution can increase total request latency.
73 | - Early execution can cause the initial payload to be slower.
74 | - We could indicate to resolvers that they're deferred and allow them to make
75 | choices based around this.
76 | - With deferred execution, there's significantly reduced complexity around error
77 | boundaries/bubbling - things will simply not queue to execute in the first
78 | place.
79 | - What should we specify?
80 | - If we specify deferred execution then people might write queries that depend
81 | on that, and if we do early execution it might break this expectation.
82 | - [All participants were very involved in the discussion, so no-one was able to
83 | take further notes. Please see the YouTube video
84 | [https://www.youtube.com/watch?v=mHp-hMMSacE](https://www.youtube.com/watch?v=mHp-hMMSacE)
85 | ]
86 |
--------------------------------------------------------------------------------
/rfcs/AbstractFilter/AbstractFilterArgumentSpec.md:
--------------------------------------------------------------------------------
1 | # Abstract Filter Argument
2 |
3 | Status: Strawman
4 |
5 | ## Directive
6 |
7 | ```graphql
8 | directive @limitTypes on ARGUMENT_DEFINITION
9 | ```
10 |
11 | ### Examples
12 |
13 | ```graphql
14 | type Query {
15 | allPets(first: Int, only: [String] @limitTypes): [Pet]
16 | }
17 |
18 | interface Pet {
19 | name: String!
20 | }
21 | ```
22 |
23 | ```graphql
24 | type Query {
25 | allPetsConnection(
26 | first: Int
27 | after: String
28 | only: [String] @limitTypes
29 | ): PetConnection
30 | }
31 |
32 | # TODO: connection types
33 |
34 | interface Pet {
35 | name: String!
36 | }
37 | ```
38 |
39 | ## Schema Validation
40 |
41 | The `@limitTypes` directive must not appear on more than one argument on the
42 | same field.
43 |
44 | The `@limitTypes` directive may only appear on an argument that accepts a
45 | (possibly non-nullable) list of (possibly non-nullable) String.
46 |
47 | The `@limitTypes` directive may only appear on an argument to a field whose
48 | named return type is a connection type (that is to say, conforming to
49 | [the GraphQL Cursor Connections Specification's Connection Type](https://relay.dev/graphql/connections.htm#sec-Connection-Types))
50 | over an abstract type, or to a field whose return type is a list and the named
51 | return type is an abstract type.
52 |
53 | ## Execution
54 |
55 | The `@limitTypes` directive places requirements on the {resolver} used to
56 | satisfy the field. Implementers of this specification must honour these
57 | requirements.
58 |
59 | ### Coerce Allowed Types
60 |
61 | The input to the filter argument is a list of strings, however this must be made
62 | meaningful to the resolver such that it may perform its filtering - thus we must
63 | resolve it into a list of valid concrete object types that are possible in this
64 | position.
65 |
66 | CoerceAllowedTypes(abstractType, typeNames):
67 |
68 | - Let {possibleTypes} be a set of the possible types of {abstractType}.
69 | - Let {allowedTypes} be an empty unordered set of object types.
70 | - For each {typeName} in {typeNames}:
71 | - Let {type} be the type in the schema named {typeName}.
72 | - If {type} does not exist, continue to the next {typeName}.
73 | - If {type} is an object type:
74 | - If {type} is a member of {possibleTypes}, add {type} to {allowedTypes}.
75 | - Otherwise, if {type} is a union type:
76 | - For each {concreteType} in {type}:
77 | - If {concreteType} is a member of {possibleTypes}, add {concreteType} to
78 | {allowedTypes}.
79 | - Otherwise, if {type} is an interface type:
80 | - For each {concreteType} that implements {type}:
81 | - If {concreteType} is a member of {possibleTypes}, add {concreteType} to
82 | {allowedTypes}.
83 | - Otherwise continue to the next {typeName}.
84 | - Return {allowedTypes}.
85 |
86 | ### Enforcing Allowed Types
87 |
88 | Enforcement of the allowed types is the responsibility of the {resolver} called
89 | in
90 | [`ResolveFieldValue()`]()
91 | during the [`ExecuteField()`]()
92 | algorithm. This is because the filtering must be applied to the {collection}
93 | prior to applying the pagination arguments.
94 |
95 | When the field returns a list of an abstract type, the {collection} is this
96 | list. When the field returns a connection type over an abstract type, the
97 | {collection} is the list of nodes the connection represents.
98 |
99 | When a field with a `@limitTypes` argument is being resolved:
100 |
101 | - Let {limitTypesArgument} be the first argument with the `@limitTypes`
102 | directive.
103 | - If no such argument exists, no further action is necessary.
104 | - If {argumentValues} does not provide a value for {limitTypesArgument}, no
105 | further action is necessary.
106 | - Let {limitTypes} be the value in {argumentValues} of {limitTypesArgument}.
107 | - If {limitTypes} is {null}, no further action is necessary.
108 | - Let {abstractType} be the abstract type the {collection} represents.
109 | - Let {allowedTypes} be {CoerceAllowedTypes(abstractType, limitTypes)}.
110 |
111 | The resolver must ensure that the result of
112 | [`ResolveAbstractType()`]() for
113 | each entry in {collection} is a type within {allowedTypes}. The resolver must
114 | apply this restriction before applying any pagination arguments.
115 |
116 | Note: The restriction must be applied before pagination arguments so that
117 | non-terminal pages in the collection get full representation - i.e. there are no
118 | gaps.
119 |
--------------------------------------------------------------------------------
/notes/2025/summary-2025-05-15.md:
--------------------------------------------------------------------------------
1 | # Meeting Summary for Working Group Meeting
2 |
3 | **NOTICE**: This summary was auto-generated by Zoom's "AI". AI-generated
4 | content may be inaccurate or misleading. Always check for accuracy. If in
5 | doubt, please consult the meeting recording at
6 | https://youtube.com/@GraphQLFoundation/playlists
7 |
8 | - Meeting start: 2025-05-15T17:28:21Z
9 | - Meeting end: 2025-05-15T18:51:49Z
10 | - Summary start: 2025-05-15T17:33:16Z
11 | - Summary end: 2025-05-15T18:51:47Z
12 |
13 | The team reviewed several agenda items including executable definitions and error propagation, with Steven presenting an RFC for adding descriptions to executable document definitions that was moved to RFC 2 and Stephen volunteering to champion it. The group discussed implementing a capability system for GraphQL services to indicate supported features and error behaviors, with Benjie and Lee debating different approaches and naming conventions while agreeing to keep the initial implementation simple. The team also discussed the design of a service capabilities system and naming conventions for GraphQL concepts, with Benjie planning to write up a version focused on error propagation capabilities and Lee agreeing to review the proposal further.
14 |
15 | ## Next Steps
16 |
17 | - Benjie to update the RFC for error propagation with the new capability system approach discussed.
18 | - Lee to review and provide editorial feedback on the naming of "execute collected fields" and related terms in the spec.
19 | - Stephen to update the working group agenda for June 5th with progress on the executable definitions RFC.
20 | - Stephen to rebase and update the pull requests related to the executable definitions RFC.
21 | - Benjie to explore implementing the new error propagation behavior as an optional appendix to the spec.
22 | - Lee to further consider and provide feedback on the naming conventions for field sets and related concepts in the spec.
23 | - Benjie to send Lee a message with additional thoughts on the nullability and error propagation implementation.
24 |
25 | ## Summary
26 |
27 | ### RFC Tracking and Prioritization
28 |
29 | The team discussed several agenda items, including executable definitions and error propagation. Steven presented an RFC for adding descriptions to executable document definitions, which the group agreed to move to RFC 2. Stephen volunteered to take over as champion for this RFC. The team decided to prioritize getting the GraphQL.js PR merged and for Steven to report progress at the next working group meeting. Lee suggested creating an RFC tracker to help implementers follow along with upcoming changes. Benjie shared a personal RFC tracker, but the group agreed a more official system would be needed in the future.
30 |
31 | ### GraphQL Capability System Discussion
32 |
33 | Benjie proposed a capability system for GraphQL services to indicate supported features and error behaviors. Lee expressed concerns about overcomplicating the solution and suggested using introspection to determine capabilities. They discussed the pros and cons of different approaches, including a flat list of strings and key-value pairs. The group agreed to keep the initial implementation simple, focusing on the minimum viable solution to address their current needs.
34 |
35 | ### GraphQL Service Capabilities Design
36 |
37 | Benjie and Lee discussed the design of a service capabilities system for GraphQL. They agreed to use a list of capability objects with names and optional values, where the absence of a value would indicate a Boolean flag. They decided to use a domain-based naming convention for capabilities, with "graphql." as a prefix for internal capabilities and reverse domain notation for others. Lee suggested implementing basic validation to catch incorrect usage. They also discussed how to represent capabilities in SDL, considering a simple syntax where each service lists its capabilities. Benjie planned to write up a version focused on error propagation capabilities, which would include two main capabilities: the ability to set error behavior and the default error behavior.
38 |
39 | ### GraphQL Field Naming Convention Debate
40 |
41 | Lee and Benjie discussed naming conventions for GraphQL concepts, particularly around the terms "field set" and "collected fields." They debated the merits of different naming approaches, with Benjie favoring "field set" due to its clarity in implementation while Lee expressed concerns about the pluralization and alignment with method names. They also touched on nullability and error propagation, with Benjie proposing a transitional approach that would allow for both new services with error propagation turned off and compatibility with existing systems. Lee agreed to review the proposal further.
42 |
--------------------------------------------------------------------------------
/agendas/2021/2021-08-05.md:
--------------------------------------------------------------------------------
1 | # ~~GraphQL WG – August 2021~~ CANCELLED
2 |
3 | This meeting was cancelled, the agenda items have been moved to the next meeting.
4 |
5 | The GraphQL Working Group meets monthly to discuss proposed additions to the
6 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
7 | relevant topics to core GraphQL projects. This is an open meeting in which
8 | anyone in the GraphQL community may attend. *To attend this meeting or propose
9 | agenda, edit this file.*
10 |
11 | - **Date & Time**: ~~[August 5th 2021 18:00 - 20:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2021&month=8&day=5&hour=18&min=0&sec=0&p1=224&p2=179&p3=136&p4=268&p5=367&p6=438&p7=240&iv=0), view the [calendar](https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).~~
12 |
13 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
14 | - **Video Conference Link**: https://zoom.us/j/593263740
15 | - Password: graphqlwg
16 | - **Live Notes**: TBD
17 |
18 |
19 | ## ~~Attendees~~ CANCELLED
20 |
21 | > **Guidelines**
22 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
23 | > - To respect meeting size, attendees should be relevant to the agenda.
24 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
25 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
26 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
27 | >
28 | > **By joining the meeting you consent to being recorded and agree to the Specification Membership Agreement, participation guidelines, and code of conduct. Meetings may be recorded, by joining you grant permission to be recoded.**
29 |
30 | | Name | Organization / Project | Location
31 | | ------------------------ | ------------------------ | ------------------------
32 | | Lee Byron | GraphQL Foundation | San Francisco, CA, US
33 | | Matt Mahoney | Facebook | Brooklyn, NY, US
34 | | Michael Staib | ChilliCream | Zurich, CH
35 | | Benjie Gillam ✏ | Graphile | Chandler's Ford, UK
36 | | *ADD YOUR NAME ABOVE TO ATTEND*
37 |
38 |
39 | ## ~~Agenda~~ CANCELLED
40 |
41 | > **Guidelines**
42 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
43 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
44 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
45 |
46 |
56 |
57 | 1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
58 | - [Specification Membership Agreement](https://github.com/graphql/foundation)
59 | - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
60 | - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
61 | 1. Introduction of attendees (5m, Lee)
62 | 1. Determine volunteers for note taking (1m, Lee)
63 | 1. Review agenda (2m, Lee)
64 | 1. Review previous meeting's action items (5m, Lee)
65 | - [Ready for review](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+is%3Aopen+label%3A%22Ready+for+review+%F0%9F%99%8C%22+sort%3Aupdated-desc)
66 | - [All open action items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+is%3Aopen+label%3A%22Action+item+%3Aclapper%3A%22+sort%3Aupdated-desc)
67 | 1. [__fulfilled Meta Field RFC](https://github.com/graphql/graphql-spec/pull/879) (10m, Matt)
68 | 1. *ADD YOUR AGENDA ABOVE*
69 |
--------------------------------------------------------------------------------
/notes/2018/2018-09-20.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG Meeting #7
2 |
3 | ## Allowing singular variables for lists
4 |
5 | Jimmy - There's asymmetry between validation rules when providing a single literal where a list is expected and providing a single variable. The same coercion rules could be applied.
6 | This could help when evolving the APIs.
7 |
8 | Lee - Could this lead to double-coercion and confusing behavior? How about the implications on performance?
9 | Do we want the full rules of scalar coercion here or just a subset? E.g. a single item to list seems OK with everyone, but how about int -> float?
10 |
11 | Can't coerce variables at the beginning of the execution but on every use. Precompute all variations?
12 | Let's have an example implementation.
13 |
14 | ## Variable Definition Directives
15 |
16 | Seems obvious since directives are allowed everywhere else. Unanimously accepted :)
17 |
18 | Can a value node have a directive? What to do with the ambiguity on what is the target of a directive? On a variable on a value?
19 |
20 | ## Procedure
21 |
22 | Add a "stage number" to each RFC demarcating how far in the process it is.
23 | This should make it clear that the implementation and iteration comes before changing the spec.
24 | Despite something being obvious to the WG, changes should wait so the other implementers get a chance to see it,
25 |
26 | ## Directives Are Unique Per Location
27 |
28 | Oleg - E.g. allow `includeGraphQLSchema` multiple times. Interestingly, both skip and include can be placed together. Should be fixed.
29 |
30 | Make directive order significant.
31 |
32 | What are the rules for combining directives? Boolean "OR"? Somehow explicitly declaring that is preferable.
33 |
34 | Mark directives repeatable:
35 | Option 1 - Only make skip/include unique per location. Not many people seem to be in favor of this one.
36 | Option 2 - Decide uniqueness in directive definition. New keyword `repeatable`? Seems this is the way to go.
37 |
38 | Discussion about whether repeatable is opt in or opt out. The general consensus was that repeatable was opt in.
39 |
40 | The WG had consensus on the idea of ordering matters for repeatable directives.
41 |
42 | ## Compatibility Acceptance Tests (CATs)
43 |
44 | https://github.com/graphql-cats/graphql-cats
45 |
46 | Oleg talked about cats - the acceptance test framework
47 |
48 | YAML files describing the compatibility tests.
49 | How to define errors/error types? Currently they're only text. Oleg introduced error mappings that correlate an error code to the spec defining it, the implementation and the associated message template. The templates may help with i18n of error messages.
50 |
51 | Structured errors could enable better tooling suggestions, e.g. did you mean...
52 |
53 | Existing implementations indicated that error codes in the spec would be useful to just help with identifying specific details.
54 |
55 | How to deal with hierarchies, e.g multiple errors could be classified as parsing errors or coercion errors etc?
56 |
57 | Ivan had concerns on avoiding deep coupling of error codes in the spec to behaviours.
58 |
59 | ## Descriptions on schema
60 |
61 | Ivan discussed descriptions on schemas
62 |
63 | Have a description both in SDL and introspection.
64 | Lee pointed out that changes to the introspection might have an impact on tooling.
65 |
66 | ## Introspection Side Discussion
67 |
68 | Should GraphiQL do a 2-pass introspection, where it first introspects the introspection system (by introspecting __Schema) and then the rest? This would fix the current situation where it needs to fire an introspection query with subscriptions and then, in case of an error, try again without the subscriptions.
69 |
70 | How about a new description that returns SDL?
71 |
72 | ## Define custom scalars in terms of built-in scalars
73 |
74 | Ivans points out that when a client encounters a custom scalar, they have no idea what to provide. Any value could arguably be given.
75 |
76 | Introduce a new keyword `as` describing the custom scalar in terms of built-in ones, e.g.
77 | `scalar Url as String`
78 |
79 | Ivan proposed a conservative approach that scalar aliases can only be of well known defined graphql scalars.
80 |
81 | Lee proposed the opposite where it can be open ended into a chain of scalars
82 | E.g. `Url as UTF8`, `UTF8 as String`, or `DateTime as Long` (where Long is a new base type).
83 | A new validation rule would need to prevent loops. `A as B, B as A`
84 |
85 | Lee proposed that the chaining of scalars be a loop of 1. You can only create a scalar alias out of a scalar that itself is not a scalar alias.
86 |
87 | ## WG improvements discussion
88 |
89 | Craig suggested a blog/newsletter/something listing new happenings (RFC etc) in GraphQL
90 |
91 | ## Further type system discussions
92 |
93 | Differentiating between input-only vs output-only vs both enums/scalars? This would allow safer schema evolution. E.g. a value removed from an output-only enum would not constitute a breaking change. While this is currently possible by careful design, a way to enforce this (and not accidentally use a type designated as an input-only as output) would be welcome.
94 |
95 |
--------------------------------------------------------------------------------
/agendas/2019/2019-11-07.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – November 2019
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. Anyone in the public GraphQL
6 | community may attend, provided they first sign the [Specification Membership Agreement](https://github.com/graphql/foundation) or belong to an organization who has signed.
7 |
8 | - **Video Conference Link**: https://zoom.us/j/593263740
9 | - **Live Notes**: https://docs.google.com/document/d/1VzPzZEt92zxXDk63rHLradQtN2Yzs_LPISzvwwS6R2c/edit?usp=sharing
10 | - **Date & Time**: [November 7th 2019 17:00 - 20:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2019&month=11&day=7&hour=17&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152), [Subscribe to Google Calendar](https://calendar.google.com/calendar/embed?src=graphql.org_lc7llu5kovorb7dl1uo7c6h4ls%40group.calendar.google.com)
11 | - **Video Recording**: https://www.youtube.com/watch?v=fbcTVULqm-8
12 |
13 | *NOTE:* Meeting date and time may change up to a week before the meeting.
14 | Please check the agenda the week of the meeting to confirm.
15 |
16 |
17 | ## Agenda and Attendee Guidelines
18 |
19 | *To attend this meeting or propose a topic*, edit this page and add your name
20 | to the list of attendees below along with your organization and location. Add any agenda item you wish to discuss, please include relevant links.
21 |
22 | - Each attendee (or attendee's organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
23 | - Read the [participation guidelines](../README.md#participation-guidelines).
24 | - To cover everything, discussion may be time-constrained per topic.
25 | - Topics that require less discussion should be covered first.
26 | - To respect meeting size, attendees should be relevant to the agenda.
27 |
28 |
29 | ## Attendees
30 |
31 | Name | Organization | Location
32 | -------------------- | ------------------ | ----------------------
33 | Lee Byron | GraphQL Foundation | San Francisco, CA, US
34 | Nicki Stone | Amazon, Amplify | San Francisco, CA US
35 | Antoine Boyer | Amazon, AppSync | Seattle, WA, US
36 | Robert Zhu | Amazon Web Services | Seattle, WA, US
37 | James Baxley | Apollo | Piedmont, SC, US
38 | Jesse Rosenberger | Apollo | Helsinki, FI
39 | Trevor Scheer | Apollo | San Francisco, CA, US
40 | Michael Staib | ChilliCream | Moscow, RU
41 | Rafael Staib | ChilliCream | Zurich, CH
42 | Bruno Scheufler\* | GraphCMS | Berlin, DE
43 | Benjie Gillam\* | GraphiQL & Graphile | Southampton, UK
44 | Andi Marek | GraphQL Java, Atlassian | Sydney, AU
45 | Ivan Goncharov | GraphQL.js team | Lviv, UA
46 | Erik Wittern | IBM | Hamburg, DE
47 | Alan Cha\* | IBM Research | Yorktown Heights, NY
48 | Greg Kesler | Intuit | Mountain View, CA, US
49 | Mike Marcacci | Marcacci Labs | Woodside, CA, UA
50 | Benedikt Franke | MLL | Munich, DE
51 | Stephen Spalding\* | Netflix | Los Gatos, CA, US
52 | Vince Foley | New Relic, Absinthe | Portland, OR, US
53 | Sam Parsons | PayPal | Ames, IA, US
54 | Evan Huus | Shopify | Ottawa, CA
55 | Howard Lewis Ship | Walmart | Portland, OR, US
56 |
57 | \*: willing to take notes (eg. Joe Montana\*)
58 |
59 |
60 | ## Agenda
61 |
62 | 1. Opening of the meeting
63 | 1. Introduction of attendees
64 | 1. Review [previous meeting's action items](../notes/2019-10-10.md#action-items) and check progress on those
65 | 1. Review agenda (5m)
66 | 1. Determine volunteers for note taking (5m)
67 | 1. Upcoming Meetings & Format (5m, Lee)
68 | - [Dec example of new format](https://github.com/graphql/graphql-wg/blob/master/agendas/2019-12-05.md)
69 | - [Google Calendar](https://calendar.google.com/calendar/embed?src=graphql.org_lc7llu5kovorb7dl1uo7c6h4ls%40group.calendar.google.com)
70 | 1. Facebook CLA & copyright in repos ([see issue](https://github.com/graphql/graphql-wg/issues/291)) (5m, Erik)
71 | 1. Intermediate Interfaces Update (10m, Mike)
72 | - [RFC](https://github.com/graphql/graphql-spec/pull/373)
73 | - [blog post](https://dev.to/mikemarcacci/intermediate-interfaces-generic-utility-types-in-graphql-1cap-temp-slug-8952286?preview=ed957dcce8697307abcb0da3d08ecfa5c081a7b5828fe13e556fb29b57aede6f8fd9ea76319f68520eb1d38a9c75b41a15c79e7c222b9666ade6a853)
74 | 1. Custom Scalar Specification (10m, Evan)
75 | - [RFC](https://github.com/graphql/graphql-spec/issues/635)
76 | 1. GraphQL over HTTP specification (15m, Ivan)
77 | - [Issue](https://github.com/graphql/graphql-wg/issues/293)
78 | 1. Review implementation complexity of [Disallow non-breakable chains of circular references in Input Objects](https://github.com/graphql/graphql-spec/pull/445) (15m, Benedikt)
79 | 1. Input Union [RFC](https://github.com/graphql/graphql-spec/blob/master/rfcs/InputUnion.md) (30m, Vince)
80 |
--------------------------------------------------------------------------------
/agendas/2019/2019-10-10.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – October 2019
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. Anyone in the public GraphQL
6 | community may attend, provided they first sign the [Specification Membership Agreement](https://github.com/graphql/foundation) or belong to an organization who has signed.
7 |
8 | - **Video Conference Link**: https://zoom.us/j/593263740
9 | - **Live Notes**: https://docs.google.com/document/d/1GWDb6vrV68zRgsQ62g2cri6gZ3apfdkzaA5dekSEOnI/edit?usp=sharing
10 | - **Date & Time**: [October 10th 2019 16:00 - 19:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2019&month=10&day=10&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152)
11 |
12 | *NOTE:* Meeting date and time may change up to a week before the meeting.
13 | Please check the agenda the week of the meeting to confirm.
14 |
15 |
16 | ## Agenda and Attendee Guidelines
17 |
18 | *To attend this meeting or propose a topic*, edit this page and add your name
19 | to the list of attendees below along with your organization and location. Add any agenda item you wish to discuss, please include relevant links.
20 |
21 | - Each attendee (or attendee's organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
22 | - Read the [participation guidelines](../README.md#participation-guidelines).
23 | - To cover everything, discussion may be time-constrained per topic.
24 | - Topics that require less discussion should be covered first.
25 | - To respect meeting size, attendees should be relevant to the agenda.
26 |
27 |
28 | ## Attendees
29 |
30 | Name | Organization | Location
31 | -------------------- | ------------------- | ----------------------
32 | Lee Byron | GraphQL Foundation | Menlo Park, CA
33 | Benjie Gillam | GraphiQL Team | Southampton, UK
34 | Ivan Goncharov | GraphQL.js Team | Lviv, Urkaine
35 | Victor Andrée | Advinans | Stockholm, Sweden
36 | Ashi Krishnan | Apollo | Brooklyn, NY
37 | James Baxley | Apollo | Piedmont, SC
38 | Jesse Rosenberger | Apollo | Helsinki, FI
39 | Trevor Scheer | Apollo | San Francisco, CA
40 | Michael Paris | AWS | Seattle, WA
41 | Richard Threlkeld | AWS | Seattle, WA
42 | Robert Zhu | AWS | Stockholm, Sweden
43 | Michael Staib | ChilliCream | Zurich, Switzerland
44 | Rafael Staib | ChilliCream | Zurich, Switzerland
45 | Matt Mahoney | Facebook | New York, NY
46 | Dan Schafer | Facebook | New York, NY (visiting)
47 | Robert Mosolgo | GitHub | Charlottesville, VA
48 | Craig Smitham | GraphZen | Dallas, TX
49 | Alan Cha | IBM Research | Yorktown Heights, NY
50 | Erik Wittern | IBM | Hamburg, Germany
51 | Krithika Prakash | IBM | New York, NY
52 | Wojciech Trocki | Red Hat/IBM | Dublin, Ireland
53 | Mike Marcacci | Marcacci Labs | Woodside, CA
54 | Tanay Pratap | Microsoft | Bengaluru, India
55 | Benedikt Franke | MLL | Munich, DE
56 | Stephen Spalding* | Netflix | Los Gatos, CA
57 | Vince Foley | New Relic, Absinthe | Portland, OR
58 | Ashwin Hegde | PayPal | Bengaluru, India
59 | Gabriel McAdams | PayPal | San Jose, CA
60 | Oscar Funes | PayPal | San Francisco, CA
61 | Samuel Parsons | PayPal | Ames, IA
62 | Evan Huus | Shopify | Ottawa, Canada
63 | Matt Gadda | Twitter | San Francisco, CA
64 | Nick Issacs | Twitter | San Francisco, CA
65 | Sasha Solomon | Twitter | San Francisco, CA
66 |
67 | \*: willing to take notes (eg. Joe Montana\*)
68 |
69 |
70 | ## Agenda
71 |
72 | 1. Opening of the meeting
73 | 1. Introduction of attendees
74 | 1. Determine volunteers for note taking (5m)
75 | 1. Review agenda (5m)
76 | 1. Review [previous meeting's action items](../notes/2019-09-12.md#action-items) and check progress on those
77 | 1. Spec cut date discussion (Lee, 10m) [#261](https://github.com/graphql/graphql-wg/issues/261)
78 | 1. Disallow non-breakable chains of circular references in Input Objects (Benedikt, 5m) [RFC](https://github.com/graphql/graphql-spec/pull/445)
79 | 1. Lexer lookaheads stage 3 approval (Lee, 10m) [RFC 1](https://github.com/graphql/graphql-spec/pull/599) [RFC 2](https://github.com/graphql/graphql-spec/pull/601)
80 | 1. Repeatable directives (10m) [RFC](https://github.com/graphql/graphql-spec/pull/472)
81 | 1. Empty composite types (Victor, 10m) [RFC](https://github.com/graphql/graphql-spec/pull/606)
82 | 1. Review design for the code page for [graphql.org](https://github.com/graphql/graphql.github.io/issues/768) (5m)
83 | 1. Interfaces implementing interfaces (James, 10m) [RFC](https://github.com/graphql/graphql-js/pull/2084)
84 | 1. Review [Input Union RFC](https://github.com/graphql/graphql-spec/blob/master/rfcs/InputUnion.md) and discuss the next steps (30m, Vince)
85 |
--------------------------------------------------------------------------------
/agendas/2021/2021-04-01.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – April 2021
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. This is an open meeting in which
6 | anyone in the GraphQL community may attend. *To attend this meeting or propose
7 | agenda, edit this file.*
8 |
9 | - **Date & Time**: [April 1st 2021 18:00 - 20:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2021&month=4&day=1&hour=18&min=0&sec=0&p1=224&p2=179&p3=136&p4=268&p5=367&p6=438&p7=240&iv=0), view the [calendar](https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).
10 |
11 | | :warning: **Please note the new time for the April session** |
12 | | ------------------------------------------------------------ |
13 |
14 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
15 | - **Video Conference Link**: https://zoom.us/j/593263740
16 | - Password: graphqlwg
17 | - **Live Notes**: [Google Doc](https://docs.google.com/document/d/1royZzUTjZliMnpUWAm3YlHs0nU3hglk_hkq0ckQFAS4/edit?usp=sharing)
18 |
19 |
20 | ## Attendees
21 |
22 | > **Guidelines**
23 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
24 | > - To respect meeting size, attendees should be relevant to the agenda.
25 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
26 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
27 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
28 | >
29 | > **By joining the meeting you consent to being recorded and agree to the Specification Membership Agreement, participation guidelines, and code of conduct. Meetings may be recorded, by joining you grant permission to be recoded.**
30 |
31 | | Name | Organization / Project | Location
32 | | ------------------------ | ------------------------ | ------------------------
33 | | Lee Byron | GraphQL Foundation | San Francisco, CA, US
34 | | Alan Cha ✏ | IBM Research | Yorktown Heights, NY, US
35 | | Benjie Gillam ✏ | Graphile | Southampton, UK
36 | | Evan Huus | Shopify | Ottawa, ON, CA
37 | | Ivan Goncharov | graphql-js | Lviv, UA
38 | | Matt Mahoney | Facebook | Brooklyn, NY, US
39 | | Michael Staib | ChilliCream | Zurich, CH
40 | | Rob Grant | TakeShape | Brooklyn, NY, US
41 | | Andrew Sprouse | TakeShape | Brooklyn, NY, US
42 | | Robert Zhu | AWS | Seattle, WA
43 | | Sasha Solomon | Twitter | Portland, OR, US
44 | | Stephen Spalding ✏ | Netflix | Los Gatos, CA, US
45 | | Mark Larah | Yelp | San Francisco, CA, US
46 |
47 | ## Agenda
48 |
49 | > **Guidelines**
50 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
51 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
52 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
53 |
54 |
64 |
65 | 1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
66 | - [Specification Membership Agreement](https://github.com/graphql/foundation)
67 | - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
68 | - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
69 | 1. Introduction of attendees (5m, Lee)
70 | 1. Determine volunteers for note taking (1m, Lee)
71 | 1. Review agenda (2m, Lee)
72 | 1. Review previous meeting's action items (5m, Lee)
73 | - [All action items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+label%3A%22Action+item+%3Aclapper%3A%22)
74 | 1. Spec 2021 cut update? (5m Lee)
75 | 1. One of proposal updates? (5m Benjie)
76 | 1. Adding descriptions to queries and fragments? (5m Ivan)
77 | 1. Spec PR review (5-10m Benjie)
78 |
--------------------------------------------------------------------------------
/membership/README.md:
--------------------------------------------------------------------------------
1 | # GraphQL Specification Membership
2 |
3 | All contributors must sign the GraphQL Specification membership agreement ([preview](./GraphQL-Specification_Membership-2021-01-25-PREVIEW.pdf)) prior to participating in specification or code activity.
4 |
5 | There is no cost, and once you've signed the document you will able to open PRs and participate in development discussions in the various GraphQL working groups.
6 |
7 | GraphQL uses EasyCLA to ensure that all contributors have signed the documents. While the GraphQL Specification membership agreements are not a CLA, the workflow is the same. If you or your organization haven't signed the documents, simply open a PR and you will be prompted through the process.
8 |
9 | Please note that this is different from [membership in the GraphQL Foundation](https://foundation.graphql.org/join). If your organization relies upon GraphQL, please become a member. Membership dues are the single source of essential funding that we rely upon to support the GraphQL ecosystem.
10 |
11 | ### Who signs the documents?
12 |
13 | You can either sign the GraphQL Specification membership documents as an individual, or your company can sign and authorize you as a contributor.
14 |
15 | The individual workflow is for people who can make the membership commitments on their own behalf (e.g., hobbyists, students, sole proprietors, etc). This workflow is fast and easy, but may not be appropriate for people who are doing work-for-hire. The corporate workflow is more complicated, but allows a company to sign one document and then manage all contributors (including pre-approval based upon email domain or GitHub org).
16 |
17 | At a high level, the signature process works like this:
18 |
19 | 1. Open a PR against any [GraphQL repo](https://github.com/graphql) covered by EasyCLA.
20 | 1. A bot will check whether your GitHub user is covered by a signed specification membership agreement.
21 | 1. If you're covered, you are done and your contribution can be merged.
22 | 1. If you're not covered, you'll be prompted through the signature process.
23 |
24 | ### Initiating the signature process against the test repo
25 |
26 | The easiest way to initiate the process is to open a trivial PR against an empty repo we specifically set up for onboarding. Just [fork this repo](https://github.com/graphql/easycla), make a trivial change, open a PR, and follow the steps.
27 |
28 | Alternately, you can open a PR against any other covered GraphQL repo.
29 |
30 | ## Sign as an individual
31 |
32 | If you are working on your own behalf and can make IP commitments about what you produce, you can sign as an individual contributor.
33 |
34 | 1. Open a PR against one of the test repos.
35 | 1. When blocked by the bot, follow the prompts and choose *Individual*.
36 | 1. Fill in the details and sign the DocuSign form.
37 | 1. Wait a little while for the check to re-run.
38 |
39 | That's all there is to it.
40 |
41 | ## Have your company sign for you
42 |
43 | If you are doing work for someone else (e.g., it's your job), the company might need to sign for you. The advantage here is that they can authorize other employees with a single signature. If your company has already signed the document but you're still blocked, you may just need to request your username be added to the list of authorized contributors. Either way, you'll have to confirm you work for them.
44 |
45 | ### If your company hasn't yet signed the agreement
46 |
47 | 1. Open a PR against one of the covered repos (code-only, or code+spec).
48 | 1. When blocked by the bot, follow the prompts and choose *Corporate*.
49 | 1. Choose your company from the list. If it's not there, add it.
50 | 1. Designate someone with signing authority (generally an officer or attorney, if in doubt ask your manager) to receive the DocuSign. This person is the *CLA Manager*.
51 | 1. Follow up with the CLA Manager and ask them to sign the DocuSign form.
52 | 1. The CLA Manager can now designate other CLA Managers who are allowed to manage your company's list of authorized contributors.
53 |
54 | ### When your company has finished signing the agreement
55 |
56 | 1. Once the agreement is signed, any CLA manager can [log into the EasyCLA site](https://easycla.lfx.linuxfoundation.org/#/) (choose EasyCLA v1) and either:
57 | * Add your GitHub username individually to the list of authorized contributors, or
58 | * Authorize any GitHub user with an email matching the corporate domain, or
59 | * Authorize any user who is a member of your company's GitHub org.
60 | 2. Once this is done, you'll probably need to click the *Details* link in the PR and click a button that acknowledges you want to be covered by the company.
61 | 3. Wait a little while for the check to re-run.
62 |
63 | At this point, your PRs will no longer be blocked by EasyCLA on any GraphQL Foundation repo.
64 |
65 | ### Best practices
66 |
67 | * Ask the CLA Manager to add the corporate email domain to the list of authorized contributors. If your company is very diligent about adding employees to a corporate GitHub organization, this is another good way to do it. Either way, it is much easier than adding contributors individually.
68 |
69 | ## Getting help
70 |
71 | If your company is in the system but you don't know who your CLA manager is, you can email [operations@graphql.org](mailto:operations@graphql.org).
72 |
73 | If you run into issues, you can [open a ticket in JIRA](https://jira.linuxfoundation.org/plugins/servlet/theme/portal/4/create/143).
--------------------------------------------------------------------------------
/agendas/2021/2021-09-02.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – September 2021
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. This is an open meeting in which
6 | anyone in the GraphQL community may attend. *To attend this meeting or propose
7 | agenda, edit this file.*
8 |
9 | - **Date & Time**: [September 2nd 2021 18:00 - 20:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2021&month=9&day=2&hour=18&min=0&sec=0&p1=224&p2=179&p3=136&p4=268&p5=367&p6=438&p7=240&iv=0), view the [calendar](https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).
10 |
11 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
12 | - **Video Conference Link**: https://zoom.us/j/593263740
13 | - Password: graphqlwg
14 | - **Live Notes**: [Google Doc](https://docs.google.com/document/d/1mNG2cp1UHPrWCSW9U803qOv8VaaPhJ3RpKxCnAbKLEs/edit?usp=sharing)
15 |
16 |
17 | ## Attendees
18 |
19 | > **Guidelines**
20 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
21 | > - To respect meeting size, attendees should be relevant to the agenda.
22 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
23 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
24 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
25 | >
26 | > **By joining the meeting you consent to being recorded and agree to the Specification Membership Agreement, participation guidelines, and code of conduct. Meetings may be recorded, by joining you grant permission to be recoded.**
27 |
28 | | Name | Organization / Project | Location
29 | | ------------------------ | ------------------------ | ------------------------
30 | | Lee Byron | GraphQL Foundation | San Francisco, CA, US
31 | | Ivan Goncharov | Apollo | Side, TR
32 | | Benjie Gillam ✏ | Graphile | Chandler's Ford, UK
33 | | Kamil Kisiela | The Guild | Warsaw, PL
34 | | Matt Mahoney | Facebook | Brooklyn, NY, US
35 | | Morris Matsa | IBM | Boston, US
36 | | Michael Staib | ChilliCream. | Zurich, CH
37 | | Yaacov Rydzinski | Independent Contributor | Neve Daniel, IL
38 | | Stephen Spalding | Netflix | Los Gatos, CA
39 | | *ADD YOUR NAME ABOVE TO ATTEND*
40 |
41 |
42 | ## Agenda
43 |
44 | > **Guidelines**
45 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
46 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
47 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
48 |
49 |
59 |
60 | 1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
61 | - [Specification Membership Agreement](https://github.com/graphql/foundation)
62 | - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
63 | - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
64 | 1. Introduction of attendees (5m, Lee)
65 | 1. Determine volunteers for note taking (1m, Lee)
66 | 1. Review agenda (2m, Lee)
67 | 1. Review previous meeting's action items (5m, Lee)
68 | - [Ready for review](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+is%3Aopen+label%3A%22Ready+for+review+%F0%9F%99%8C%22+sort%3Aupdated-desc)
69 | - [All open action items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+is%3Aopen+label%3A%22Action+item+%3Aclapper%3A%22+sort%3Aupdated-desc)
70 | 1. [__fulfilled Meta Field RFC](https://github.com/graphql/graphql-spec/pull/879) (10m, Matt)
71 | 2. Relax rule on [Field Selection Merging](https://spec.graphql.org/draft/#sec-Field-Selection-Merging) to allow merging covariant fields [Spec PR](https://github.com/graphql/graphql-spec/pull/883) (15m, Ivan)
72 | 3. Directive limitions
73 | - [Discord discussion](https://discord.com/channels/625400653321076807/862834364718514196/882933871249862707)
74 | 5. *ADD YOUR AGENDA ABOVE*
75 |
--------------------------------------------------------------------------------
/rfcs/FullSchemas.md:
--------------------------------------------------------------------------------
1 | # RFC: Full Schemas
2 |
3 | **Proposed by:** [Martin Bonnin](https://mastodon.mbonnin.net/@mb) - Apollo
4 |
5 | ## Problem statement
6 |
7 | In its current form the GraphQL specification contains language about the presence of built-in definitions in SDL schemas:
8 |
9 | * scalars MUST be absent from SDL ([here](https://spec.graphql.org/October2021/#sel-GAHXJHABAB_D4G))
10 | * directives SHOULD be absent([here](https://spec.graphql.org/October2021/#sel-FAHnBPLCAACCcooU))
11 | * introspection types are not mentioned in the spec (See [here](https://github.com/graphql/graphql-spec/pull/1036) for a pull request to address this)
12 |
13 | This is made for brevity and correctness reasons. When the SDL document is fed to a GraphQL implementation like graphql-js, there is no need to add the built-in definitions as the implementation will add them. Adding built-in definitions in the input schema could also be confusing: what definition is used? The one from the input schema or the one from the implementation? It makes sense overall to omit built-in definitions from SDL documents that are used by GraphQL implementations.
14 |
15 | But the absence of built-in definitions can make it impossible for client tools to validate an operation without knowing more details about what is supported by the server.
16 |
17 | For an example, the below query is valid if the server uses the latest draft but is not valid if the server uses the [Oct2021 specification](https://spec.graphql.org/October2021/#sel-GAJXNFADgHAADkHABsrC):
18 |
19 | ```graphql
20 | {
21 | __schema {
22 | types {
23 | name
24 | inputFields {
25 | name
26 | # isDeprecated is only present in latest versions of the specification
27 | isDeprecated
28 | deprecationReason
29 | }
30 | }
31 | }
32 | }
33 | ```
34 |
35 | In general, it would be nice to have a SDL format that would be a full representation of the server schema, even if it means it is more verbose.
36 |
37 | This proposal is about allowing SDL documents that contain all the information required for tooling to validate any operation, later denominated as "full schema".
38 |
39 | ## Proposal 1: relax SDL requirements
40 |
41 | An easy solution is to relax the SDL requirements and leave it up to tools to determine how they react to missing or existing built-in definitions.
42 |
43 | A GraphQL implementation like graphql-js could decide to throw an error if it is fed with a definition that it itself provides. It could also decide to react on what is in the input schema. For an example, `@include`/`@skip` could be left unsupported by not adding them in the input schema.
44 |
45 | A GraphQL client like apollo-kotlin could decide to throw an error if the introspection types are missing. Or add options to specify manually what built-in definitions to use for validation.
46 |
47 | ## Proposal 2: be explicit about "full schemas" vs current, regular "schemas"
48 |
49 | Another solution is to introduce "full schemas" in addition to the existing SDL schemas. A "full schema" is a schema that also contains the built-in definitions added by the implementation.
50 |
51 | This proposal is more opinionated but also less flexible than proposal 1. It's either "regular schema" or "full schema" but an implementation could not decide to use some of the input definitions while still adding its own on top of them.
52 |
53 | ## Questions
54 |
55 | ### Q: Why not always use introspection results?
56 |
57 | Introspection is the tool that was designed for clients to consume schemas, so it could be argued that client should use that. However:
58 |
59 | 1. Some servers have introspection disabled making it hard for clients to get an introspection schema
60 | 2. In general, SDL is a much more readable and concise representation than the introspection JSON, making it more suited for workflows where the file is read by humans (IDEs, codegen, etc...)
61 | 3. SDL schemas can represent applied directives, which introspection can't (see [#300](https://github.com/graphql/graphql-spec/issues/300)). Tools could use that information to provide a better developer experience, add functionality, etc...
62 |
63 | ### Q: Wouldn't that make inconsistent SDL documents containing unused definitions?
64 |
65 | There is a (unwritten?) rule that SDL definitions must all be used (with an exception for built-in scalars and directive definitions). Hence, adding the introspection types to SDL would result in this schema being valid:
66 |
67 | ```graphql
68 | type Query {
69 | random: String
70 | }
71 |
72 | type __Schema { ... }
73 | type __Type { ... }
74 | enum __TypeKind { ... }
75 | type __Field { ... }
76 | type __InputValue { ... }
77 | type __EnumValue { ... }
78 | type __Directive { ... }
79 | enum __DirectiveLocation { ... }
80 | ```
81 |
82 | Although technically nothing would use the `__Schema` type. For this, we would need to add the `__schema` meta-field:
83 |
84 | ```graphql
85 | type Query {
86 | random: String
87 | __schema: __Schema
88 | }
89 |
90 | ```
91 |
92 | But then doing so for typename would become very noisy:
93 |
94 | ```graphql
95 | type Foo {
96 | # add __typename here
97 | __typename: String!
98 | }
99 | type Bar {
100 | # and here as well
101 | __typename: String!
102 | }
103 | union SomeUnion = Foo | Bar {
104 | # Technically unions have __typename, should we do this?
105 | __typename: String!
106 | }
107 |
108 | ```
109 |
--------------------------------------------------------------------------------
/rfcs/ObjectIdentification.md:
--------------------------------------------------------------------------------
1 | # RFC: Object Identification
2 |
3 | **Proposed by:** [Lenz Weber-Tronic](https://github.com/phryneas) - Apollo
4 |
5 | ## Problem statement
6 |
7 | Currently, there is no way for clients to know if an object can be uniquely identified. This makes it hard for clients to implement caching strategies that rely on object identity for normalization, or for AI agents that need to communicate with other systems, referencing objects returned from a GraphQL API.
8 |
9 | This is in part solved by patterns like [Global Object Identification](https://graphql.org/learn/global-object-identification/), but this is nothing clients can generally rely on, since there is no guarantee that a server actually follows this pattern or just accidentally overlaps with it, without actually fully implementing it.
10 |
11 | Also, the Global Object Identification pattern is not enough for the use case of a Client without schema knowledge - such a client couldn't inject a selection for `id` into all object selections (as they usually do with `__typename`), since it doesn't know which objects actually have an `id` field and the resulting query might be invalid.
12 |
13 | ## Proposal
14 |
15 | ### Introduction of an `__id` introspection field
16 |
17 | This proposal introduces a new introspection field `__id`, which can be queried on any object, interface or union type.
18 | The field is of type `ID` and for each individual type, the field must either always return a non-null value or always return null.
19 |
20 | If an `__id` field returns a non-null value for a type, this value must be guaranteed to uniquely identify the object when combined with the value of the `__typename` field.
21 |
22 | This would allow clients without schema knowledge to query for `__id` on selection set and use the returned value for caching or referencing the object in other systems, if it is not `null`.
23 | As a result, this would remove the need for manual configuration like Apollo Client's [`keyFields` type policies](https://www.apollographql.com/docs/react/caching/cache-configuration#customizing-cache-ids) or urqls's [Custom Keys](https://nearform.com/open-source/urql/docs/graphcache/normalized-caching/#custom-keys-and-non-keyable-entities), which are currently needed to tell the client which fields to use for identifying an object.
24 | These configurations are often a source of bugs, since they can be forgotten or misconfigured, or simply may not keep up with an evolving schema.
25 |
26 | ### Intoduction of an `__Entity` interface
27 |
28 | In addition to the `__id` field, this proposal also introduces a new introspection interface `__Entity`, which is defined as follows:
29 |
30 | ```graphql
31 | interface __Entity {
32 | __id: ID!
33 | }
34 | ```
35 |
36 | This interface could be used by clients with schema knowledge (such as Apollo Kotlin or Apollo iOS) at build time to decide if a certain type can be uniquely identified (and thus, stored in a normalized way) or not.
37 |
38 | This interface may be implicitly added to objects that implement a way to resolve the `__id` field to a non-null value, depending on the server implementation.
39 | Alternatively, implementers might also choose to explicitly add the interface to types that can be uniquely identified.
40 |
41 | ### Presence of globally identifiable types in the schema
42 |
43 | To allow clients to detect if a server supports this feature, the value of the `__id` field on the `Query` type should be specified as well:
44 |
45 | * If a server does not have any types with a non-null `__id` field, the `__id` field on the `Query` type should return `null`.
46 | * If a server has at least one type with a non-null `__id` field, the `__id` field on the `Query` type should return a non-null value (the suggestion would be `"ROOT_QUERY"`, if we are to specify the exact value).
47 |
48 | This could be used by clients to detect if the server supports the feature at all, and if it doesn't, they could choose to omit querying for the `__id` field in future requests to save bandwidth.
49 |
50 |
51 | ## Suggested Spec addition
52 |
53 | To be inserted after the "Type Name Introspection" section in `spec/Section 4 -- Introspection.md`
54 |
55 | ````md
56 | ## Object Identification
57 |
58 | GraphQL supports Object Identification via the meta-field `__id: ID` on any
59 | Object, Interface, or Union.
60 |
61 | This field returns:
62 | * `null`, if the object does not have a unique identifier in the context of its
63 | type, or if the schema doesn't support Object Identification in general.
64 | * a non-null ID that in combination with the object's type name is globally unique.
65 |
66 | For every type, `__id` must either always return `null` or never return `null`.
67 |
68 | As a meta-field, `__id` is implicit and does not appear in the fields list in
69 | any defined type.
70 |
71 | The value of `__id` on the `Query` type is defined to either be `ROOT_QUERY` if
72 | the schema supports Object Identification, or `null` if it does not. This guarantee
73 | can be used to introspect whether a schema supports Object Identification in general.
74 |
75 | Note: `__id` may not be included as a root field in a subscription operation.
76 |
77 | ## Identifiable types
78 |
79 | Identifiable types may also implement the `__Entity` interface, which is defined as follows:
80 |
81 | ```graphql
82 | interface __Entity {
83 | __id: ID!
84 | }
85 | ```
86 |
87 | A server might choose to implicitly add this interface to types that implement a way to resolve the `__id` field to a non-null value.
88 | ````
89 |
--------------------------------------------------------------------------------
/agendas/2020/2020-04-02.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – April 2020
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. This is an open meeting in which
6 | anyone in the GraphQL community may attend. *To attend this meeting or propose
7 | agenda, edit this file.*
8 |
9 | - **Date & Time**: [April 2nd 2020 16:00 - 19:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2020&month=4&day=2&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).
10 |
11 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
12 | - **Video Conference Link**: https://zoom.us/j/593263740
13 | - Password: graphqlwg
14 | - **Live Notes**: https://docs.google.com/document/d/1IElYaroab82It4yJ5cMc9hEZm7HNk1wabufX0YNMOZg/edit?usp=sharing
15 | - **Video Recording**: https://www.youtube.com/watch?v=bCXQsfIgTng
16 |
17 |
18 | ## Attendees
19 |
20 | > **Guidelines**
21 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
22 | > - To respect meeting size, attendees should be relevant to the agenda.
23 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
24 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
25 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
26 | >
27 | > **By joining the meeting you consent to being recorded and agree to the Specification Membership Agreement,
28 | > participation guidelines, and code of conduct.**
29 |
30 | | Name | Organization / Project | Location
31 | | ------------------------ | ------------------------ | ------------------------
32 | | Lee Byron | GraphQL Foundation | San Francisco, CA, US
33 | | Matt Farmer | Individual Contrib | Oakland, CA, US
34 | | Michael Staib | ChilliCream | Zurich, CH
35 | | Matt Mahoney | Facebook | New York, NY, US
36 | | Benjie Gillam ✏ | Graphile | Southampton, UK
37 | | Ivan Goncharov | graphql-js | Lviv, UA
38 | | Evan Huus | Shopify | Ottawa, ON, CA
39 | | Robert Zh | AWS | Redmond, WA
40 | | Morris Matsa | IBM | Boston, US
41 | | Mike Marcacci | Marcacci Labs | Woodside, CA
42 | | Trevor Scheer | Apollo | Las Vegas, NV, US
43 | | *ADD YOUR NAME ABOVE TO ATTEND*
44 |
45 |
46 | ## Agenda
47 |
48 | > **Guidelines**
49 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
50 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
51 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
52 |
53 |
63 |
64 | 1. Introduction of attendees (5m, Lee)
65 | 1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
66 | - [Specification Membership Agreement](https://github.com/graphql/foundation)
67 | - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
68 | - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
69 | 1. Determine volunteers for note taking (2m, Lee)
70 | 1. Review agenda (2m, Lee)
71 | 1. GraphQL Foundation Turns 1! See the Annual Report: https://foundation.graphql.org/annual-report-2019/
72 | 1. Custom scalar specification URIs (5m, Evan Huus / Matt Farmer)
73 | - Status check, still waiting on graphql-js
74 | 1. Input union RFC (5m, Evan Huus / Vince Foley)
75 | - We said we'd have a working session with the champions but couldn't schedule something. Do we want to try again or find a different process?
76 | 1. `application/graphql` media type status (10m, Benjie)
77 | - Referenced by [graphql.org - "Serving over HTTP"](https://graphql.org/learn/serving-over-http/)
78 | - Not officially registered? [RFC6838 - Media Type Specifications and Registration Procedures](https://tools.ietf.org/html/rfc6838) and [IANA media types](https://www.iana.org/assignments/media-types/media-types.xhtml)
79 | - Other derivatives, e.g. `application/graphql+json` for `{"query": "...", "variables": {...}, "operationName": "..."}`
80 |
--------------------------------------------------------------------------------
/agendas/2020/2020-12-03.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – December 2020
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. This is an open meeting in which
6 | anyone in the GraphQL community may attend. *To attend this meeting or propose
7 | agenda, edit this file.*
8 |
9 | - **Date & Time**: [December 3rd 2020 17:00 - 20:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2020&month=12&day=3&hour=17&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152), view the [calendar](https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).
10 |
11 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
12 | - **Video Conference Link**: https://zoom.us/j/593263740
13 | - Password: graphqlwg
14 | - **Live Notes**: [Google Doc](https://docs.google.com/document/d/1Lpf3FkXs10rDKkC1LsRY-s3UPSPF0-MXK11fZY7c_VM/edit)
15 |
16 |
17 | ## Attendees
18 |
19 | > **Guidelines**
20 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
21 | > - To respect meeting size, attendees should be relevant to the agenda.
22 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
23 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
24 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
25 | >
26 | > **By joining the meeting you consent to being recorded and agree to the Specification Membership Agreement, participation guidelines, and code of conduct. Meetings may be recorded, by joining you grant permission to be recoded.**
27 |
28 | | Name | Organization / Project | Location
29 | | ------------------------ | ------------------------ | ------------------------
30 | | Lee Byron | GraphQL Foundation | San Francisco, CA, US
31 | | James Baxley | Apollo | South Carolina, SC, US
32 | | Michael Staib | ChilliCream | Zurich, CH
33 | | Dan Schafer | Facebook | Menlo Park, CA, US
34 | | Matt Mahoney | Facebook | New York, NY, US
35 | | Benjie Gillam ✏️ | Graphile | Southampton, UK
36 | | Evan Huus | Shopify | Ottawa, ON, CA
37 | | Yogesh Desai | Tokopedia | Pune, India
38 | | Mark Larah | Yelp | San Francisco, CA, US
39 | | Andi Marek | GraphQL Java | Sydney, Australia
40 | | Ivan Goncharov | graphql-js | Lviv, UA
41 | | Alan Cha | IBM Research | Yorktown Heights, NY, US
42 | | Sasha Solomon | Twitter | Portland, OR, US
43 | | Nick Schrock | Elementl | Tahoe City, CA, US
44 |
45 |
46 | ## Agenda
47 |
48 | > **Guidelines**
49 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
50 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
51 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
52 |
53 |
63 |
64 | 1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
65 | - [Specification Membership Agreement](https://github.com/graphql/foundation)
66 | - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
67 | - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
68 | 1. Introduction of attendees (5m, Lee)
69 | 1. Determine volunteers for note taking (1m, Lee)
70 | 1. Review agenda (2m, Lee)
71 | 1. [RFC: \_\_typename is not valid at subscription root](https://github.com/graphql/graphql-spec/pull/776) (10m, Benjie)
72 | 1. [RFC: Schema coordinates](https://github.com/graphql/graphql-spec/pull/746) (10m, Mark)
73 | - To talk about `Foo.baz.bar` vs `Foo.baz(bar:)` ([by popular demand](https://github.com/graphql/graphql-spec/pull/746#discussion_r526365127))
74 | 1. [RFC: Default value coercion](https://github.com/graphql/graphql-spec/pull/793) (20m, Benjie)
75 | 1. Review previous meetings' action items (15m, Benjie and Lee)
76 | - [All action items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+label%3A%22Action+item+%3Aclapper%3A%22)
77 |
--------------------------------------------------------------------------------
/wg.config.js:
--------------------------------------------------------------------------------
1 | // @ts-check
2 |
3 | /** @type {import('wgutils').Config} */
4 | const config = {
5 | name: "GraphQL WG",
6 | repoUrl: "https://github.com/graphql/graphql-wg",
7 | videoConferenceDetails: `https://zoom.us/j/593263740
8 | - _Password:_ graphqlwg`,
9 | liveNotesUrl:
10 | "https://docs.google.com/document/d/1q-sT4k8-c0tcDYJ8CxPZkJ8UY4Nhk3HbKsRxosu_7YE/edit?usp=sharing",
11 | timezone: "US/Pacific",
12 | frequency: "monthly",
13 | nth: 1,
14 | weekday: "Th", // M, Tu, W, Th, F, Sa, Su
15 | time: "10:30-12:00", // 24-hour clock, range
16 | attendeesTemplate: `\
17 | | Name | GitHub | Organization | Location |
18 | | :--------------- | :------------ | :----------------- | :-------------------- |
19 | | Lee Byron (Host) | @leebyron | GraphQL Foundation | San Francisco, CA, US |
20 | `,
21 | agendasFolder: "agendas",
22 | dateAndTimeLocations:
23 | "p1=224&p2=179&p3=136&p4=268&p5=367&p6=438&p7=248&p8=240",
24 | joiningAMeetingFile: "JoiningAMeeting.md",
25 | filenameFragment: "wg-primary",
26 | description: `\
27 | The GraphQL Working Group meets regularly to discuss changes to the
28 | [GraphQL Specification][] and other core GraphQL projects. This is an open
29 | meeting in which anyone in the GraphQL community may attend.
30 |
31 | This is the primary monthly meeting, which typically meets on the first Thursday
32 | of the month. In the case we have additional agenda items or follow ups, we also
33 | hold additional secondary meetings later in the month.`,
34 | links: {
35 | "graphql specification": "https://github.com/graphql/graphql-spec",
36 | calendar:
37 | "https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com",
38 | "google calendar":
39 | "https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t",
40 | "ical file":
41 | "https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics",
42 | },
43 |
44 | annualItems: [
45 | // TSC Elections
46 | {
47 | month: 12,
48 | allMeetings: true,
49 | text: `**TSC elections**: open for self-nominations (5m, Host)
50 | - [Election process](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#election-process)
51 | - [Nomination form](https://tsc-nomination.graphql.org/)`,
52 | },
53 | {
54 | month: 1,
55 | text: `**TSC elections**: voting now open (2m, Host)
56 | - [Election process](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#election-process)`,
57 | },
58 | {
59 | month: 2,
60 | text: `**TSC**: election results (2m, Host)
61 | - [Election process](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#election-process)
62 | - [This year's TSC members](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#tsc-members)`,
63 | },
64 |
65 | // Spec "release train"
66 | {
67 | month: 6,
68 | text: `**Spec release**: release is coming, 2 months until freeze! (5m, Host)`,
69 | },
70 | {
71 | month: 7,
72 | text: `**Spec release**: will freeze release just before next month's meeting; last chance for editorial changes (5m, Host)`,
73 | },
74 | {
75 | month: 8,
76 | text: `**Spec release**: **TSC**, please review and approve the changelog (5m, Host)`,
77 | },
78 | {
79 | month: 9,
80 | text: `**Spec release**: spec release is live! (pending 45 day notice period) (5m, Host)`,
81 | },
82 | ],
83 |
84 | secondaryMeetings: [
85 | // We decided at the primary WG in November 2024 to cancel the secondaries
86 | // since they have not been leveraged for a while. We can bring them back
87 | // as and when they are necessary.
88 | /*
89 | {
90 | // Wednesday, not Thursday
91 | dayOffset: -1,
92 | nth: 2,
93 | time: "16:00-17:00",
94 | name: "Secondary, APAC",
95 | filenameFragment: "wg-secondary-apac",
96 | description: `\
97 | The GraphQL Working Group meets regularly to discuss changes to the
98 | [GraphQL Specification][] and other core GraphQL projects. This is an open
99 | meeting in which anyone in the GraphQL community may attend.
100 |
101 | This is a secondary meeting, timed to be acceptable for those in Asia Pacific
102 | timezones, which typically meets on the second Wednesday of the month. The
103 | primary meeting is preferred for new agenda, where this meeting is for overflow
104 | agenda items, follow ups from the primary meeting, or agenda introduced by those
105 | who could not make the primary meeting time.`,
106 | },
107 | */
108 | {
109 | nth: 3,
110 | time: "10:30-12:00",
111 | name: "Secondary, EU",
112 | filenameFragment: "wg-secondary-eu",
113 | description: `\
114 | The GraphQL Working Group meets regularly to discuss changes to the
115 | [GraphQL Specification][] and other core GraphQL projects. This is an open
116 | meeting in which anyone in the GraphQL community may attend.
117 |
118 | This is a secondary meeting, timed to be acceptable for those in European
119 | timezones, which typically meets on the third Thursday of the month. The
120 | primary meeting is preferred for new agenda, where this meeting is for overflow
121 | agenda items, follow ups from the primary meeting, or agenda introduced by those
122 | who could not make the primary meeting time.`,
123 | },
124 | ],
125 | };
126 |
127 | module.exports = config;
128 |
--------------------------------------------------------------------------------
/agendas/2019/2019-12-05.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – December 2019
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. This is an open meeting in which
6 | anyone in the GraphQL community may attend. *To attend this meeting or propose
7 | agenda, edit this file.*
8 |
9 | - **Video Conference Link**: https://zoom.us/j/593263740
10 | - Password: graphqlwg
11 | - **Live Notes**: https://docs.google.com/document/d/1uN1e22_4YEdPw-Gpt52J4fblSU5KmHz3vwqgMz89D8c/edit#heading=h.p1whx46b3fks
12 | - **Date & Time**: [December 5th 2019 17:00 - 20:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2019&month=12&day=5&hour=17&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).
13 | - **Video Recording**: https://www.youtube.com/watch?v=XzEHLpMq13A
14 |
15 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
16 |
17 |
18 | ## Attendees
19 |
20 | > **Guidelines**
21 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
22 | > - To respect meeting size, attendees should be relevant to the agenda.
23 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
24 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
25 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
26 |
27 | | Name | Organization / Project | Location
28 | | ------------------------ | ------------------------ | ------------------------
29 | | Lee Byron | GraphQL Foundation | San Francisco, CA, US
30 | | Victor Andrée | Advinans | Stockholm, Sweden
31 | | Antoine Boyer | Amazon (AppSync) | Seattle, WA, US
32 | | Rohan Deshpande | AWS | Las Vegas, NV
33 | | Trevor Scheer | Apollo | San Francisco, CA, US
34 | | Hugh Willson | Apollo | Ottawa, ON, CA
35 | | Michael Staib | ChilliCream | Zurich, Switzerland
36 | | Rafael Staib | ChilliCream | Zurich, Switzerland
37 | | Pascal Senn | ChilliCream | Zurich, Switzerland
38 | | Benjie Gillam | GraphiQL / Graphile | Southampton, UK
39 | | Ivan Goncharov | graphql-js | Lviv, UA
40 | | Praveen Durairaju | Hasura | Bangalore, India
41 | | Alan Cha ✏️ | IBM Research | Yorktown Heights, NY, US
42 | | Greg Kesler | Intuit | Mountain View, CA, US
43 | | Mike Marcacci | Marcacci Labs | San Diego, CA
44 | | Stephen Spalding | Netflix | Los Gatos, CA
45 | | Vince Foley | New Relic, Absinthe | Portland, OR, US
46 | | Evan Huus | Shopify | Ottawa, ON, CA
47 | | Matt Farmer | Individual Contrib | Oakland, CA, US
48 |
49 |
50 | ## Agenda
51 |
52 | > **Guidelines**
53 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
54 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
55 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
56 |
57 |
67 |
68 | 1. Introduction of attendees (5m, Lee)
69 | 1. Determine volunteers for note taking (2m, Lee)
70 | 1. Review agenda (2m, Lee)
71 | 1. Review [previous meeting's action items](../notes/2019-11-07.md#action-items) (5m, Lee)
72 | - [Currently open action items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+is%3Aopen+label%3A%22Action+item+%3Aclapper%3A%22)
73 | 1. Custom Scalar Specification URIs (20m, Evan and Andi)
74 | - https://github.com/graphql/graphql-spec/issues/635
75 | - https://github.com/graphql/graphql-spec/pull/649
76 | - Compatibility concerns reserving a new directive name?
77 | - Ready for draft / stage 2?
78 | 1. [Input Union RFC](https://github.com/graphql/graphql-spec/blob/master/rfcs/InputUnion.md) (20m, Vince)
79 | - Review Evaluations
80 | - Review new Criteria added
81 | - Next steps?
82 | 1. Make root query operation type optional (15m, Victor)
83 | - PR: https://github.com/graphql/graphql-spec/pull/631
84 | - Just solve Query use case for empty objects (https://github.com/graphql/graphql-spec/pull/606)
85 | 1. Crowd-funding GraphiQL (5m, Benjie)
86 | - Issue: https://github.com/graphql/graphiql/issues/1067
87 | - Funding: https://funding.communitybridge.org/projects/graphql
88 | 1. *ADD YOUR AGENDA ABOVE*
89 |
--------------------------------------------------------------------------------
/agendas/2020/2020-06-11.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – June 2020
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. This is an open meeting in which
6 | anyone in the GraphQL community may attend. *To attend this meeting or propose
7 | agenda, edit this file.*
8 |
9 | - **Date & Time**: [June 11th 2020 16:00 - 19:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2020&month=6&day=11&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152), view the [calendar](https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).
10 |
11 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
12 | - **Video Conference Link**: https://zoom.us/j/593263740
13 | - Password: graphqlwg
14 | - **Live Notes**: https://docs.google.com/document/d/1spo9sRYOv1KOo1SBP0EObuWq_Qp0CvnyFmWHcdqEutU/edit?usp=sharing
15 | - **Video Recording**: https://www.youtube.com/watch?v=936z41Mo1tQ
16 |
17 |
18 | ## Attendees
19 |
20 | > **Guidelines**
21 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
22 | > - To respect meeting size, attendees should be relevant to the agenda.
23 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
24 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
25 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
26 | >
27 | > **By joining the meeting you consent to being recorded and agree to the Specification Membership Agreement, participation guidelines, and code of conduct. Meetings may be recorded, by joining you grant permission to be recoded.**
28 |
29 | | Name | Organization / Project | Location
30 | | ------------------------ | ------------------------ | ------------------------
31 | | Lee Byron | GraphQL Foundation | San Francisco, CA, US
32 | | Rikki Schulte | Gatsby, GraphiQL, LSP | Cleveland, OH, US
33 | | Benjie Gillam | Graphile | Southampton, UK
34 | | Ivan Goncharov | graphql-js | Lviv, UA
35 | | Courtney Robinson | Hypi | London, UK
36 | | Morris Matsa | IBM | Boston, US
37 | | Alan Cha | IBM Research | Yorktown Heights, NY, US
38 | | Benedikt Franke | Lighthouse | Traunstein, Germany
39 | | Stephen Spalding | Netflix | Los Gatos, CA
40 | | Vince Foley | New Relic / Absinthe | Portland, OR, US
41 | | Evan Huus | Shopify | Ottawa, ON, CA
42 | | Andrew Sprouse | TakeShape | Brooklyn, NY, US
43 | | Jesse Rosenberger | Apollo | Helsinki, FI
44 | | Gabriel McAdams | | San Jose, CA, US
45 | | Trevor Scheer | Apollo | Las Vegas, NV, US
46 |
47 |
48 | ## Agenda
49 |
50 | > **Guidelines**
51 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
52 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
53 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
54 |
55 |
65 |
66 | 1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
67 | - [Specification Membership Agreement](https://github.com/graphql/foundation)
68 | - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
69 | - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
70 | 1. Introduction of attendees (5m, Lee)
71 | 1. Determine volunteers for note taking (1m, Lee)
72 | 1. Review agenda (2m, Lee)
73 | 1. Review previous meeting's action items (5m, Lee)
74 | - [All action items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+label%3A%22Action+item+%3Aclapper%3A%22)
75 | 1. GraphQL Scalars hosting and coordination (10m, Evan and Andi)
76 | - https://www.graphql-scalars.com/
77 | 1. GraphQL namespaces (20m, Courtney)
78 | - [Issue comment](https://github.com/graphql/graphql-spec/issues/163#issuecomment-629409803)
79 | 1. Input Union Criteria: Unconstrained combination of input types to unions (20m, Benedikt)
80 | - [PR](https://github.com/graphql/graphql-spec/pull/716)
81 | 1. Input Union & Tagged Types (30m, Lee, Benjie, Evan, Vince)
82 | - [RFC](https://github.com/graphql/graphql-spec/blob/master/rfcs/InputUnion.md)
83 |
--------------------------------------------------------------------------------
/agendas/2021/2021-11-04.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – November 2021
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. This is an open meeting in which
6 | anyone in the GraphQL community may attend. *To attend this meeting or propose
7 | agenda, edit this file.*
8 |
9 | - **Date & Time**: [November 4th 2021 18:00 - 20:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2021&month=11&day=4&hour=18&min=0&sec=0&p1=224&p2=179&p3=136&p4=268&p5=367&p6=438&p7=240&iv=0), view the [calendar](https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).
10 |
11 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
12 | - **Video Conference Link**: https://zoom.us/j/593263740
13 | - Password: graphqlwg
14 | - **Live Notes**: TBD
15 |
16 |
17 | ## Attendees
18 |
19 | > **Guidelines**
20 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
21 | > - To respect meeting size, attendees should be relevant to the agenda.
22 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
23 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
24 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
25 | >
26 | > **By joining the meeting you consent to being recorded and agree to the Specification Membership Agreement, participation guidelines, and code of conduct. Meetings may be recorded, by joining you grant permission to be recoded.**
27 |
28 | | Name | GitHub | Organization | Location
29 | | ------------------ | --------------- | ------------------ | ------------------
30 | | Lee Byron | @leebyron | GraphQL Foundation | San Francisco, CA, US
31 | | Benjie Gillam ✏ | @benjie | Graphile | Chandler's Ford, UK
32 | | Michael Staib | @michaelstaib | ChilliCream | Zurich, CH
33 | | Alex Reilly | @twof | Yelp | San Francisco, CA, US
34 | | Matt Mahoney | @mmahoney | Facebook | Brooklyn, NY, US
35 | | Hugh Willson | @hwillson | Apollo | Ottawa, ON, CA
36 | | Morris Matsa | @mmatsa | IBM | Boston, US
37 | | Jordan Eldredge | @captbaritone | Facebook | San Francisco, CA, US
38 | | Ivan Goncharov | @IvanGoncharov | Apollo | Lviv, UA
39 | | Stephen Spalding ✏ | @fotoetienne | Netflix | Los Gatos, CA, US
40 | | Brian Kim | @brainkim | Apollo | Palisades Park, NJ, US
41 | | Robert Zhu | @robzhu | AWS | Seattle, WA
42 | | *ADD YOUR NAME ABOVE TO ATTEND*
43 |
44 |
45 | ## Agenda
46 |
47 | > **Guidelines**
48 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
49 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
50 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
51 |
52 |
62 |
63 | 1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
64 | - [Specification Membership Agreement](https://github.com/graphql/foundation)
65 | - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
66 | - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
67 | 1. Introduction of attendees (5m, Lee)
68 | 1. Determine volunteers for note taking (1m, Lee)
69 | 1. Review agenda (2m, Lee)
70 | 1. Review previous meeting's action items (5m, Lee)
71 | - [Ready for review](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+is%3Aopen+label%3A%22Ready+for+review+%F0%9F%99%8C%22+sort%3Aupdated-desc)
72 | - [All open action items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+is%3Aopen+label%3A%22Action+item+%3Aclapper%3A%22+sort%3Aupdated-desc)
73 | 1. Guidelines for speaking on behalf of the project (5m, Lee)
74 | - [PR](https://github.com/graphql/graphql-wg/pull/696)
75 | 1. TSC Elections for 2022, open nominations process (5m, Lee)
76 | - [TSC Elections issue](https://github.com/graphql/graphql-wg/issues/765)
77 | - [Nomination form](https://tsc-nomination.graphql.org/)
78 | - [TSC Election Process](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#election-process)
79 | 1. Progress update on Client Controlled Nullability (10m, Alex Reilly)
80 | - [Action Item. Relevant links within](https://github.com/graphql/graphql-wg/issues/694)
81 | 1. *ADD YOUR AGENDA ABOVE*
82 |
--------------------------------------------------------------------------------
/rfcs/MetadataStructs.md:
--------------------------------------------------------------------------------
1 | # Metadata Structs
2 |
3 | **THIS PROPOSAL HAS BEEN SUPERCEDED BY
4 | [AnnotationStructs](./AnnotationStructs.md).**
5 |
6 | Schema metadata has long been desired, please see this long discussion:
7 |
8 | https://github.com/graphql/graphql-spec/issues/300
9 |
10 | I digested many of the currently proposed (and in the wild) solutions to this
11 | problem in my talk at the GraphQL Conference, you can see the talk here:
12 |
13 | https://youtu.be/c1oa7p73rTw
14 |
15 | It covers:
16 |
17 | - custom introspection extensions
18 | - 'SDL' field in schema, like Apollo Federation
19 | - storing metadata in the description field
20 | - adding metadata entirely in user-space
21 | - 'applied directives'
22 |
23 | It expands on the pros and cons of these approaches and asks "is there a better
24 | solution".
25 |
26 | ## Problems
27 |
28 | Some of the main problems that need to be solved with schema metadata are:
29 |
30 | - representing all desired metadata (including polymorphic metadata)
31 | - the need for granularity (partial introspection)
32 | - the need for support in tooling (e.g. GraphiQL) to give visibility into the
33 | metadata
34 | - being able to fully introspect the GraphQL schema in a small number of
35 | roundtrips
36 | - avoiding the need for complex parsing on the client
37 | - allowing for future expansion of the metadata/introspection schema (without
38 | namespace clashes)
39 |
40 | ### Granularity
41 |
42 | It can be useful for clients to include small introspection queries as part of
43 | their applications - for example you might introspect a particular named enum to
44 | make available sorting options in a dropdown. If the schema adds support for a
45 | new sort method, the client could add this option to the dropdown without
46 | needing to be updated thanks to introspection. However, enum values don't
47 | currently contain enough information for this.
48 |
49 | Consider that we add a "label" property to the metadata for each enum value -
50 | then we would have all we need to display it to the user, so long as they spoke
51 | that language. To cater to an international audience, we could add many
52 | translations to each enum value - but now the size of the introspection has
53 | grown. A better solution might be to allow the client to select just the
54 | translation that it needs from the enum value. (We also don't need any of the
55 | other metadata for the enum values, only the labels.)
56 |
57 | ## Solution
58 |
59 | This RFC proposes what I feel is a more capable and elegant solution than any of
60 | the previously proposed solutions covered by my talk, but it's predicated on the
61 | existence of a polymorphic-capable composite type that can be used symmetrically
62 | for both input and output. As it happens there's [an RFC for that](./Struct.md),
63 | so you can see this metadata RFC as an extension of that Struct RFC.
64 |
65 | ### SDL
66 |
67 | `meta` keyword, very similar to `directive`, defines the meta types and fields.
68 | The type of each field can be any type that is suitable on both input and output
69 | (i.e. scalar, enum, struct, struct union, and wrapping types thereof).
70 |
71 | ```graphql
72 | meta +source(table: String, column: String, service: ServiceSource) on OBJECT | FIELD_DEFINITION
73 | meta +visibility(only: [VisibilityScope!]!) required on OBJECT
74 | meta +label(en: String, fr: String, de: String) on ENUM_VALUE
75 |
76 | struct ServiceSource {
77 | serviceName: string
78 | identifier: string
79 | }
80 |
81 | enum VisibilityScope {
82 | NONE
83 | PERSONAL
84 | TEAM
85 | ORGANIZATION
86 | ADMINS
87 | PUBLIC +label(en: "Anyone", fr: "Tout les monde", de: "Alle")
88 | }
89 |
90 | type User +source(table: "public.users") +visibility(only: [ORGANIZATION]) {
91 | id: ID!
92 | organization: Organization!
93 | username: String! +source(column: "handle")
94 | avatar: String! +source(service: {
95 | serviceName: "S3"
96 | identifier: "/avatars/27.png"
97 | })
98 | }
99 | ```
100 |
101 | Note: `+visibility` is marked as `required`; in user space it must be defined
102 | explicitly for each object, but for introspection types it is omitted.
103 |
104 | ### Introspection
105 |
106 | Introspection query example:
107 |
108 | ```graphql
109 | {
110 | User: __type(name: "User") {
111 | meta
112 | # Or:
113 | meta {
114 | source {
115 | table
116 | }
117 | visibility {
118 | only
119 | }
120 | }
121 | }
122 | VisibilityScope: __type(name: "VisibilityScope") {
123 | enumValues {
124 | name
125 | meta {
126 | label {
127 | en
128 | }
129 | }
130 | }
131 | }
132 | }
133 | ```
134 |
135 | Changes to the schema introspection types:
136 |
137 | ```graphql
138 | type __Schema {
139 | metas: [__Meta!]!
140 | }
141 |
142 | # Similar to __Directive
143 | type __Meta {
144 | name: String!
145 | description: String
146 | locations: [__MetaLocation!]!
147 | isRequired: Boolean!
148 | # Always a struct; the fields of the struct are the parameters of the meta
149 | type: __Type
150 | }
151 |
152 | type __Type {
153 | #...
154 | meta: __TypeMeta
155 | }
156 |
157 | struct __TypeMeta {
158 | source: __Meta_source
159 |
160 | # Though +visibility was defined as 'required', it is only required on
161 | # user-space object types, and thus it is nullable here.
162 | visibility: __Meta_visibility
163 | }
164 |
165 | # Auto-generated via `__Meta_` + meta name?
166 | struct __Meta_source {
167 | table: String
168 | service: ServiceSource
169 | }
170 |
171 | struct __Meta_visibility {
172 | only: [VisibilityScope!]!
173 | }
174 |
175 | type __Field {
176 | meta: __FieldMeta
177 | }
178 | type __EnumValue {
179 | meta: __EnumValueMeta
180 | }
181 | # etc
182 | ```
183 |
--------------------------------------------------------------------------------
/agendas/2020/2020-11-05.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – November 2020
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. This is an open meeting in which
6 | anyone in the GraphQL community may attend. *To attend this meeting or propose
7 | agenda, edit this file.*
8 |
9 | - **Date & Time**: [November 5th 2020 17:00 - 20:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2020&month=11&day=5&hour=17&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152), view the [calendar](https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).
10 |
11 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
12 | - **Video Conference Link**: https://zoom.us/j/593263740
13 | - Password: graphqlwg
14 | - **Live Notes**: [GraphQL WG Notes - Nov 2020](https://docs.google.com/document/d/1dFtrYuS3IKrggM6f-El9s0ZWseMWml4UsY-aMc3qxFw/edit?usp=sharing)
15 |
16 |
17 | ## Attendees
18 |
19 | > **Guidelines**
20 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
21 | > - To respect meeting size, attendees should be relevant to the agenda.
22 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
23 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
24 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
25 | >
26 | > **By joining the meeting you consent to being recorded and agree to the Specification Membership Agreement, participation guidelines, and code of conduct. Meetings may be recorded, by joining you grant permission to be recoded.**
27 |
28 | | Name | Organization / Project | Location
29 | | ------------------------ | ------------------------ | ------------------------
30 | | Lee Byron | GraphQL Foundation | San Francisco, CA, US
31 | | Brian Warner | Linux Foundation | Cleveland, OH, US
32 | | James Baxley | Apollo | South Carolina, US
33 | | Michael Staib | ChilliCream | Zurich, CH
34 | | Dan Schafer (1hr late) | Facebook | Menlo Park, CA
35 | | Matt Mahoney | Facebook | New York, NY, US
36 | | Rob Richard | 1stDibs | New York, NY, US
37 | | Marc-Andre Giroux | GitHub | Montreal, Canada
38 | | Benjie Gillam ✏ | Graphile | Southampton, UK
39 | | Alan Cha | IBM Research | Yorktown Heights, NY, US
40 | | Yogesh Desai | Newbie/Tokopedia | Pune, India
41 | | Evan Huus | Shopify | Ottawa, ON, CA
42 | | Sasha Solomon | Twitter | Portland, OR, US
43 | | Mark Larah ✏ | Yelp | San Francisco, CA, US
44 | | Andi Marek | GraphQL-Java/Atlassian | Sydney, Australia
45 | | Robert Zhu | AWS | Seattle, WA
46 | | Ivan Goncharov | graphql-js | Lviv, UA
47 | | *ADD YOUR NAME ABOVE TO ATTEND*
48 |
49 |
50 | ## Agenda
51 |
52 | > **Guidelines**
53 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
54 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
55 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
56 |
57 |
67 |
68 | 1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
69 | - [Specification Membership Agreement](https://github.com/graphql/foundation)
70 | - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
71 | - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
72 | 1. Introduction of attendees (5m, Lee)
73 | 1. Determine volunteers for note taking (1m, Lee)
74 | 1. Review agenda (2m, Lee)
75 | 1. Review previous meeting's action items (5m, Lee)
76 | - [All action items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+label%3A%22Action+item+%3Aclapper%3A%22)
77 | 1. Review draft TSC policies and procedures (15m, Lee/Brian)
78 | - [TSC Draft Charter](https://github.com/graphql/graphql-wg/blob/master/GraphQL-TSC.md)
79 | 1. [Schema Coordinates RFC](https://github.com/graphql/graphql-spec/pull/746) check in (15m, Mark)
80 | 1. `@defer`/`@stream` (15m, Rob)
81 | - Experimental graphql-js published
82 | - [express-graphql PR](https://github.com/graphql/express-graphql/pull/583)
83 | 1. *ADD YOUR AGENDA ABOVE*
84 |
--------------------------------------------------------------------------------
/agendas/2020/2020-10-01.md:
--------------------------------------------------------------------------------
1 | # GraphQL WG – October 2020
2 |
3 | The GraphQL Working Group meets monthly to discuss proposed additions to the
4 | [GraphQL Specification](https://github.com/graphql/graphql-spec) and other
5 | relevant topics to core GraphQL projects. This is an open meeting in which
6 | anyone in the GraphQL community may attend. *To attend this meeting or propose
7 | agenda, edit this file.*
8 |
9 | - **Date & Time**: [October 1st 2020 16:00 - 19:00 UTC](https://www.timeanddate.com/worldclock/meetingdetails.html?year=2020&month=10&day=1&hour=16&min=0&sec=0&p1=224&p2=179&p3=136&p4=37&p5=239&p6=101&p7=152), view the [calendar](https://calendar.google.com/calendar/embed?src=linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com), or subscribe ([Google Calendar](https://calendar.google.com/calendar?cid=bGludXhmb3VuZGF0aW9uLm9yZ19pazc5dDl1dWoycDMyaTNyMjAzZGd2NW1vOEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t), [ical file](https://calendar.google.com/calendar/ical/linuxfoundation.org_ik79t9uuj2p32i3r203dgv5mo8%40group.calendar.google.com/public/basic.ics)).
10 |
11 | *NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.
12 | - **Video Conference Link**: https://zoom.us/j/593263740
13 | - Password: graphqlwg
14 | - **Live Notes**: https://docs.google.com/document/d/1kHjFzHzlycr70Gr9hEDo_h01jV3H9GZO9Ca249OPB9M/edit?usp=sharing
15 |
16 |
17 | ## Attendees
18 |
19 | > **Guidelines**
20 | > - Before attending, you (or your organization) must sign the [Specification Membership Agreement](https://github.com/graphql/foundation).
21 | > - To respect meeting size, attendees should be relevant to the agenda.
22 | > - If you're willing to take notes, add "✏️" after your name (eg. Ada Lovelace ✏)
23 | > - Include the organization (or project) you represent, and the location (including [country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#Current_ISO_3166_country_codes)) you expect to be located in during the meeting.
24 | > - Read and follow the [participation guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) and [code of conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md).
25 | >
26 | > **By joining the meeting you consent to being recorded and agree to the Specification Membership Agreement, participation guidelines, and code of conduct. Meetings may be recorded, by joining you grant permission to be recoded.**
27 |
28 | | Name | Organization / Project | Location
29 | | ------------------------ | ------------------------ | ------------------------
30 | | Lee Byron | GraphQL Foundation | San Francisco, CA, US
31 | | Benjie Gillam ✏️ | Graphile | Southampton, UK
32 | | Mark Larah | Yelp | San Francisco, CA, US
33 | | Wojciech Trocki | Red Hat | Waterford, Ireland
34 | | Antoine Boyer | Netflix | Seattle, WA, US
35 | | Uri Goldshtein | The Guild | Agistri, Greece
36 | | Evan Huus | Shopify | Ottawa, ON, CA
37 | | Dan Schafer | Facebook | Menlo Park, CA, US
38 | | Ivan Goncharov | graphql-js | Lviv, UA
39 | | Robert Zhu | AWS | Seattle, WA
40 | | Morris Matsa | IBM | Boston, US
41 | | Michael Staib | ChilliCream | Zurich, CH
42 | | Rafael Staib | ChilliCream | Zurich, CH
43 | | *ADD YOUR NAME ABOVE TO ATTEND*
44 |
45 |
46 |
47 | ## Agenda
48 |
49 | > **Guidelines**
50 | > - To cover everything, discussion may be time-constrained. Topics that require less time should be covered first. Most topics take 15-30 minutes.
51 | > - Include any and all relevant links (RFC, issues & PRs, presentations). If there are no relevant links, open an issue to provide context and link to that.
52 | > - Read the [spec contribution guide](https://github.com/graphql/graphql-spec/blob/master/CONTRIBUTING.md).
53 |
54 |
64 |
65 | 1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
66 | - [Specification Membership Agreement](https://github.com/graphql/foundation)
67 | - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
68 | - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
69 | 1. Introduction of attendees (5m, Lee)
70 | 1. Determine volunteers for note taking (1m, Lee)
71 | 1. Review agenda (2m, Lee)
72 | 1. Review previous meeting's action items (5m, Lee)
73 | - [All action items](https://github.com/graphql/graphql-wg/issues?q=is%3Aissue+label%3A%22Action+item+%3Aclapper%3A%22)
74 | 1. Query ambiguity: discussion of replacement terms (25m, Benjie)
75 | - [Spec edits/glossary graphql-spec#777](https://github.com/graphql/graphql-spec/pull/777)
76 | - [Original issue graphql-spec#715](https://github.com/graphql/graphql-spec/issues/715)
77 | - [Previous discussion - May 2020](https://github.com/graphql/graphql-wg/blob/master/notes/2020-05-07.md#query-a-query-query-query-query-ambiguity-10m-benjie)
78 | 1. [`__typename` and subscriptions](https://github.com/graphql/graphql-spec/pull/776) (5m, Benjie)
79 | 1. [Schema Coordinates RFC](https://github.com/graphql/graphql-spec/pull/746) check in (5m, Mark)
80 | 1. Tagged type update (15m, Benjie)
81 | - [RFC #733](https://github.com/graphql/graphql-spec/pull/733)
82 | 1. [graphql-js working group](https://github.com/graphql/graphql-js/issues/2787#issuecomment-699515166) short update (5m, Uri)
83 | 1. *ADD YOUR AGENDA ABOVE*
84 |
--------------------------------------------------------------------------------
/notes/2025/summary-2025-10-02.md:
--------------------------------------------------------------------------------
1 | # Meeting Summary for Working Group Meeting
2 |
3 | **NOTICE**: This summary was auto-generated by Zoom's "AI". AI-generated
4 | content may be inaccurate or misleading. Always check for accuracy. If in
5 | doubt, please consult the meeting recording at
6 | https://youtube.com/@GraphQLFoundation/playlists
7 |
8 | - Meeting start: 2025-10-02T17:28:00Z
9 | - Meeting end: 2025-10-02T18:09:10Z
10 | - Summary start: 2025-10-02T17:29:40Z
11 | - Summary end: 2025-10-02T18:09:10Z
12 |
13 | The meeting began with introductions and administrative discussions about recording guidelines and participation agreements. The team reviewed and approved the creation of a new GraphQL AI working group, including scheduling their first meeting and planning a blog post announcement. Various technical discussions took place regarding specification updates, documentation contributions, and ongoing issues with filtering and querying in GraphQL, with the team addressing these challenges through proposed solutions and future planning.
14 |
15 | ## Next Steps
16 |
17 | - Jeanette to update the PR for fragments in the spec by removing the "fake function name" and proposing options for the term "modularity".
18 | - TSC members to review and approve Jeanette's PR on fragments description in the spec.
19 | - Benjie to check with Lee about whether merging PRs is allowed during the current spec freeze period.
20 | - Emily to review the RFC tracker and links shared to find areas to contribute to GraphQL.
21 | - Benjie/TSC to consider making the RFC Explorer tool an official GraphQL project.
22 | - Benjie to close the "ensure use of composite term" agenda item.
23 | - Jory to publish the blog post announcement about the AI Working Group on October 7th on GraphQL.org.
24 | - Uri and Frederick to present the Gateway Performance Benchmark Repo topic at the next meeting.
25 |
26 | ## Summary
27 |
28 | ### Meeting Introductions and Guidelines
29 |
30 | The meeting began with informal discussions about the flu wave in France and the weather before Matt, as the temporary meeting chair, introduced participants. The group discussed the meeting's recording and agreed to follow the membership agreement and participation guidelines. Participants from various companies, including Meta, Apollo, Amazon, and First Aid, introduced themselves, with Benjie absent due to dinner. Pascal mentioned his open pull request, which was noted to auto-merge.
31 |
32 | ### GraphQL AI Working Group Launch
33 |
34 | The meeting focused on agenda management, note-taking coordination, and the establishment of a new GraphQL AI working group. Kawaii presented a proposal for the GraphQL AI working group, which was approved by the TSC members present. The group's first meeting was scheduled for October 23rd, with Jory's blog post announcement planned for October 7th. Benjie confirmed that the working group repository had been created and was available for joining.
35 |
36 | ### Fragments Specification Update Discussion
37 |
38 | The team discussed a pull request to update the description of fragments in the specification. Jeanette explained the proposed changes to better reflect the intended use of fragments for evolving data needs rather than for extracting common selections from executable documents. Benjie suggested the changes were editorial and did not require an RFC, while the team agreed on the importance of improving the wording to avoid confusion. They decided to merge the PR after making some suggested changes, such as removing references to "client logic" and considering alternative wording for "modularity." Lee supported the idea of merging the PR when there is general agreement, allowing further refinement if needed before the next meeting.
39 |
40 | ### Guidance on GraphQL Contribution
41 |
42 | Emily discussed her interest in contributing to GraphQL and sought guidance on where to start. Benjie suggested focusing on documentation, as it's always evolving and critical, while also mentioning that there are various projects and RFCs that need advancement. Lee and Michael highlighted the need for champions to push forward RFCs and mentioned the GraphQL RFC Explorer tool created by Benjie, which he suggested should be made an official project. They also discussed the stages of RFCs and the importance of contributing to working groups and technical tasks. Emily agreed to review the provided links and explore areas of interest for contribution.
43 |
44 | ### Editorial Changes and UI Solutions
45 |
46 | The team discussed the importance of editorial changes in specifications, noting that many such changes uncover esoteric bugs and improve clarity. They emphasized the value of contributing to specifications and using Discord workgroup channels for quick feedback. Benjie shared details from a secondary meeting with Mark about addressing issues with polymorphic types and server-driven UI, where empty objects could be returned for unsupported widget types. The team explored potential solutions, including passing arguments to fields to specify supported widget types.
47 |
48 | ### GraphQL Filtering and Querying Challenges
49 |
50 | Benjie discussed a challenging issue with filtering and querying in GraphQL, explaining that the place of filtering may not align with the place of querying, especially in nested structures. He proposed a potential solution using a directive that could accept arguments, but several questions remain about its implementation. Lee expressed interest in the problem and agreed to read more about the proposal, which is documented in an RFC in the GraphQL WG repository.
51 |
52 | ### GraphQL AI Working Group Launch
53 |
54 | The GraphQL AI Working Group's first meeting was scheduled for October 23rd, with a blog post by Jory set to be published on GraphQL.org on October 7th. The group conducted a vote and sent personal invites to LLM-related speakers from GraphQLConf, with most confirming attendance. Matt noted that the Gateway Performance Benchmark Repo discussion was postponed as the champions were not present. Benjie confirmed that the composite term issue had been addressed and closed.
55 |
--------------------------------------------------------------------------------