|
207 | 207 | - Michael: the aggressive merging feels more GraphQL-y
|
208 | 208 | - Rob: complexity is not fetching things again just because they’re deferred.
|
209 | 209 | - 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