├── .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:** [<Full Name>](https://github.com/<username>) - <Organization> 7 | **Current champion:** [<Full Name>](https://github.com/<username>) - <Organization> 8 | 9 | <!-- Briefly summarize and explainin the concepts introduced by the RFC. Usually 10 | one or two short sentences or paragraphs. --> 11 | 12 | ## 📜 Problem Statement 13 | 14 | <!-- Briefly explain the problem being solved. Assume no prior knowledge (other 15 | than the current GraphQL specification) and start from first principles. Usually 16 | one or two short paragraphs. --> 17 | 18 | **Example** 19 | 20 | <!-- Provide a minimal code example here if possible. --> 21 | 22 | ## 💡 Proposed Solution 23 | 24 | <!-- Explain the proposal! Be detailed enough to explain the idea and major edge 25 | cases - but avoid being overly detailed. The primary goal is to communicate the 26 | idea at a high level. The specification edit PR will cover all the precise 27 | implementation details. --> 28 | 29 | ## ⚠️ Risks 30 | 31 | <!-- Think: Why *shouldn't* we do this proposal? List any unaddressed risks or 32 | edge cases we need to consider. --> 33 | 34 | ## Appendix 35 | 36 | <!-- Additional appendix sections are encourged as the editor sees fit. You are 37 | encouraged to keep the main body of the RFC focused on the chosen solution. --> 38 | 39 | ### 🎨 Prior Art 40 | 41 | <!-- If applicable, list any existing userland solutions that relate to this 42 | RFC. --> 43 | 44 | ### 🤔 Alternatives Considered 45 | 46 | <!-- If applicable, list any alternate naming or implementations considered. --> 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 | <small>\*: willing to take notes (eg. <em>Joe Montana*</em>)</small> 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 | <small>\*: willing to take notes (eg. <em>Joe Montana*</em>)</small> 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 \<leebyron@fb.com> 19 | - Apollo HQ, San Francisco, CA 20 | - **Location**: 21 | 140 10th Street 22 | San Francisco, CA, 94103 23 | - **Contact**: Sashko Stubailo \<sashko@apollodata.com> 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 | <small>\*: willing to take notes (eg. <em>Joe Montana*</em>)</small> 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 \<leebyron@fb.com> 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 | <small>\*: willing to take notes (eg. <em>Joe Montana*</em>)</small> 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 | <small>*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.</small> 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 | <small>\*: willing to take notes (eg. Joe Montana\*)</small> 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 \<leebyron@fb.com> 20 | - Apollo HQ, San Francisco, CA 21 | - **Location**: 22 | 140 10th Street 23 | San Francisco, CA, 94103 24 | - **Contact**: Sashko Stubailo \<sashko@apollodata.com> 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 | <small>\*: willing to take notes (eg. <em>Joe Montana*</em>)</small> 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 | <small>\*: willing to take notes (eg. <em>Joe Montana*</em>)</small> 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 | <small>*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.</small> 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 | <small>\*: willing to take notes (eg. Joe Montana\*)</small> 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)<span style="text-decoration:underline;"> 12 | </span> 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 | <small>\*: willing to take notes (eg. <em>Joe Montana*</em>)</small> 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<dir_name, dir> to map<dir_name, dir[]> 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 | <small>*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.</small> 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 | <small>\*: willing to take notes (eg. Joe Montana\*)</small> 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 | <!-- prettier-ignore --> 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 | <small>*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.</small> 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 | <small>\*: willing to take notes (eg. Joe Montana\*)</small> 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 | <small>*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.</small> 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 | <small>\*: willing to take notes (eg. Joe Montana\*)</small> 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 | <small>\*: willing to take notes (eg. <em>Joe Montana*</em>)</small> 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()`](<https://spec.graphql.org/draft/#ResolveFieldValue()>) 91 | during the [`ExecuteField()`](<https://spec.graphql.org/draft/#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()`](<https://spec.graphql.org/draft/#ExecuteField()>) 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 47 | 48 | Example agenda item: 49 | 50 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 51 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 52 | - [GraphQL.js PR](github.link/to/the/project/pr) 53 | - [Another Relevant Link](youre.getting/the-idea.now) 54 | 55 | --> 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 | <small>*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.</small> 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 | <small>\*: willing to take notes (eg. Joe Montana\*)</small> 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 | <small>*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.</small> 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 | <small>\*: willing to take notes (eg. Joe Montana\*)</small> 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 55 | 56 | Example agenda item: 57 | 58 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 59 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 60 | - [GraphQL.js PR](github.link/to/the/project/pr) 61 | - [Another Relevant Link](youre.getting/the-idea.now) 62 | 63 | --> 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 50 | 51 | Example agenda item: 52 | 53 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 54 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 55 | - [GraphQL.js PR](github.link/to/the/project/pr) 56 | - [Another Relevant Link](youre.getting/the-idea.now) 57 | 58 | --> 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 54 | 55 | Example agenda item: 56 | 57 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 58 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 59 | - [GraphQL.js PR](github.link/to/the/project/pr) 60 | - [Another Relevant Link](youre.getting/the-idea.now) 61 | 62 | --> 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 54 | 55 | Example agenda item: 56 | 57 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 58 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 59 | - [GraphQL.js PR](github.link/to/the/project/pr) 60 | - [Another Relevant Link](youre.getting/the-idea.now) 61 | 62 | --> 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 58 | 59 | Example agenda item: 60 | 61 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 62 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 63 | - [GraphQL.js PR](github.link/to/the/project/pr) 64 | - [Another Relevant Link](youre.getting/the-idea.now) 65 | 66 | --> 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 56 | 57 | Example agenda item: 58 | 59 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 60 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 61 | - [GraphQL.js PR](github.link/to/the/project/pr) 62 | - [Another Relevant Link](youre.getting/the-idea.now) 63 | 64 | --> 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 53 | 54 | Example agenda item: 55 | 56 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 57 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 58 | - [GraphQL.js PR](github.link/to/the/project/pr) 59 | - [Another Relevant Link](youre.getting/the-idea.now) 60 | 61 | --> 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 58 | 59 | Example agenda item: 60 | 61 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 62 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 63 | - [GraphQL.js PR](github.link/to/the/project/pr) 64 | - [Another Relevant Link](youre.getting/the-idea.now) 65 | 66 | --> 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 | <small>*NOTE:* Meeting date and time may change. Please check this agenda the week of the meeting to confirm.</small> 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 | <!-- 55 | 56 | Example agenda item: 57 | 58 | 1. Discuss moving the subscriptions proposal to stage 2 (30m, Lee) 59 | - [Subscriptions RFC](link.to/the-relevant/pr-or-issue-or-doc) 60 | - [GraphQL.js PR](github.link/to/the/project/pr) 61 | - [Another Relevant Link](youre.getting/the-idea.now) 62 | 63 | --> 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 | --------------------------------------------------------------------------------