typelevel / grackle

Grackle: Functional GraphQL for the Typelevel stack
http://typelevel.org/grackle/
Apache License 2.0
176 stars 25 forks source link

Roadmap for 1.0 #128

Open milessabin opened 3 years ago

milessabin commented 3 years ago
tpolecat commented 3 years ago

I think we probably need to get the doc site back in shape as well.

tpolecat commented 3 years ago

Also need to implement subscriptions (in progress).

milessabin commented 2 years ago

I'm about to land a second rewrite of the SQL compiler. Now landed.

armanbilge commented 2 years ago

Low-priority, but it would be cool to cross-build for Scala.js as well. It should be easy since all your dependencies are already on Scala.js with identical APIs, except for doobie. However, the tests would be hampered by the testcontainers dependency.

Tangential, but IMHO a library cannot really 1.0.0 in the bincompat sense while it has dependencies that themselves have not 1.0.0-ed (in this case, circe, skunk, etc.). The reason is a breaking version bump in one of those dependencies would force a breaking version bump in your library, so you can only be as binary-stable as your least-stable dependency.

milessabin commented 2 years ago

Cross-building for Scala.js makes sense ... I'll add it to the list.

Point taken about unstable dependencies. The core module doesn't have any unstable dependencies, so maybe we declare 1.0.0 for core, and have the circe/doobie/skunk module versions track the corresponding upstream versions?

armanbilge commented 2 years ago

Huh, core also seems to depend on circe, as well as cats-parse.

https://github.com/gemini-hlsw/gsp-graphql/blob/79f2b1cc9e2f541b203d2902014f173bfaa5447a/build.sbt#L84-L100

milessabin commented 2 years ago

Hmm ... that could probably be eliminated. It's only used internally, mainly to generate result Json, and it's probably not the most efficient way of doing that, so a faster, stable, alternative might be a better option.

milessabin commented 2 years ago

@armanbilge added a couple of issues to reflect your comments: #202, #203.

milessabin commented 2 years ago

@armanbilge I think we have to stick with cats-parse. I think on balance I'd be happy to bump Grackle's major version number if we need to update cats-parse before it reaches 1.0.0.

jf-botto commented 2 years ago

Hi, I'm always looking for open source things to work on and I'd like to help out. Would anyone mind if I worked on #197 or #199? I'm more than happy to look at any other small/self contained issues that might be more useful/appropriate.

milessabin commented 2 years ago

@jbotto94 sorry, I missed your message earlier. Both #197 and #199 are real chores and a bit fiddly ... I wouldn't want to inflict them on you. How about #237? It involves digging around in the query algebra and the various places it's used ... I think it'll be a lot more interesting and give more insight into how Grackle hangs together.

jf-botto commented 2 years ago

@jbotto94 sorry, I missed your message earlier. Both #197 and #199 are real chores and a bit fiddly ... I wouldn't want to inflict them on you. How about #237? It involves digging around in the query algebra and the various places it's used ... I think it'll be a lot more interesting and give more insight into how Grackle hangs together.

Sure :). Wasn't sure if you had started working on it or not.

armanbilge commented 2 years ago

@milessabin here's another one to add to the list: you should probably replace the log4cats-slf4j dependency with just log4cats-core and ask for a LoggerFactory constraint. Users can then import an implicit Slf4jLoggerFactory to satisfy it.

https://github.com/gemini-hlsw/gsp-graphql/blob/6d4223acc817de01c13e32e75091d6f6712835f3/build.sbt#L125

A few motivating reasons:

  1. slf4j recently released a 2.0 and the implications are not yet clear. Dodging the dependency altogether is a good strategy.
  2. There maybe be other log4cats backends in the near future, such as otel4s.
  3. slf4j is not available for Scala.js or Scala Native. Depending on it will force that code to be split when we cross-compile.
milessabin commented 2 years ago

@armanbilge I think log4cats-slf4j should only be a test dependency.

milessabin commented 1 year ago

@armanbilge apropos SLF4J, see #404.

milessabin commented 11 months ago

We're pretty much done! :tada:

I do want to get #258 in as well though.