Add `implementedBy` field in `metadata.yml`
- Dominant language
- JavaScript
- Stars
- 9
- Forks
- 7
- PR merge metrics
- No merged PRs in 30d
Description
@PascalSenn suggested at today's wg meeting that GAPs should list (in metadata.yml) what servers/clients implement the spec, so users can decide which spec to use.
**Option 1 - text only**
```yaml
implementedBy:
- "Apollo Client >= v1.2.3"
- "Relay >= v3.4.5"
```
**Option 2 - markdown links**
```yaml
implementedBy:
- [Apollo Client >= v1.2.3](https://www.apollographql.com/docs/react)
- [Relay >= v3.4.5](https://github.com/facebook/relay)
```
**Option 3 - structured data**
```yaml
implementedBy:
- name: Apollo Client
website: https://www.apollographql.com/docs/react
version: 1.2.3
- name: Relay
website: https://www.apollographql.com/docs/react
version: 3.4.5
```
**Option 4 - project definition keys + structured data**
```yaml
implementedBy:
- project: apollo-client
version: 1.2.3
- project: relay
version: 3.4.5
```
...which refers to some central projects.yml that looks like this:
```yaml
- id: apollo-client
website: https://www.apollographql.com/docs/react
- id: relay
website: https://github.com/facebook/relay
```
Maybe this can reuse the definitions list here https://caniuse.graphql.now/index.html#projects
Note: I'd also like to support arbitrary projects here too, since support might initially be implemented as random a plugin (e.g. the `@mock` spec is currently implemented in [apollo-client-mock-directive-plugin](https://github.com/magicmark/apollo-client-mock-directive-plugin/), not apollo core. I would expect many specs might start out this way.
So that implies something like this:
```yaml
implementedBy:
- project: relay
version: 3.4.5
- name: apollo-client-mock-directive-plugin
website: https://github.com/magicmark/apollo-client-mock-directive-plugin/
version: 0.0.1
```
---
my vote is Option 4.
Contributor guide
Assessment
This issue has not been assessed yet.