Skip to content

Commit 1131cdb

Browse files
authored
Finalize December notes (#1214)
1 parent 3ab477a commit 1131cdb

File tree

1 file changed

+245
-0
lines changed

1 file changed

+245
-0
lines changed

notes/2022/2022-12.md

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,3 +307,248 @@
307307
meeting.
308308
- Separate between 2 issues: 1. when to ignore / not ignore and 2. What info to
309309
give the server to handle response.
310+
311+
# Secondary meeting - APAC
312+
313+
## Agenda
314+
315+
- Agree to Membership Agreement, Participation & Contribution Guidelines and
316+
Code of Conduct (1m, Lee)
317+
- [Specification Membership Agreement](https://github.com/graphql/foundation)
318+
- [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
319+
- [Contribution Guide](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md)
320+
- [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
321+
- Introduction of attendees (5m, Lee)
322+
- Determine volunteers for note taking (1m, Lee)
323+
- Review agenda (2m, Lee)
324+
- Review previous meeting's action items (5m, Lee)
325+
- [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)
326+
- [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)
327+
- [All open action items (by meeting)](https://github.com/graphql/graphql-wg/projects?query=is%3Aopen+sort%3Aname-asc)
328+
- Licensing & final legal sign-off for GraphQL Scalars project (5m, Donna)
329+
- Review a few active approved simple PRs and merge
330+
[974](https://github.com/graphql/graphql-spec/pull/974),
331+
[975](https://github.com/graphql/graphql-spec/pull/975),
332+
[980](https://github.com/graphql/graphql-spec/pull/980),
333+
[981](https://github.com/graphql/graphql-spec/pull/981),
334+
[982](https://github.com/graphql/graphql-spec/pull/982),
335+
[983](https://github.com/graphql/graphql-spec/pull/983),
336+
[985](https://github.com/graphql/graphql-spec/pull/985)
337+
338+
## Determine volunteers for note taking (1m, Lee)
339+
340+
- Benjie
341+
- Matt
342+
343+
## Review previous meeting's action items (5m, Lee)
344+
345+
- [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)
346+
- [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)
347+
- [All open action items (by meeting)](https://github.com/graphql/graphql-wg/projects?query=is%3Aopen+sort%3Aname-asc)
348+
- Benjie: No updates on action items
349+
350+
## Licensing & final legal sign-off for GraphQL Scalars project (5m, Donna)
351+
352+
- Donna: Thanks to whoever connected the URL! Still need to sort out the license
353+
- Table to end of meeting
354+
- Need to assign task/action item onto Lee to deal with
355+
- Donna: if there’s a way for me to help out, I’m happy to pitch in.
356+
- Benjie: open PR, don’t actually merge, and have Lee push the button
357+
358+
## Review a few active approved simple PRs and merge [974](https://github.com/graphql/graphql-spec/pull/974), [975](https://github.com/graphql/graphql-spec/pull/975), [980](https://github.com/graphql/graphql-spec/pull/980), [981](https://github.com/graphql/graphql-spec/pull/981), [982](https://github.com/graphql/graphql-spec/pull/982), [983](https://github.com/graphql/graphql-spec/pull/983), [985](https://github.com/graphql/graphql-spec/pull/985)
359+
360+
- P30: looks good to Benjie
361+
- 981: Need to make an editorial decision for the spec capitalization (CREATE
362+
ACTION ITEM)
363+
- 983: Action item on Matt Mahoney: review and help improve wording so we don’t
364+
impose “this is really hard” emotion
365+
- 985: The sentence is not as accurate as it needs to be, but to fix it we
366+
should address all instances of "parallel" in that section.
367+
- ACTION: Matt - provide specific suggestion on how to address 985
368+
- 984: [long discussion around why this is a _selection set_ and not a _mutation
369+
operation_]
370+
- Benjie this defines serial execution of a selection set, rather than
371+
explicitly execution of a mutation operation.
372+
- Matt's example shows an inline fragment spread, to show it's the selection
373+
set not the operation that's important. \
374+
375+
```graphql
376+
mutation M($newBirthday: Int, $newAddress: Int) {
377+
... {
378+
changeBirthday(birthday: $newBirthday) {
379+
month
380+
}
381+
}
382+
383+
changeAddress(address: $newAddress) {
384+
street
385+
}
386+
}
387+
```
388+
389+
* Matt: Maybe runnable examples in the spec would be helpful?
390+
* Benjie: perhaps we should add a title or caption or a non-normative note that strongly indicates this is a selection set, not an operation/document (and maybe gives an example of a full operation). \
391+
392+
Matt: "selection set" is meant to imply "part of operation" _ ACTION: Roman
393+
didn't read this as a selection set but instead as a document and felt that
394+
"mutation" is missing - we need to make it crisper and clearer that we're
395+
talking about selection sets here. _ Matt: we use selection sets throughout the
396+
documentation; this is where it jumped out to you, but if we fix it here we need
397+
to fix it everywhere where selection sets are referenced. \* BRING TO JAN WG:
398+
process for getting TSC eyes/approvals on small PRs that have at least 1
399+
approval.
400+
401+
## TSC Elections
402+
403+
- Nominate yourself!
404+
- At least three of the five currently-being-elected seats are not going to be
405+
filled by incumbents
406+
- Votes early in January
407+
408+
# Secondary meeting - EU
409+
410+
## Agenda
411+
412+
1. Agree to Membership Agreement, Participation & Contribution Guidelines and
413+
Code of Conduct (1m, Lee)
414+
- [Specification Membership Agreement](https://github.com/graphql/foundation)
415+
- [Participation Guidelines](https://github.com/graphql/graphql-wg#participation-guidelines)
416+
- [Contribution Guide](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md)
417+
- [Code of Conduct](https://github.com/graphql/foundation/blob/master/CODE-OF-CONDUCT.md)
418+
2. Introduction of attendees (5m, Lee)
419+
3. Determine volunteers for note taking (1m, Lee)
420+
4. Review agenda (2m, Lee)
421+
5. Review previous meeting's action items (5m, Lee)
422+
- [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)
423+
- [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)
424+
- [All open action items (by meeting)](https://github.com/graphql/graphql-wg/projects?query=is%3Aopen+sort%3Aname-asc)
425+
6. Field error resulting from insufficient validation of variables (15m, Benjie)
426+
- [spec#1002: Issue with reproduction](https://github.com/graphql/graphql-spec/issues/1002)
427+
7. Add a style guide to the GraphQL specification (15m, Benjie)
428+
- [PR](https://github.com/graphql/graphql-spec/pull/1003)
429+
8. Update from stream/defer breakout group and new proposal (20m, Rob and
430+
Benjie)
431+
- [Proposal](https://github.com/robrichard/defer-stream-wg/discussions/52#discussioncomment-4380643)
432+
433+
## Determine volunteers for note taking (1m, Lee)
434+
435+
- Hugh Willson
436+
437+
## Review previous meeting's action items (5m, Lee)
438+
439+
- [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)
440+
- [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)
441+
- [All open action items (by meeting)](https://github.com/graphql/graphql-wg/projects?query=is%3Aopen+sort%3Aname-asc)
442+
443+
## Field error resulting from insufficient validation of variables (15m, Benjie)
444+
445+
- [spec#1002: Issue with reproduction](https://github.com/graphql/graphql-spec/issues/1002)
446+
- If passing null the variable default doesn’t kick in
447+
- Can ultimately lead to a runtime error
448+
- Seems like it should be a validation error instead
449+
- We thought this was fixed, but we only sort of fixed this (and kinda
450+
backwards)
451+
- It sounds like we missed something here
452+
- The motivation to get this right was to explicitly disallow nulls from making
453+
it through a well typed boundary; could be a security risk if we allow them
454+
through
455+
- The code in the issue was evaluated from the point of view of the spec and
456+
from a running test case, so it’s a real issue
457+
- Is there a straightforward solution here - when providing null it’s
458+
interpreted as not provided; default values could override null
459+
- Or, we move the assertion to be later in the process
460+
- Solution here could be breaking
461+
- Queries that were previously valid would no longer by valid; validation rule
462+
would complain, so this is probably a non-starter
463+
- What was previously erroring, feeding null in, does what it says and coalesces
464+
into the default value
465+
- If we coerce to a default value it becomes impossible to actually pass null in
466+
so this could be breaking as well
467+
- Breaking change that relates to the validation rule seems like the better
468+
choice here, but this might only be fixable when we’re ready for a version
469+
bump
470+
- We have a note about this in the spec:
471+
[http://spec.graphql.org/draft/#note-ba9c8](http://spec.graphql.org/draft/#note-ba9c8)
472+
- Details:
473+
[http://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed.Allowing-optional-variables-when-default-values-exist](http://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed.Allowing-optional-variables-when-default-values-exist)
474+
- Origin:
475+
[https://github.com/graphql/graphql-spec/pull/418](https://github.com/graphql/graphql-spec/pull/418)
476+
- It should throw a field error but not a null pointer runtime exceptional; we
477+
need to prevent that from happening
478+
- This situation seems like a bug in the spec; we’re enabling clients to give us
479+
what appears to be a valid request, when it could lead to problems
480+
- We last worked on this problem 4 years ago
481+
- Could introduce a new validation rule with backwards compatibility saying this
482+
validation is a should not a must
483+
- Could be enabled/disabled via an option flag in graphql-js for example
484+
- Nervous about changing the semantics of what it means to have a default value;
485+
lots of issues trying to get this right in the past
486+
- General preference to introduce things as SHOULD
487+
- Can we describe what we want here and work backwards?
488+
- Not opposed to adding an appendix about this in the spec
489+
- What is the text of the field error from the reproduction - added here:
490+
[https://github.com/graphql/graphql-spec/issues/1002#issuecomment-1353581951](https://github.com/graphql/graphql-spec/issues/1002#issuecomment-1353581951)
491+
- It seems like this line is the one in question and needs the change, but this
492+
will need to be confirmed:
493+
[http://spec.graphql.org/draft/#sel-IALbLDFCFCAACEYoxc](http://spec.graphql.org/draft/#sel-IALbLDFCFCAACEYoxc)
494+
- Action: having default mode be the happy path which will require to spec text
495+
changes
496+
497+
## Add a style guide to the GraphQL specification (15m, Benjie)
498+
499+
- [PR](https://github.com/graphql/graphql-spec/pull/1003)
500+
- Inconsistencies in styling
501+
- Especially around capitalization
502+
- Providing a style guide here could help
503+
- We most closely match the AP style guide
504+
- Propose we follow the rules there
505+
- Have started a basic new style guide and updated things to follow
506+
- Chicago style guide is great as well, but decided not go with it because of
507+
prepositions / conjunctions no matter how long they are, whereas AP only
508+
applies to preps / conj under a specific length
509+
- Love anything we can just lint rule away
510+
- AP style guide is nice and simple
511+
- How do we preserve this going forward; add a lint tool to apply this moving
512+
forward?
513+
- Looks like we could use something like:
514+
[https://vale.sh/explorer/ap/](https://vale.sh/explorer/ap/)
515+
- Next steps: All folks think this is a good idea; Benjie is going to run with
516+
it!
517+
518+
## Update from stream/defer breakout group and new proposal (20m, Rob and Benjie)
519+
520+
- [Proposal](https://github.com/robrichard/defer-stream-wg/discussions/52#discussioncomment-4380643)
521+
- The above is the outcome of a separate breakout session earlier this week
522+
- This is the leading proposal so far to solve the issue
523+
- Details and examples are broken out in the discussion thread so not repeating
524+
them here
525+
- Definitely an interesting proposal
526+
- Question around labels and reasons and how useful they will be
527+
- Reason shouldn’t be required, nice bit of extra information, but not necessary
528+
- Labels and path are necessary to uniquely identify what triggered things
529+
- We did consider getting rid of label entirely but decided to keep it because
530+
we might want to defer things separately and not have them be merged
531+
- Modeling these as promises / async interables
532+
- Path to know where you’re merging data in, but need the id in case you’re
533+
merging multiple things at that path
534+
- What do labels and reasons solve for clients? Do they help or hinder?
535+
- Are labels redundant if deferred fields can already be identified separately,
536+
meaning they can be pulled back in on the client and merged effectively
537+
without the label
538+
- Reason is just noise right now; but may be useful in future
539+
- If labels are optional what is the situation that requires a client developer
540+
to add a label?
541+
- Labels can be seen as identifying deferred fragments as separate promises,
542+
conceptually
543+
- Use case of a label to distinguish between logically different defers that
544+
can’t be merged makes sense
545+
- Less clear as to the advantage of client developers having to worry about an
546+
array of labels coming back
547+
- Also concerned about adding a bunch of extra stuff in deferred responses;
548+
could reach a point where all of the extra response overhead negates the
549+
benefits of defer
550+
- Not sure about merging of the labels; now there is some specific meaning
551+
behind if you want things to be merged or not that developers need to worry
552+
about (the client library can’t hide all of these decisions from end users)
553+
- Proposal is super interesting but we need to figure out the label part
554+
- Next steps: We have a follow up breakout meeting scheduled for Dec. 19th

0 commit comments

Comments
 (0)