Skip to content

Commit

Permalink
merged introductions
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelstaib committed Jan 24, 2024
1 parent f9a1910 commit 404150f
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 3 deletions.
32 changes: 30 additions & 2 deletions spec/Section 1 -- Overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,41 @@ and complexities of the underlying distributed systems are hidden. The
observable behavior of the distributed GraphQL executor is the same as that of a
standard GraphQL executor as described by the GraphQL specification.

GraphQL Composite Schemas specification has a number of design principles:

- **Composable**: Rather than defining GraphQL schemas in isolation and
reshaping them to fit a composed graph later, it encourages developers to
think of GraphQL schemas as partial schemas that are designed as part of a
larger schema from the get go. Each source schema defines the types and fields
it is responsible for serving within the context of a larger schema,
referencing and extending what is already there. In other words, the GraphQL
Composite Schemas specification is not designed to glue arbitrary schemas
together, but to facilitate a coordinated effort to build a coherent composite
schema.

- **Collaborative**: The GraphQL Composite Schemas specification is explicity
designed around team collaboration. By building on a principled composition
model, it ensures that conflicts and inconsistencies are surfaced early and
can be resolved before deploying. This allows many teams to contribute to a
single schema without the danger of breaking it.

- **Evolvable**: A composite schema offers an integrated, product-centric view
of underlying services. And these services should be able to evolve without
disrupting clients. Over time, the same functionality may be provided by a
different combination of services, while the schema surface stays the same.
Source schema boundaries are therefore considered an implementation detail and
should never be exposed to clients.

- **Explicitness**: This specification values explicitness over inferring
intentions, as these tend to break down and can lead to ambiguity over time.

This specification focuses on two core components to allow interoperability
between tooling and gateways from different implementers, the schema composition
and the execution.

- **Composition**: The schema composition describes a process of merging
- **Composition**: The schema composition describes the process of merging
multiple source schemas into a single GraphQL schema that is annotated with
execution directives and is referred to as the composite schema.

- **Execution**: The distributed GraphQL executor specifies the core execution
behavior and algorithms.
behavior and algorithms.
File renamed without changes.
2 changes: 1 addition & 1 deletion spec/Spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ Note: This is an example of a non-normative note.

# [Overview](Section%201%20--%20Overview.md)

# [Subgraph](Section%202%20--%20Subgraph.md)
# [Subgraph](Section%202%20--%20Source%20Schema.md)

# [Supergraph](Section%203%20--%20Supergraph.md)

Expand Down

0 comments on commit 404150f

Please sign in to comment.