Closed EmergentBehavior closed 7 years ago
Yeah... We started using it too.. some contributor guidelines will help and maybe some Todos and features complete w.r.t. graphql-js would be good
+1
Thanks @EmergentBehavior for bringing this up 👍🏻
You are right that this area is lacking and requires more attention. (Previously I relied on the TODO list on the README to see how I can contribute but I noticed it's out-of-date currently.)
I can help out with sharing the latest nearest-of-the-nearest-term goals that we definitely need to address
Other longer-term goals
As to the parity of this project vs graphql-js
, it was ported from v0.4.3 of graphql-js
(July 2015 spec, excluding validator
) (specifically commit e556526 ). It's currently behind (latest v0.4.12) but once the package name has been resolved and stable, it'll be easier to get back on track.
But I doubt it'll be a 1-1 port with graphql-js
from there on, we'd have to go by the GraphQL spec releases instead. In other words, we'd have to work on our implementation based on October 2015 spec next.
Cheers!
@sogko For information on unimplemented features as of yet (such as the Validator) is the single source of truth just the spec for GraphQL or do you already have plans you'd like to see done specifically for those features? I'd love to help contribute and just want to make sure that I don't do a lot of work on something in a way different from the plans of this library moving forward.
Also, I know you do a lot of work with this library outside of just this, such as your graphql-go-handler and your Relay specific wrapper for this library. Which are all great things. One thing I found lacking was specifically related to this library (as addressed in the 'Documenation' issue) is to have more examples specifically focusing on basic usage of just this library.
I spent some time with graphql-js after finding graphql-go to define the things I was looking to define before finally coming back here and having the ability to transfer that knowledge into how to do those similar things in Go. Which is great that this could be done, but any examples that get written (including yours), I think would be extremely beneficial if they only used this library to handle the GraphQL pieces. Even if you define it all raw with GraphQL as is and then refactor it using your Relay wrapper for example so at least the understanding of this library is talked about and discussed.
I'm bringing this up not just because of my desire to have seen that but a recent conversation in Gitter (for this repo). I'm referring to this comment from thanhliem89dn specifically (and I share his sentiment, this was my desire as well):
I'm reading todo example from [sogko] https://github.com/sogko/todomvc-relay-go/blob/master/data/schema.go but He used gqlrelay and I just want to use graphql at all
All of these utilities are great to have, but I think a full understanding of this library offers is a better place to start before introducing the other ones.
I got off topic and rambled. I'm sorry.
@sogko Thanks for the update. Am going to submit another PR to update the README
with this information.
@EmergentBehavior that's excellent 👍🏻! Thanks!
@bbuck Thanks for the input, appreciate very much 👍🏻
Yes you are right, documentation is really lacking right now, in this project and others in its ecosystem currently. I think once we nail down the package naming, I'll help and do my part in providing better documentation.
I wrote the graphql-relay-go
and graphql-go-handler
libraries because I was being impatient and wanted to quickly have some form of Relay-compliant server for golang that can actually run lol. I realised that besides graphql-go
, there were bits and pieces missing to get it (i.e. Relay-compliant server) to work.
I have yet to put down my motivations on why I wrote those, but to draw parallels with the GraphQL in JS:
graphql-go
== graphql-js
Server-side implementation of graphqlgraphql-go-handler
== express-graphql
Middleware to handle GraphQL queries through HTTP requests. It parses GET/POST params and passes them into Graphql(), which returns JSON response.
You can choose not to use it, but you will end up writing similar code. As to whether it should be merged with graphql-go
, I think it could possibly be. Or it could remain separate, just like express-graphql
.
Either way, I'm open to merging it based on the community's decision.graphql-relay-go
== graphql-relay-js
This is a library to construct Relay-compliant servers, which has additional specs for pagination, global IDs and those sort of things. Not needed if you chose to build a pure GraphQL server.Some of the other projects that I contributed do use graphql-go
+ graphql-go-handler
+ graphql-relay-go
, but they are specifically Relay applications:
Another project that I wrote used only graphql-go
+ graphql-go-handler
, with graphiql
for the front-end:
golang-graphql-playground
(Query only example, no mutations)I did wrote a couple of posts on Golang + GraphQL + Relay but again, those are heading into the direction of Relay-specific details.
I do see what you mean there about diving deeper into examples pure GraphQL using graphql-go
. Better and in-depth examples on
Thanks again! Cheers!
Most of the vital info seems to be shared in these issues I'm gonna be putting them in the Readme
@chris-ramon @sogko Not critically important, but now that the package and its sister packages are collected under graphql-go
, perhaps we should give the project a logo :). How about this?
If someone else has actual design chops feel free to update/iterate :)
The gopher strikes again haha! Thanks @EmergentBehavior for kicking this off! Yeah, we definitely a logo for our community 👍🏻
For inspirations from other implementations:
graphql-ruby and graphene ones are great. i can help with a front-end website later too once package is a little more stable. Ruby and Python have more elegant base logos though so it's easier to iterate :)
EDIT: I see the contributing guidelines. Still, the ref spec is april 2016
And just a thought for the logo - The python logo looks almost like a G, make it a G. and add an o afterwards.
Keep the dream alive
cc: @logie17
Thanks a lot guys :star2: for taking the time to bring interesting ideas, since https://github.com/graphql-go/graphql/pull/32 was merged; let's close this one issue; and continue the conversation on:
Browsing around it looks like the go-graphql landscape is still in its infancy, however
graphql-go
seems to be one of the more referenced libs out there. I'm looking at using it in my own work and would potentially be happy to start contributing, but it would be helpful to sketch out some a bit more detailed roadmap and near-term goals so potential contributors can see what to focus on.