GraphQL got a new maintainer


#1

Some years ago there was an unfinished GraphQL implementation. The project was on hold for the last few years. Recently (officially 2 weeks ago) I took over the maintenance to continue the development. The git repository has moved: https://github.com/caraus-ecms/graphql. It is still unfinised and work-in-progress (very well usable in basic cases, though), but now under active development.

I don’t have big plans. I’m regulary working on the library and implementing missing features step by step. In the last few days I was working on the pretty-printer for GraphQL queries.


#2

Great news! I like to see more effort on the GraphQL side in Haskell :slightly_smiling_face:

It looks like there is another GraphQL Haskell library:

Would it be a good idea to collaborate effort over a single library? I don’t think that the Haskell community needs more competing libraries for one more domain. But I also understand that different authors have different views on how the library should be implemented. And collaboration can be more exhausting than working on a project individually.


#3

Yes, I know about Morpheus. And I still think both libraries are pretty different. Morpheus provides mappings between the type systems of Haskell and GraphQL, graphql allows to write “raw” GraphQL without relying on metaprogramming. And Morpheus isn’t the first effort to create such a library, there was also graphql-api.

To me the difference seems to be similar as between Hasql and Esqueleto for SQL, between Scotty and Servant for JSON-APIs. Yes, GraphQL has a type system, but it is very flexible and dynamic by its nature. If you think of SQL: yes, SQL has types too, and yes, you can represent SQL tables as Haskell types and it will work for the most cases, but fail for the complex ones.

That said I would be glad to collaborate with Morpheus’ author. There is a lot of stuff that is common for both libraries, like GraphQL parser (both use even the same parser combinators, megaparsec) pretty printer and probably other things, that can be separated into another package and used independently (though I haven’t looked whether Morpheus’ parser can be easely separated from the rest of the library). Some time ago I thought to open an issue and ask, what we can do to combine the efforts, but graphql already had almost finised parser, so I wasn’t sure what to do and left it as is for now. Probably it would still make sense to discuss this…


#4

@belka Thanks for the clarification of library differences! Sometimes in Haskell it’s hard to evaluate libraries to choose which one to use. Your explanation makes sense to me, and I understand why it’s challenging to merge these two libraries.