Skip to content

Latest commit

 

History

History
137 lines (110 loc) · 11.3 KB

2021-04-01.md

File metadata and controls

137 lines (110 loc) · 11.3 KB

GraphQL WG Notes - April 2021

Watch the replay: GraphQL Working Group Meetings on YouTube

  1. Agree to Membership Agreement, Participation Guidelines and Code of Conduct (1m, Lee)
  1. Introduction of attendees (5m, Lee)
  2. Determine volunteers for note taking (1m, Lee)
  3. Review agenda (2m, Lee)
  4. Review previous meeting's action items (5m, Lee)
    • All action items

Determine volunteers for note taking

  • Alan
  • Benjie
  • Stephen

Review agenda

  • Suggested additions:
    • Introspection extensions (e.g. some exposing directives)
    • Spec cut date
    • Oneof proposal update
    • Ivan proposal: adding description to queries and fragments
    • Potential small spec merges

Review previous meeting's action items (5m, Lee)

Open and Ready for Review

  • #636 - [2021-02-04] Everyone: think of GSoC project ideas
    • Lee: Google Summer of Code applications have closed
    • Ivan: we were refused this year (organization as a whole), unsure of reason.
    • Lee: We should also consider Season of Docs
    • Ivan: under the GraphQL/foundation repo there is "mentorship" folder you can access.
    • [ACTION - Brian] - why did we get rejected for GSoC? Should we apply for GSoD; do not want to waste time if they'll be rejected.
    • Resolved.
  • #640 - [2021-02-04] Ensure all the CLAs and copyright notices in GraphQL repos are up to date
    • Lee: is anyone aware of outstanding issues here?
    • Ivan: I can do a check. I will search for “Facebook” under the GraphQL org
    • [ACTION - Ivan]: see if there's any outdated Facebook copyright notices in GraphQL org
    • Resolved.
  • #637 - [2021-02-04] Everyone: share links to your stories (blogs, etc) relevant to GraphQL spec release
    • Lee: reminder that we still want to collect stories about the spec work over the last 18 months. There'll be good coverage of this - please contribute!
    • Remains open.
  • #641 - [2021-03-04] Check that the LF calendar has correct time
    • Lee: I think you spotted something Evan?
    • Evan: Yes, I think one of them needs to be deleted.
    • Lee: Yes, I am aware of it. I will delete it.
    • [ACTION - Lee] - delete old calendar
  • #644 - [2021-03-04] Advance 'Default value coercion rules' from 'proposal' to 'draft'
    • Resolved.

Open, Everyone

  • #645 - [2021-03-04] Implementers: make sure change to Default Value Coercion Rules is compatible
    • Lee: We definitely want to see this be resolved, but we want to make sure we're not breaking anything.
    • We need feedback from GraphQL implementers.
  • #647 - [2021-03-04] Everyone: review and give feedback on Oneof Input Objects/Oneof Fields RFC
    • Still open for input. Will discuss a little more later.

All open action items

  • Lots of the remaining issues on Lee, Brian and Benjie; Lee and Brian to get on top of the administrative actions soon.

Spec cut update (3m, Lee)

  • Lee: almost there, one or two final phase proposals still waiting on my review. Also waiting on administrative things (e.g. updating the version of the legal text).
  • Lee: My plan is to get everything done in the end of next week
  • Next will be a formal step: have the TSC take a formal vote to cut that draft.
  • Formal vote next month; then cut! And make some noise: tweets, blog posts, etc.
  • If you want to write a blog post; for the month after the cut we'll be dropping links from GraphQL and Lee’s Twitter accounts to draw attention to the work that went on (not necessarily the cut itself).
  • Names for spec versions
    • Lee: In the past named on the year it was released. But not opposed to doing something more cute. Always liked Ubuntu's naming scheme (based on Animals). Androids: desserts.
    • Ivan: montage on what plants you associate GraphQL with.

Oneof proposal update (Benjie)

  • Benjie: I haven’t had time to work on it last month and I will try to this month
  • Benjie: I would appreciate any feedback if anyone has any
  • Benjie: I need to talk to the GraphQL.js people to see how this fits in with their rewrite
  • Evan: Shopify is getting increasingly more interested in this. This seems like the most promising candidate so far. I’m not super familiar with JS but I would be open to helping.

