graphjin icon indicating copy to clipboard operation
graphjin copied to clipboard

Compare to hasura and other alternatives

Open baskin opened this issue 4 years ago • 7 comments

Hi Team. Stumbled across this project while looking for a good "automatic-api" projects. Surely you know about similar offering from Hasura -- https://github.com/hasura/graphql-engine, which is at a much later stage in its lifecyle as compared to super-graph.

Curious as to how you think this project is currently different and how you intend to evolve it differently? It would be helpful to document that.

baskin avatar Mar 01 '20 15:03 baskin

I know of the project, it seems like a solid project by a smart team. In my case I prefer GO over Haskell as its easier for me to evolve the project to my needs also with the huge and fast growing collection of cloud related projects and libraries (Kubernetes, Nats, Hashicorp) etc all built in GO it will be easier to leverage all of that and accelerate integrations and all kinds of cool features going ahead.

I'm not very familiar with Hasura but from taking a look at their documentation I would not say they are much further behind or ahead of Super Graph. For example Super Graph supports opaque cursor pagination which is great for thing like infinite scroll on large tables Hasura does not have this, on the other hand they have support for subscriptions which we don't yet support since I didn't need it.

Super Graph automatically learns relationships from your database and does not need you to configure anything while from what I understand relationships need to be defined in Hasura. Super Graph supports role and attribute based access control while they only have role based. Super Graph can also read and decode Ruby-on-Rails cookies as well are work with session stores allowing you to run it alongside an existing Rails app as a high performance GraphQL API.

Software is always unique so it's hard to compare with another project (I have a lot of respect for Hasura and the team). There are too many features and interesting behaviours that Super Graph has which are unique to it for example you can creation relationships between array columns and another table, query json columns like you would a separate table, a simple well documented yaml config file, secrets management with Google and AWS KMS, database seeding script in javascript, a highly flexible allow list based workflow, etc.

Also since Super Graph is a GO project work is underway to expose it as library so you can leverage it within your own GO services and get a much higher level of flexibility. Super Graph has detailed documentation including it's internal codebase and GO is an easy and popular language this makes contributing to Super Graph really easy and fun.

Finally we're not a startup so we have no need to charge or hold back any features everything is developed open source and free.

dosco avatar Mar 03 '20 13:03 dosco

Google has not approved Go for use in fuchsia https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/docs/project/policy/programming_languages.md#Rust and I think It would have a negative effect on Go in future.

ansarizafar avatar Mar 03 '20 14:03 ansarizafar

I had never heard of fuchsia before now from looking now I see it's an OS of some type. I'm sure that specific team within Google has its reasons. For example they have not approved Java either but I would hardly say an internal decision by a relatively unknown, unreleased product will have negative effects on Java. GO is one of the fastest growing languages out there and extensively adopted by some of the largest Startups in the valley. Also it's heavily used within Google and used to build some of the fastest growing open source projects like Kubernetes.

dosco avatar Mar 03 '20 17:03 dosco

fuchsia is the next generation OS from Google. fuchsia will work everywhere from desktop to smartwatch and will replace Android and Chrome OS.

ansarizafar avatar Mar 04 '20 13:03 ansarizafar

Hi all, as a primer I'm new both to Go and GraphQL, but maybe I didn't catch it in the right way but to me SuperGraph is a really handy tool, a sort of library for a developer to interface a database with GraphQL, forget about SQL and build, interacting with the tool, whatever he likes, API, web sites, servers, whatever: Hasura is a server itself, and yout put it in the middle of a piece of software and a database. The result is more or less the same, but to me the approach is completely different... Am I on the wrong track or what? Thanks

emoriver avatar May 08 '20 06:05 emoriver

@emoriver You are absolutely correct. The one thing I will add is that Super Graph works in two modes. One, as a library like you described and two, as standalone server where you don't have to write any code. Use whichever works best for you or both :)

dosco avatar May 08 '20 19:05 dosco

Well, be sure I'll give a spin... to both modes! :-)

emoriver avatar May 08 '20 20:05 emoriver