|
307 | 307 | meeting.
|
308 | 308 | - Separate between 2 issues: 1. when to ignore / not ignore and 2. What info to
|
309 | 309 | 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