|
| 1 | +# GraphQL WG Notes - June 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 | + |
| 10 | +1. Agree to Membership Agreement, Participation & Contribution Guidelines and |
| 11 | + Code of Conduct (1m, Lee) |
| 12 | + - [Specification Membership Agreement](https://github.com/graphql/foundation) |
| 13 | + - [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines) |
| 14 | + - [Contribution Guide](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md) |
| 15 | + - [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md) |
| 16 | +2. Introduction of attendees (5m, Lee) |
| 17 | +3. Determine volunteers for note taking (1m, Lee) |
| 18 | +4. Review agenda (2m, Lee) |
| 19 | +5. Review prior secondary meetings (5m, Lee) |
| 20 | + - [WG secondary APAC](https://github.com/graphql/graphql-wg/blob/main/agendas/2023/05-May/10-wg-secondary-apac.md) |
| 21 | + - [WG secondary EU](https://github.com/graphql/graphql-wg/blob/main/agendas/2023/05-May/18-wg-secondary-eu.md) |
| 22 | +6. Review previous meeting's action items (5m, Lee) |
| 23 | + - [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) |
| 24 | + - [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) |
| 25 | + - [All open action items (by meeting)](https://github.com/graphql/graphql-wg/projects?query=is%3Aopen+sort%3Aname-asc) |
| 26 | +7. Default Value Validation Status Check (5m, Yaacov) |
| 27 | + - [Lee's original implementation PR stack at graphql-js](https://github.com/graphql/graphql-js/pull/3049) |
| 28 | + - [Last rebased to main on 2023.05.31](https://github.com/graphql/graphql-js/pull/3814) |
| 29 | + - [Benjie's Spec PR](https://github.com/graphql/graphql-spec/pull/793) |
| 30 | +8. Clarification on Nested List Input Coercion (5m, Abhinand) |
| 31 | + - [Issue on mismatch of Nested List Input Coercion in spec and implementation](https://github.com/graphql/graphql-js/issues/3858) |
| 32 | +9. CollectSubFields (30m, Yaacov) |
| 33 | + - [Spec PR](https://github.com/graphql/graphql-spec/pull/999) |
| 34 | + - [Use Case: Incremental Delivery with Deduplication](https://github.com/graphql/graphql-spec/pull/1026) |
| 35 | +10. @deprecated on OBJECT - next steps (15m, Stephen) |
| 36 | + - [Spec PR](https://github.com/graphql/graphql-spec/pull/997) |
| 37 | + - [GraphQL-JS PR](https://github.com/graphql/graphql-js/pull/3818) |
| 38 | + |
| 39 | +## Determine volunteers for note taking |
| 40 | + |
| 41 | +- Yaacov, Stephen |
| 42 | + |
| 43 | +## Review prior secondary meetings |
| 44 | + |
| 45 | +- Michael: From APAC meeting - |
| 46 | + https://github.com/graphql/graphql-spec/issues/769 |
| 47 | + |
| 48 | +## Default Value Validation Status Check (5m, Yaacov) |
| 49 | + |
| 50 | +- Yaacov: quick status check |
| 51 | + - Awaiting Lee’s review |
| 52 | + - Benjie has |
| 53 | + [spec changes as a PR](https://github.com/graphql/graphql-spec/pull/793). |
| 54 | + Awaiting review |
| 55 | + - Which gets in first? Incremental delivery or this? |
| 56 | +- Ivan: This depends on schema coordinates. What is the status of schema |
| 57 | + coordinates? |
| 58 | + - Michael: schema coordinates is ready |
| 59 | +- Ivan: Champions. Start at the top of the stack, one PR at a time. |
| 60 | +- Yaacov: Next step - see if we can break down further. I’ll take that as an |
| 61 | + action item |
| 62 | + - Ivan: Maybe break out things that are purely GraphQL-js |
| 63 | + |
| 64 | +## Clarification on Nested List Input Coercion (5m, Abhinand) |
| 65 | + |
| 66 | +- Abhinand: I noticed a bug and created an |
| 67 | + [issue](https://github.com/graphql/graphql-js/issues/3858). |
| 68 | +- Yaacov: We do automatic coercion to a list when you provide a single value. |
| 69 | + - At the time that this was clarified in the spec, a second question was |
| 70 | + asked: What happens with a list of lists when you pass a single value? |
| 71 | + - The answer was that we should also wrap this in a nested list. |
| 72 | + - We have a table that says when a doubly nested list is expected and a |
| 73 | + singley nested list is provided there is an error. Is that what we want? |
| 74 | +- Michael: Would be great to have Lee’s insight on history of why this is in the |
| 75 | + spec like this |
| 76 | +- Ivan: Relation to javascript coercion |
| 77 | +- Yaacov: It’s already released in graphql-js with this behavior (not erroring). |
| 78 | + If we changed it to match the spec, would that break existing users? |
| 79 | +- Ivan: The spec is usually the source of truth. I’d consider changing |
| 80 | + graphql-js safer than changing spec. |
| 81 | + - This would be introduced as a semver breaking change. Include in release |
| 82 | + notes. |
| 83 | + - Same thing happened in apollo. Initially impls were based on graphql-js but |
| 84 | + more and more clean room impl based on the spec. |
| 85 | +- Michael: Usually you start with the spec and look at graphql-js for |
| 86 | + clarification on some algorithms |
| 87 | +- Ivan: To change the spec, it’s adding a feature. A feature needs a string |
| 88 | + use-case |
| 89 | + - Michael: I agree. Lots of other implementation would have implemented based |
| 90 | + on the table |
| 91 | +- Michael: Let’s add to secondary meeting |
| 92 | +- Yaacov: Once we’ve confirmed that we want to stick with the table we could |
| 93 | + make an editorial change to clarify wording around the table in the spec |
| 94 | + |
| 95 | +## CollectSubFields (30m, Yaacov) |
| 96 | + |
| 97 | +- Yaacov: (Some slides with |
| 98 | + [motivation](https://github.com/graphql/graphql-spec/pull/1026) for |
| 99 | + [PR](https://github.com/graphql/graphql-spec/pull/999)) |
| 100 | + - incremental delivery with deduplication |
| 101 | +- Yaacov: Action - review spec text. No hurry to merge now. The use-case is |
| 102 | + upcoming but hasn’t arrived. Later spec change will be built on this. |
| 103 | +- Ivan: Safe to say this is a |
| 104 | + [Strawman](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md#stage-0-strawman). |
| 105 | + There is usefulness in it. |
| 106 | + |
| 107 | +## @deprecated on OBJECT - next steps (15m, Stephen) |
| 108 | + |
| 109 | +- Stephen: |
| 110 | +- https://github.com/graphql/graphql-spec/pull/997 |
| 111 | +- Today we can deprecate fields, but not objects. Generally, deprecation is for |
| 112 | + clients, not servers; we are trying to communicate to clients that they need |
| 113 | + to change, i.e. that they need to stop requesting the deprecated field. |
| 114 | +- Changes with types have fewer client-required changes -- but they do have at |
| 115 | + least some! |
| 116 | +- Operations can mention types also -- they can spread a fragment on a type that |
| 117 | + implements an interface to request specific fields only if the returned type |
| 118 | + is the spread type, i.e.: |
| 119 | +- “ ... on SomeObject { someField }” where the return type of the field is |
| 120 | + SomeInterface and SomeObject implements SomeInterface. |
| 121 | +- A server cannot remove the SomeObject type unless the operations referencing |
| 122 | + it are updated, and so it would be good for servers to be able to encourage |
| 123 | + operations to stop using the type via the deprecated directive just like with |
| 124 | + fields. |
| 125 | +- Michael: I will try to implement it within HotChocolate and provide feedback. |
| 126 | +- Ivan: I will add a link to a rule that needs to be updated to detect duplicate |
| 127 | + usages; the rest looks pretty straightforward. |
| 128 | +- Ivan: Downside to the current proposal => might one assume that if ..... |
| 129 | + <notetaker dropped> |
| 130 | +- Action items: |
| 131 | + - Michael to implement in HotChocolate |
| 132 | + - Added validations in graphql-js |
| 133 | + - Next time, discuss moving to |
| 134 | + [Stage 2](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md#stage-2-draft) |
0 commit comments