From 794c2fe5df47da42c47d12e995cedec8f5ca039a Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Tue, 1 Jul 2025 14:20:54 -0700 Subject: [PATCH 1/4] Pull copyright and license into repo-level LICENSE.md --- LICENSE.md | 35 +++++++++++++++++++++++++++++++++++ package.json | 2 +- spec/GraphQL.md | 36 +----------------------------------- 3 files changed, 37 insertions(+), 36 deletions(-) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..e4a7cd970 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,35 @@ +**Copyright Notice** + +Copyright © 2015-2018, Facebook, Inc. + +Copyright © 2019-present, GraphQL contributors + +THESE MATERIALS ARE PROVIDED “AS IS”. The parties expressly disclaim any +warranties (express, implied, or otherwise), including implied warranties of +merchantability, non-infringement, fitness for a particular purpose, or title, +related to the materials. The entire risk as to implementing or otherwise using +the materials is assumed by the implementer and user. IN NO EVENT WILL THE +PARTIES BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, +SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES +OF ACTION OF ANY KIND WITH RESPECT TO THIS DELIVERABLE OR ITS GOVERNING +AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR +OTHERWISE, AND WHETHER OR NOT THE OTHER MEMBER HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +**Licensing** + +The GraphQL Specification Project is made available by the +[Joint Development Foundation](https://www.jointdevelopment.org/). The current +[Working Group](https://github.com/graphql/graphql-wg) charter, which includes +the IP policy governing all working group deliverables (including +specifications, source code, and datasets) may be found at +[https://technical-charter.graphql.org](https://technical-charter.graphql.org). + +Currently, the licenses governing GraphQL Specification Project deliverables +are: + +| Deliverable | License | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Specifications | [Open Web Foundation Agreement 1.0 (Patent and Copyright Grants)](https://www.openwebfoundation.org/the-agreements/the-owf-1-0-agreements-granted-claims/owfa-1-0) | +| Source code | [MIT License](https://opensource.org/licenses/MIT) | +| Data sets | [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) | diff --git a/package.json b/package.json index afca0f11e..7a4185ff6 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ }, "scripts": { "test": "npm run test:spelling && npm run test:format && npm run test:build", - "test:spelling": "cspell \"spec/**/*.md\" README.md", + "test:spelling": "cspell \"spec/**/*.md\" README.md LICENSE.md", "format": "prettier --write \"**/*.{md,yml,yaml,json}\"", "test:format": "prettier --check \"**/*.{md,yml,yaml,json}\" || npm run suggest:format", "test:algorithm-format": "node .github/algorithm-format-check.mjs", diff --git a/spec/GraphQL.md b/spec/GraphQL.md index 51cb13577..9551cd25f 100644 --- a/spec/GraphQL.md +++ b/spec/GraphQL.md @@ -26,41 +26,7 @@ specification can be found at permalinks that match their working draft release can be found at [https://spec.graphql.org/draft](https://spec.graphql.org/draft). -**Copyright Notice** - -Copyright © 2015-2018, Facebook, Inc. - -Copyright © 2019-present, GraphQL contributors - -THESE MATERIALS ARE PROVIDED “AS IS”. The parties expressly disclaim any -warranties (express, implied, or otherwise), including implied warranties of -merchantability, non-infringement, fitness for a particular purpose, or title, -related to the materials. The entire risk as to implementing or otherwise using -the materials is assumed by the implementer and user. IN NO EVENT WILL THE -PARTIES BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, -SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES -OF ACTION OF ANY KIND WITH RESPECT TO THIS DELIVERABLE OR ITS GOVERNING -AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR -OTHERWISE, AND WHETHER OR NOT THE OTHER MEMBER HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -**Licensing** - -The GraphQL Specification Project is made available by the -[Joint Development Foundation](https://www.jointdevelopment.org/). The current -[Working Group](https://github.com/graphql/graphql-wg) charter, which includes -the IP policy governing all working group deliverables (including -specifications, source code, and datasets) may be found at -[https://technical-charter.graphql.org](https://technical-charter.graphql.org). - -Currently, the licenses governing GraphQL Specification Project deliverables -are: - -| Deliverable | License | -| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Specifications | [Open Web Foundation Agreement 1.0 (Patent and Copyright Grants)](https://www.openwebfoundation.org/the-agreements/the-owf-1-0-agreements-granted-claims/owfa-1-0) | -| Source code | [MIT License](https://opensource.org/licenses/MIT) | -| Data sets | [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/) | +# [LICENSE](../LICENSE.md) **Conformance** From 62e5c1ffe9ac01ccc51a9533672aaa18a712b6ba Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Tue, 1 Jul 2025 16:49:29 -0700 Subject: [PATCH 2/4] Move to an appendix and reformat introduction --- LICENSE.md | 19 ++-- spec/Appendix D -- Conformance & Licensing.md | 64 +++++++++++++ spec/GraphQL.md | 96 +++++-------------- 3 files changed, 96 insertions(+), 83 deletions(-) create mode 100644 spec/Appendix D -- Conformance & Licensing.md diff --git a/LICENSE.md b/LICENSE.md index e4a7cd970..ebeab4db0 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,3 +1,12 @@ +## Copyright and Licensing + +The GraphQL Specification Project is made available by the +[Joint Development Foundation](https://www.jointdevelopment.org/). The current +[Working Group](https://github.com/graphql/graphql-wg) charter, which includes +the IP policy governing all working group deliverables (including +specifications, source code, and datasets) may be found at +[https://technical-charter.graphql.org](https://technical-charter.graphql.org). + **Copyright Notice** Copyright © 2015-2018, Facebook, Inc. @@ -18,15 +27,7 @@ POSSIBILITY OF SUCH DAMAGE. **Licensing** -The GraphQL Specification Project is made available by the -[Joint Development Foundation](https://www.jointdevelopment.org/). The current -[Working Group](https://github.com/graphql/graphql-wg) charter, which includes -the IP policy governing all working group deliverables (including -specifications, source code, and datasets) may be found at -[https://technical-charter.graphql.org](https://technical-charter.graphql.org). - -Currently, the licenses governing GraphQL Specification Project deliverables -are: +The licenses for the GraphQL Specification Project are: | Deliverable | License | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | diff --git a/spec/Appendix D -- Conformance & Licensing.md b/spec/Appendix D -- Conformance & Licensing.md new file mode 100644 index 000000000..0ff79ba65 --- /dev/null +++ b/spec/Appendix D -- Conformance & Licensing.md @@ -0,0 +1,64 @@ +# D. Appendix: Conformance & Licensing + +## Conformance + +A conforming implementation of GraphQL must fulfill all normative requirements. +Conformance requirements are described in this document via both descriptive +assertions and key words with clearly defined meanings. + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", +"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the normative portions of +this document are to be interpreted as described in +[IETF RFC 2119](https://tools.ietf.org/html/rfc2119). These key words may appear +in lowercase and still retain their meaning unless explicitly declared as +non-normative. + +A conforming implementation of GraphQL may provide additional functionality, but +must not where explicitly disallowed or would otherwise result in +non-conformance. + +**Conforming Algorithms** + +Algorithm steps phrased in imperative grammar (e.g. "Return the result of +calling resolver") are to be interpreted with the same level of requirement as +the algorithm it is contained within. Any algorithm referenced within an +algorithm step (e.g. "Let completedResult be the result of calling +CompleteValue()") is to be interpreted as having at least the same level of +requirement as the algorithm containing that step. + +Conformance requirements expressed as algorithms and data collections can be +fulfilled by an implementation of this specification in any way as long as the +perceived result is equivalent. Algorithms described in this document are +written to be easy to understand. Implementers are encouraged to include +equivalent but optimized implementations. + +See [Appendix A](#sec-Appendix-Notation-Conventions) for more details about the +definition of algorithms, data collections, and other notational conventions +used in this document. + +**Non-Normative Portions** + +All contents of this document are normative except portions explicitly declared +as non-normative. + +Examples in this document are non-normative, and are presented to aid +understanding of introduced concepts and the behavior of normative portions of +the specification. Examples are either introduced explicitly in prose (e.g. "for +example") or are set apart in example or counter-example blocks, like this: + +```example +This is an example of a non-normative example. +``` + +```counter-example +This is an example of a non-normative counter-example. +``` + +Notes in this document are non-normative, and are presented to clarify intent, +draw attention to potential edge-cases and pit-falls, and answer common +questions that arise during implementation. Notes are either introduced +explicitly in prose (e.g. "Note: ") or are set apart in a note block, like this: + +Note: This is an example of a non-normative note. + +## [LICENSE](../LICENSE.md) diff --git a/spec/GraphQL.md b/spec/GraphQL.md index 9551cd25f..b924cb0b0 100644 --- a/spec/GraphQL.md +++ b/spec/GraphQL.md @@ -4,91 +4,37 @@ _Current Working Draft_ **Introduction** -This is the specification for GraphQL, a query language and execution engine -originally created at Facebook in 2012 for describing the capabilities and -requirements of data models for client-server applications. The development of -this open standard started in 2015. This specification was licensed under OWFa -1.0 in 2017. The [GraphQL Foundation](https://graphql.org/foundation/) was -formed in 2019 as a neutral focal point for organizations who support the -GraphQL ecosystem, and the +This is the specification for GraphQL, a query language and execution engine for +describing and performing the capabilities and requirements of data models for +client-server applications. + +GraphQL was originally created in 2012 and the development of this open standard +started in 2015. This specification was licensed under OWFa 1.0 in 2017 (see +[Licensing](#sec-Copyright-and-Licensing)). The +[GraphQL Foundation](https://graphql.org/foundation/) was formed in 2019 as a +neutral focal point for organizations who support the GraphQL ecosystem, and the [GraphQL Specification Project](https://graphql.org/community/) was established also in 2019 as the Joint Development Foundation Projects, LLC, GraphQL Series. - If your organization benefits from GraphQL, please consider [becoming a member](https://graphql.org/foundation/join/#graphql-foundation) and helping us to sustain the activities that support the health of our neutral ecosystem. -The GraphQL Specification Project has evolved and may continue to evolve in -future editions of this specification. Previous editions of the GraphQL -specification can be found at permalinks that match their +This specification is developed on GitHub at +[graphql/graphql-spec](https://github.com/graphql/graphql-spec/). Contributions +are managed by the +[GraphQL Working Group](https://github.com/graphql/graphql-wg), hosted by the +[GraphQL TSC](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md). +To learn more see the +[contribution guide](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md). + +GraphQL has evolved and may continue to evolve in future editions of this +specification. Previous editions of the GraphQL specification can be found at +permalinks that match their [release tag](https://github.com/graphql/graphql-spec/releases). The latest working draft release can be found at [https://spec.graphql.org/draft](https://spec.graphql.org/draft). -# [LICENSE](../LICENSE.md) - -**Conformance** - -A conforming implementation of GraphQL must fulfill all normative requirements. -Conformance requirements are described in this document via both descriptive -assertions and key words with clearly defined meanings. - -The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", -"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the normative portions of -this document are to be interpreted as described in -[IETF RFC 2119](https://tools.ietf.org/html/rfc2119). These key words may appear -in lowercase and still retain their meaning unless explicitly declared as -non-normative. - -A conforming implementation of GraphQL may provide additional functionality, but -must not where explicitly disallowed or would otherwise result in -non-conformance. - -**Conforming Algorithms** - -Algorithm steps phrased in imperative grammar (e.g. "Return the result of -calling resolver") are to be interpreted with the same level of requirement as -the algorithm it is contained within. Any algorithm referenced within an -algorithm step (e.g. "Let completedResult be the result of calling -CompleteValue()") is to be interpreted as having at least the same level of -requirement as the algorithm containing that step. - -Conformance requirements expressed as algorithms and data collections can be -fulfilled by an implementation of this specification in any way as long as the -perceived result is equivalent. Algorithms described in this document are -written to be easy to understand. Implementers are encouraged to include -equivalent but optimized implementations. - -See [Appendix A](#sec-Appendix-Notation-Conventions) for more details about the -definition of algorithms, data collections, and other notational conventions -used in this document. - -**Non-Normative Portions** - -All contents of this document are normative except portions explicitly declared -as non-normative. - -Examples in this document are non-normative, and are presented to aid -understanding of introduced concepts and the behavior of normative portions of -the specification. Examples are either introduced explicitly in prose (e.g. "for -example") or are set apart in example or counter-example blocks, like this: - -```example -This is an example of a non-normative example. -``` - -```counter-example -This is an example of a non-normative counter-example. -``` - -Notes in this document are non-normative, and are presented to clarify intent, -draw attention to potential edge-cases and pit-falls, and answer common -questions that arise during implementation. Notes are either introduced -explicitly in prose (e.g. "Note: ") or are set apart in a note block, like this: - -Note: This is an example of a non-normative note. - # [Overview](Section%201%20--%20Overview.md) # [Language](Section%202%20--%20Language.md) @@ -108,3 +54,5 @@ Note: This is an example of a non-normative note. # [Appendix: Grammar Summary](Appendix%20B%20--%20Grammar%20Summary.md) # [Appendix: Specified Definitions](Appendix%20C%20--%20Specified%20Definitions.md) + +# [Appendix: Conformance & Licensing](Appendix%20D%20--%20Conformance%20&%20Licensing.md) From cb030969de4fea08a3f256f1e79e1322942a5d6d Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Mon, 1 Sep 2025 00:20:55 -0700 Subject: [PATCH 3/4] feedback and reorder --- LICENSE.md | 5 +-- ...update-appendix-specified-definitions.mjs} | 2 +- ...ensing.md => Appendix A -- Conformance.md} | 6 +--- ... => Appendix B -- Notation Conventions.md} | 2 +- ...ry.md => Appendix C -- Grammar Summary.md} | 2 +- ...=> Appendix D -- Specified Definitions.md} | 2 +- spec/GraphQL.md | 35 +++++++++++-------- 7 files changed, 28 insertions(+), 26 deletions(-) rename scripts/{update-appendix-c.mjs => update-appendix-specified-definitions.mjs} (93%) rename spec/{Appendix D -- Conformance & Licensing.md => Appendix A -- Conformance.md} (96%) rename spec/{Appendix A -- Notation Conventions.md => Appendix B -- Notation Conventions.md} (99%) rename spec/{Appendix B -- Grammar Summary.md => Appendix C -- Grammar Summary.md} (99%) rename spec/{Appendix C -- Specified Definitions.md => Appendix D -- Specified Definitions.md} (99%) diff --git a/LICENSE.md b/LICENSE.md index ebeab4db0..4cf0a3e78 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,8 @@ -## Copyright and Licensing +# Appendix: Copyright and Licensing The GraphQL Specification Project is made available by the -[Joint Development Foundation](https://www.jointdevelopment.org/). The current +[Joint Development Foundation](https://www.jointdevelopment.org/) Projects, LLC, +GraphQL Series. The current [Working Group](https://github.com/graphql/graphql-wg) charter, which includes the IP policy governing all working group deliverables (including specifications, source code, and datasets) may be found at diff --git a/scripts/update-appendix-c.mjs b/scripts/update-appendix-specified-definitions.mjs similarity index 93% rename from scripts/update-appendix-c.mjs rename to scripts/update-appendix-specified-definitions.mjs index af64eac7d..a3682a605 100644 --- a/scripts/update-appendix-c.mjs +++ b/scripts/update-appendix-specified-definitions.mjs @@ -1,7 +1,7 @@ import { writeFile } from 'node:fs/promises'; import { printIntrospectionSchema, buildSchema, specifiedScalarTypes, printType } from 'graphql'; -const FILE = './spec/Appendix C -- Specified Definitions.md'; +const FILE = './spec/Appendix D -- Specified Definitions.md'; function printSpecifiedScalars() { return specifiedScalarTypes .map((type) => printType(type)) diff --git a/spec/Appendix D -- Conformance & Licensing.md b/spec/Appendix A -- Conformance.md similarity index 96% rename from spec/Appendix D -- Conformance & Licensing.md rename to spec/Appendix A -- Conformance.md index 0ff79ba65..f954c2206 100644 --- a/spec/Appendix D -- Conformance & Licensing.md +++ b/spec/Appendix A -- Conformance.md @@ -1,6 +1,4 @@ -# D. Appendix: Conformance & Licensing - -## Conformance +# A. Appendix: Conformance A conforming implementation of GraphQL must fulfill all normative requirements. Conformance requirements are described in this document via both descriptive @@ -60,5 +58,3 @@ questions that arise during implementation. Notes are either introduced explicitly in prose (e.g. "Note: ") or are set apart in a note block, like this: Note: This is an example of a non-normative note. - -## [LICENSE](../LICENSE.md) diff --git a/spec/Appendix A -- Notation Conventions.md b/spec/Appendix B -- Notation Conventions.md similarity index 99% rename from spec/Appendix A -- Notation Conventions.md rename to spec/Appendix B -- Notation Conventions.md index 04eaec96d..65b215eeb 100644 --- a/spec/Appendix A -- Notation Conventions.md +++ b/spec/Appendix B -- Notation Conventions.md @@ -1,4 +1,4 @@ -# A. Appendix: Notation Conventions +# B. Appendix: Notation Conventions This specification document contains a number of notation conventions used to describe technical concepts such as language grammar and semantics as well as diff --git a/spec/Appendix B -- Grammar Summary.md b/spec/Appendix C -- Grammar Summary.md similarity index 99% rename from spec/Appendix B -- Grammar Summary.md rename to spec/Appendix C -- Grammar Summary.md index dd319a607..cc5f75419 100644 --- a/spec/Appendix B -- Grammar Summary.md +++ b/spec/Appendix C -- Grammar Summary.md @@ -1,4 +1,4 @@ -# B. Appendix: Grammar Summary +# C. Appendix: Grammar Summary ## Source Text diff --git a/spec/Appendix C -- Specified Definitions.md b/spec/Appendix D -- Specified Definitions.md similarity index 99% rename from spec/Appendix C -- Specified Definitions.md rename to spec/Appendix D -- Specified Definitions.md index 0cbbd0869..df0bb723c 100644 --- a/spec/Appendix C -- Specified Definitions.md +++ b/spec/Appendix D -- Specified Definitions.md @@ -1,4 +1,4 @@ -# C. Appendix: Type System Definitions +# D. Appendix: Type System Definitions This appendix lists the specified type system definitions. diff --git a/spec/GraphQL.md b/spec/GraphQL.md index b924cb0b0..64ef49f3e 100644 --- a/spec/GraphQL.md +++ b/spec/GraphQL.md @@ -8,23 +8,26 @@ This is the specification for GraphQL, a query language and execution engine for describing and performing the capabilities and requirements of data models for client-server applications. +A conforming implementation of GraphQL must fulfill all normative requirements +described in this specification (see [Conformance](#sec-Appendix-Conformance)). +The GraphQL specification is provided under the OWFa 1.0 license (see +[Licensing](#sec-Appendix-Copyright-and-Licensing)). + GraphQL was originally created in 2012 and the development of this open standard -started in 2015. This specification was licensed under OWFa 1.0 in 2017 (see -[Licensing](#sec-Copyright-and-Licensing)). The -[GraphQL Foundation](https://graphql.org/foundation/) was formed in 2019 as a -neutral focal point for organizations who support the GraphQL ecosystem, and the -[GraphQL Specification Project](https://graphql.org/community/) was established -also in 2019 as the Joint Development Foundation Projects, LLC, GraphQL Series. -If your organization benefits from GraphQL, please consider -[becoming a member](https://graphql.org/foundation/join/#graphql-foundation) and -helping us to sustain the activities that support the health of our neutral -ecosystem. +started in 2015. It is a deliverable of the +[GraphQL Specification Project](https://graphql.org/community/), established in +2019 with the [Joint Development Foundation](https://www.jointdevelopment.org/). + +The [GraphQL Foundation](https://graphql.org/foundation/) was formed in 2019 as +a neutral focal point for organizations who support development of the GraphQL +ecosystem. If your organization benefits from GraphQL, please consider +[becoming a member](https://graphql.org/foundation/join/#graphql-foundation). This specification is developed on GitHub at [graphql/graphql-spec](https://github.com/graphql/graphql-spec/). Contributions are managed by the [GraphQL Working Group](https://github.com/graphql/graphql-wg), hosted by the -[GraphQL TSC](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md). +[GraphQL Technical Steering Committee](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md). To learn more see the [contribution guide](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md). @@ -49,10 +52,12 @@ working draft release can be found at # [Response](Section%207%20--%20Response.md) -# [Appendix: Notation Conventions](Appendix%20A%20--%20Notation%20Conventions.md) +# [Appendix: Conformance](Appendix%20A%20--%20Conformance.md) + +# [Appendix: Notation Conventions](Appendix%20B%20--%20Notation%20Conventions.md) -# [Appendix: Grammar Summary](Appendix%20B%20--%20Grammar%20Summary.md) +# [Appendix: Grammar Summary](Appendix%20C%20--%20Grammar%20Summary.md) -# [Appendix: Specified Definitions](Appendix%20C%20--%20Specified%20Definitions.md) +# [Appendix: Specified Definitions](Appendix%20D%20--%20Specified%20Definitions.md) -# [Appendix: Conformance & Licensing](Appendix%20D%20--%20Conformance%20&%20Licensing.md) +# [Appendix: Licensing](../LICENSE.md) From 8458d59917f9b5c2e41f6b6a41c8b50f4a297ab2 Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Mon, 1 Sep 2025 00:24:19 -0700 Subject: [PATCH 4/4] tweak --- spec/GraphQL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/GraphQL.md b/spec/GraphQL.md index 64ef49f3e..7ac0717ac 100644 --- a/spec/GraphQL.md +++ b/spec/GraphQL.md @@ -11,7 +11,7 @@ client-server applications. A conforming implementation of GraphQL must fulfill all normative requirements described in this specification (see [Conformance](#sec-Appendix-Conformance)). The GraphQL specification is provided under the OWFa 1.0 license (see -[Licensing](#sec-Appendix-Copyright-and-Licensing)). +[Copyright and Licensing](#sec-Appendix-Copyright-and-Licensing)). GraphQL was originally created in 2012 and the development of this open standard started in 2015. It is a deliverable of the