Skip to content

Pull copyright and license into repo-level LICENSE.md #1172

New issue

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

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

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
## 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.

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 licenses for the GraphQL Specification Project 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/) |
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
64 changes: 64 additions & 0 deletions spec/Appendix D -- Conformance & Licensing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# D. Appendix: Conformance & Licensing
Copy link
Member

Choose a reason for hiding this comment

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

Does it make sense to have these be in the same appendix? I feel like having an extra focussed appendix is not too costly, and "conformance" and "licensing" feel somewhat separate to me.


## 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)
130 changes: 22 additions & 108 deletions spec/GraphQL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,125 +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.

Copy link
Member

Choose a reason for hiding this comment

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

I would restore this paragraph break.

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).
Copy link
Member

Choose a reason for hiding this comment

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

We shouldn't use an abbreviation the first time the term is introduced:

Suggested change
[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).

(Feel free to append (TSC) if we want to refer to it again, but I don't think we do.)

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).

Copy link
Member

Choose a reason for hiding this comment

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

I think we should keep a couple of the main call-outs to the appendices here; especially where reading them up-front may be beneficial to some readers. Perhaps:

Suggested change
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.
A conforming implementation of GraphQL must fulfil all normative requirements.
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. See [Appendix D](#sec-Appendix-Conformance) for
details.

(Aside: should that "algorithms and data collections" be "algorithms or data collections"?)

**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/) |

**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)
Expand All @@ -142,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)