TypeScript migration for GraphQL.js (Ivan)

  • Ivan: We have almost 6 million downloads/week so we try and avoid unnecessary breakage.
  • We tried to do it as a non-breaking release, but it's not possible. TypeScript is just type annotations; but to properly type things in TS we need to change some stuff. We don't want to do TS specific stuff, but we do need to clean up some hacks that look weird anyway; e.g. GraphQLList and GraphQLNonNull without new.
  • 16.0.0 line is now on main.
  • One more thing: we need to drop Flow typings. Maintaining them both in parallel makes it really hard to get contribution, so we've decided to drop Flow types. We have a PR for converting to TypeScript; Sahid and the Guild are helping. Sahid is advancing the PR, fixing TypeScript issues, but that has required workarounds that we don't want to merge. So the plan is to incorporate the fixes into main.
  • We're about 95% done on the PR. We need a couple weeks to finish this up, then we'll release 16.0.0-alpha.1, still with Flow typing, and still in Flow. We'll give it a week for people to test; then we'll merge the PR which'll convert to TypeScript.
  • ETA: next working group; maybe in month and half we might release version based on TypeScript.
  • PR is reviewable and rebasable (about 80 commits, each doing one specific thing). E.g. in Flow + means readonly, but in TypeScript it uses readonly; so the commit only changes + to readonly and it makes it really easy to review. Some of the changes need more time reviewing; but it's an excellent strategy and I'd like to give Sahid a shout out for this.
  • Small changes shouldn't be held up by this, so keep the PR's coming.
  • There'll just be small changes in typings rather than big API changes, so writing the changes in Flow is fine, and then Sahid can rebase on this and factor the changes in.
  • Lee: That’s awesome to hear that this is coming to a close. I think it would be amazing to do a spec cut and a 16.0.0-alpha.1 update around the same time
  • Lee: Matt, do you know what Facebook is thinking on Flow vs TypeScript these days?
  • Matt: Facebook can use GraphQL.js for tooling. We have totally revamped the Relay compiler (now in Rust). Basically, Facebook doesn’t really need long term GraphQL.js to be Flow compatible with the rest of Facebook’s Flow codebase.
  • Lee: That sounds good! It seems that the open source community has already decided on what tool to use.
  • Ivan: Sahid generated packages before/after TS and we're doing a diff to see if there's any changes. So far changes are minimal. The .d.ts files will stay mostly the same too (though the TS compiler does things a little differently than someone writing them by hand).
  • Mark: Have you utilized some Flow to Typescript transpilers? Have you investigated that? They may be marginally helpful.
  • Ivan: Yes, we have taken a look at it. My personal opinion is that we shouldn’t release something we didn’t check. We can produce a result with these tools but we have no idea if it makes sense or not. There could be other issues, for example if someone creates a PR.
  • Ivan: there's the "flow typed" repository people can contribute to (like "definitely typed")
  • Matt: we'll probably take the next GraphQL.js cut and then freeze it for the things that depend on the flow types. The things that'll need the new GraphQL features won't be written in JS.
  • Mark: Makes sense. There is the community Flow-types project. I wonder if someone will maintain the Flow-types version of GraphQL.js even after it’s been converted to TS.

Adding descriptions to queries and fragments (Ivan)

  • Ivan: I didn't have time to add a last minute PR; but in a nutshell
  • First: usecase. Business people need comments; we wanted to add swagger comments from GraphQL queries - so we need descriptions. Using comments style means that we have to parse the SDL and it's problematic if people add other comments. Description via """ would work a lot nicer here, and it looks like it'd simplify the parser if we allow this (currently it's only allowed in type definitions, but if we add queries and fragments it would extend this exception). Also useful for other usecases; e.g. GraphiQL history panel could use description as a tooltip. Even for code generation, generating function/types from queries/fragments - this random things is not a comment but a description that we can use.
  • Matt: this sounds like something lots of tooling could use. Let's table it for the next agenda. This sounds like a good step forward.
  • Lee: This is kind of interesting. GraphQL started its life in a schema world and the query world and now they are slowly closer to each other. I see the value so looking forward to seeing a proposal. Sounds like it will be fairly straightforward.
  • Benjie: There is one potential concern. How do multiline strings works in queries?
  • Lee: Same as other multiline strings. Just triple quotes.
  • Benjie: I am slightly concerned that it may be a source of visual conversion. Perhaps if someone sees a description, they may think that is an invalid argument value.
  • Lee: That is a good point, maybe we should consider some syntax highlighting that will clarify that. (It's directly inspired by how Python does comments.)
  • Ivan: If you have an anonymous query {__typename} then adding documentation doesn't make sense; so we'd only allow adding it to named operations and named fragments.

Potential Small Spec Merges (Benjie)

Schema introspection extensions (Michael)

  • GraphQL Java implemented it and then found the issues. I think we have to do the proper work and turn it into an RFC.
  • Matt: should we put this on the agenda for next meeting with a ping to the relevant people?
  • Michael: it's hard with the timezone differences - even without American's involved! But yes, let's table it.
  • Lee: I hope we can discuss this in the next meeting. Hopefully you can talk with Andi and propose a direction.