Skip to content

Commit 2510954

Browse files
authored
Add notes from January secondary meetings (#1245)
1 parent be965a8 commit 2510954

File tree

1 file changed

+209
-0
lines changed

1 file changed

+209
-0
lines changed

notes/2023/2023-01.md

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,3 +207,212 @@
207207
- Michael: the aggressive merging feels more GraphQL-y
208208
- Rob: complexity is not fetching things again just because they’re deferred.
209209
- Rob: you mentioned “id”, Lee, I’m not totally sold in either direction.
210+
211+
# Secondary - APAC
212+
213+
## Agenda
214+
215+
1. Agree to Membership Agreement, Participation & Contribution Guidelines and
216+
Code of Conduct (1m, Lee)
217+
- [Specification Membership Agreement](https://github.com/graphql/foundation)
218+
- [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
219+
- [Contribution Guide](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md)
220+
- [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
221+
2. Introduction of attendees (5m, Lee)
222+
3. Determine volunteers for note taking (1m, Lee)
223+
4. Review agenda (2m, Lee)
224+
5. Review prior primary meeting (5m, Lee)
225+
- [WG primary](https://github.com/graphql/graphql-wg/blob/main/agendas/2023/01-Jan/05-wg-primary.md)
226+
6. Review previous meeting's action items (5m, Lee)
227+
- [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)
228+
- [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)
229+
- [All open action items (by meeting)](https://github.com/graphql/graphql-wg/projects?query=is%3Aopen+sort%3Aname-asc)
230+
7. [Licensing & final legal sign-off for GraphQL Scalars project](https://github.com/graphql/graphql-wg/issues/1206)
231+
(5m, Donna)
232+
8. [Fragment Arguments](https://github.com/graphql/graphql-spec/pull/865):
233+
Identify Open Concerns to Address (known concerns below) (10m, Matt)
234+
- Do we allow shadowing global variables?
235+
- PR with Variable Definitions instead of Fragment Argument Definitions.
236+
- Do we need PR Reviews to know if there are other concerns?
237+
- Maybe: additional graphql-js PR to use local scope, aka graphql-spec
238+
algorithm, rather than visit replacement?
239+
240+
## Review Agenda
241+
242+
- Updates on things from first-week wg (see
243+
[https://github.com/graphql/graphql-wg/blob/main/agendas/2023/01-Jan/11-wg-secondary-apac.md](https://github.com/graphql/graphql-wg/blob/main/agendas/2023/01-Jan/11-wg-secondary-apac.md))
244+
245+
## Review previous meeting's action items
246+
247+
- Andi: Benjie had validation Q for default value handling, GraphQL Java now
248+
implements all default value validation
249+
- Andi: needed additional function for scalars value to AST
250+
- Influenced custom scalar work
251+
252+
## Licensing & final legal sign-off for GraphQL Scalars project
253+
254+
- Waiting for Lee
255+
- Spend time in meeting getting to done.
256+
- License:
257+
- MIT License (it’s code not spec text). Need to add that because scalars is
258+
code, but owfa is for spec text. Weird reasons why different. Need template
259+
about copyright person who wrote, but open to all
260+
- Andi: OWFA is ideal as mostly it’s spec, even though we have some code.
261+
Value is spec not code
262+
- Lee: Will say any code is MIT, any spec is OWFA. Will do this right after
263+
call
264+
- Donna: in custom scalars section of spec, could link to GraphQL Scalars
265+
- Andi: spread word, use it, look into it, let’s get value out of it
266+
- Lee: will pull down now
267+
268+
## Fragment Arguments Open Concerns
269+
270+
- Extra thing: open new PR to kill and make new one to help improve context
271+
- Discussion about how we do it on the client (expanding fragments as templates)
272+
- Worthwhile to treat runtime performance of validation steps as legitimate
273+
concern
274+
- Could we dream up degenerate text that causes perf issues? Does this create
275+
a new category of these things? Would be good to have a paragraph or two
276+
explaining why we aren’t worried about it.
277+
278+
# Secondary - EU (2023-01-19)
279+
280+
## Agenda
281+
282+
1. Agree to Membership Agreement, Participation & Contribution Guidelines and
283+
Code of Conduct (1m, Lee)
284+
- [Specification Membership Agreement](https://github.com/graphql/foundation)
285+
- [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
286+
- [Contribution Guide](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md)
287+
- [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
288+
2. Introduction of attendees (5m, Lee)
289+
3. Determine volunteers for note taking (1m, Lee)
290+
4. Review agenda (2m, Lee)
291+
5. Review prior primary meeting (5m, Lee)
292+
- [WG primary](https://github.com/graphql/graphql-wg/blob/main/agendas/2023/01-Jan/05-wg-primary.md)
293+
6. Review previous meeting's action items (5m, Lee)
294+
- [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)
295+
- [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)
296+
- [All open action items (by meeting)](https://github.com/graphql/graphql-wg/projects?query=is%3Aopen+sort%3Aname-asc)
297+
7. Defer/Stream updates (20m, Rob)
298+
- [Remove labels and merge deferred fragments under the same object](https://github.com/robrichard/defer-stream-wg/discussions/64)
299+
- [Deduplication of deferred fields](https://github.com/robrichard/defer-stream-wg/discussions/65)
300+
8. Discussion of
301+
[Backward Compatibility](https://github.com/graphql/graphql-wg/discussions/1232)
302+
(20m, Roman)
303+
304+
## Review prior primary meeting
305+
306+
- Talked about fragment arguments, need to resolve naming around arguments or
307+
variables
308+
- Discussion about PR’s for the spec being approved but not merged; when someone
309+
approves they should make the next steps clear, e.g. approved and should be
310+
merged, approved but needs more feedback from other TSC members, etc.
311+
- Default value validation status checks
312+
([https://github.com/graphql/graphql-js/pull/3814](https://github.com/graphql/graphql-js/pull/3814))
313+
- Defer/stream updates
314+
315+
## Defer/Stream updates
316+
317+
- Summary: clients identifying streams/defers being in progress/completed.
318+
- Rob: I've broken the
319+
[#52](https://github.com/robrichard/defer-stream-wg/discussions/52)
320+
discussions up into separate issues.
321+
- Remove labels entirely
322+
[#64](https://github.com/robrichard/defer-stream-wg/discussions/64)
323+
- Ivan: If we have initial response and one big defer per path then you can
324+
live without labels, but labels are a nice feature - they make the client
325+
life easier and allow us to do more complicated stuff later.
326+
- Michael: I don't see the use cases for labels, could you expand?
327+
- Ivan: currently we'd only get one defer per path, but with labels you can
328+
ship data as you want and just mark when certain labels are resolved.
329+
- Michael: but it reintroduces all the label issues?
330+
- Ivan: we can use labels in a different way than what we proposed
331+
previously; I'll open a separate issue to discuss this.
332+
- Hugh: add them to #64
333+
- Yaacov [chat]: labels allow you to declare fulfillment of defers at the
334+
same path individually => but what we said previously is that we would
335+
enable this eventually with fragment aliases
336+
- Rob: a single defer could correspond to multiple responses, and the label
337+
would indicate once all the responses mean that that label is completed.
338+
- Ivan: exactly: server ships stuff when it's ready - shipping fields
339+
separately or batching - then label indicates that you have everything
340+
that you need to satisfy the fragment.
341+
- Michael: we're hoping to solve this with fragment aliasing instead, then
342+
you would not need the label.
343+
- Rob: the important thing to me here is changing the contract that you can
344+
have one defer per path.
345+
- Ivan: Apollo Kotlin works on a merged tree of all the payloads, it doesn't
346+
matter how it's received (which payloads have which fields) - it just
347+
matters if the data is complete or not [for a label].
348+
- Ivan: this proposal splits the idea of the label and the shape being
349+
paired - the shape can be split and delivered in multiple parts, and then
350+
signal when it's complete.
351+
- Ivan: reason: deduplication and allowing details at the same path to be
352+
resolved in different phases
353+
- Yaacov: but we may be able to solve that in different ways.
354+
- Ivan: you're right; deduplication is the main one for me.
355+
- Deduplication of deferred fields
356+
[#65](https://github.com/robrichard/defer-stream-wg/discussions/65)
357+
- Include an indication of upcoming payloads in response
358+
[#66](https://github.com/robrichard/defer-stream-wg/discussions/66)
359+
360+
## Discussion of Backward Compatibility
361+
362+
- Roman: Sometimes "backwards compatibility" gets in the way - if someone
363+
mentions that then it can stop progress..
364+
- Related discussion:
365+
[https://github.com/graphql/graphql-wg/discussions/1232](https://github.com/graphql/graphql-wg/discussions/1232)
366+
- Benjie: deprecated directive doesn’t mean the thing has to go away, or that
367+
there is going to be an incompatible change
368+
- Benjie: I do like the suggested new wording: “@directive directive helps to
369+
manage the gradual evolution of application schema, giving an advanced warning
370+
to clients about upcoming changes in the schema.”
371+
- Ivan: I suggest "deprecated" discourage usage in a new client and notify old
372+
client to migrate
373+
- so no mention of compatibility
374+
- because it's up to a server maintainer to decide on such a policy
375+
- Benjie: re: deprecated, it doesn't mean "it might go away," it means "avoid
376+
using this." It _might_ mean that it's going to go away, but that's up to the
377+
schema implementer. It might just mean there's an alternative field/pattern to
378+
use instead.
379+
- Backwards compatibility explained in
380+
https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md#guiding-principles:
381+
- Once a query is written, it should always mean the same thing and return the
382+
same shaped result. Future changes should not change the meaning of existing
383+
schema or requests or in any other way cause an existing compliant GraphQL
384+
service to become non-compliant for prior versions of the spec.
385+
- Folks agree with this
386+
- Moving conversation to talk about suggested basic principles for advancing the
387+
spec (from Roman):
388+
1. Capabilities: do not remove, add only. Do not change, extend only
389+
2. Restrictions on existing elements: never add one, but removing restriction
390+
should be OK.
391+
3. Presumed some tolerance of implementations to unexpected extra elements -
392+
do we mention it in the spec?
393+
4. Primary concern with existing end apps and their GraphQL schemas and
394+
queries;
395+
5. Much less concern with libraries and tools, just publish spec draft early
396+
enough.
397+
- Yaacov: so that means there can never be any new GraphQL Types?....; That
398+
can't be interpreted by old GraphiQL as an old type?
399+
- Benjie: It's a _should_, so basically care must be taken. GraphiQL _should_
400+
ignore types it doesn't understand, in the same way that that apps should
401+
expect new types to be added to a union.; However changing that an input
402+
object is no longer input-only would be an unexpected change rather than a new
403+
type. In general a new type is actually preferred over tweaking existing
404+
types.
405+
- Ivan: Future changes should not change the meaning of existing schema
406+
- Benjie: conversation is getting a bit convoluted between backwards and
407+
forwards compatibility
408+
409+
## Update on Fragment Arguments
410+
411+
- New discussion placeholder:
412+
[https://github.com/graphql/graphql-wg/discussions/1239](https://github.com/graphql/graphql-wg/discussions/1239)
413+
- Questions, comments, concerns go here
414+
- Making progress, would love to get feedback on
415+
[graphql/graphql-js#3835](https://github.com/graphql/graphql-js/pull/3835) and
416+
[graphql/graphql-spec#1010](https://github.com/graphql/graphql-spec/pull/1010)
417+
- Matt is working with the Relay team on making sure the solution / approach is
418+
feasible

0 commit comments

Comments
 (0)