Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GraphQL with graphql-helix, graphql-ws and envelop #7394

Closed
wants to merge 4 commits into from

Conversation

n1ru4l
Copy link

@n1ru4l n1ru4l commented May 21, 2021

Hi from @the-guild-org !

We’ve recently built and open-sourced a new plugin system for GraphQL that we think would be a huge improvement for Parse developers - https://github.com/dotansimha/envelop

The goal of the library was to have a tool to handle GraphQL execution flow, allowing developers to develop, share and extend the behavior of their server implementation, in a standard, simple way. Basically the missing GraphQL execution plugin system.

Here are some possible benefits for Parse developers from the Envelop migration:

  • Performance - Envelop is up to date and more performant and can use graphql-helix instead of the aging expressGraphQL and Apollo Server Express. You could also improve performance by easily adding graphql-jit support or easily cache any GraphQL phase.
  • Customization - users could customize their Parse GraphQL setup without hurting the initial easy experience
  • Plugins - Any Parse user could get easy access to all the plugins in the ecosystem if they wish
  • Better GraphQL Subscription implementation and support for the new graphql-ws library and protocol and not only the old and unmaintained subscriptions-transport-ws and graphql-subscriptions libraries, and even Subscriptions over HTTP SSE thanks to graphql-helix
  • Easily support new GraphQL features support like @defer and @stream and our new live queries implementation

We would love to hear your thoughts and feedback and see if any of the points above might be somehow helpful!

This PR is a start, we saw a couple of other things that could be updated and improved and we would love to support the Parse community better around GraphQL and would love to collaborate more in this area!


TODOs before merging

  • Add test cases
  • Add entry to changelog
  • Add changes to documentation (guides, repository pages, in-code descriptions)
  • Add security check
  • Add new Parse Error codes to Parse JS SDK
  • ...

@n1ru4l n1ru4l changed the title Graphql envelop GraphQL with graphql-helix, graphql-ws and envelop May 21, 2021
@mtrezza
Copy link
Member

mtrezza commented May 21, 2021

Thanks for opening this PR.

This seems to be in an early stage of discussion about fundamental changes in Parse Server. Such Discussions are better suited in our Community Forum while we expect feature requests on GitHub to be in a more advanced stage. After a strategic / conceptual discussion in the Community Forum, a GitHub issue is created to describe the feature, which gives more exposure and allows more people to join the discussion. The GitHub issue discussion should yield a concrete approach for implementation, which subsequently results in a PR that attempts that implementation.

@n1ru4l
Copy link
Author

n1ru4l commented May 21, 2021

Hey @mtrezza, please interpret this pull request more as a reference to look at and talk about instead of a final solution. We are not expecting this to be merged anytime soon, that is why this is only a draft pull request. I was curious how hard or easy it is to replace the existing graphql server core without causing any breaking issues while adding a lot of benefits!

We are happy to start a discussion about the benefits, drawbacks, and concerns of moving this forward!

@mtrezza
Copy link
Member

mtrezza commented May 21, 2021

Sure, thanks again for this PR. Conceptual discussions are preferably started in the forum and then trickle into GitHub. This is primarily to ensure visibility and to prevent the discussion to be spread over multiple places. We want to avoid conceptual discussions (high level) to take place in a PR thread (low level).

Please feel free to open a thread in the forum and reference this PR as an experimental example (PoC?). I am sure this topic will start an engaging discussion. I personally think GraphQL could play a much greater role in Parse Server, so I am happy to see any initiative in that regard.

@Urigo
Copy link

Urigo commented May 24, 2021

Thank you for the comment @mtrezza !

We've opened a discussion about that change here according to your suggestion.

We opened this as draft PR just because we wanted see how it would look in code.
I hope we could leave it open just as a reference and to enrich the discussion, but we are not expecting anyone to merge it soon before a proper discussion.

Thanks and looking forward to discuss GraphQL in Parse in general!

@mtrezza
Copy link
Member

mtrezza commented May 24, 2021

@Urigo Sure, let's keep this open in Draft for now. We do not have a PR clean-up process at the moment, so it won't be auto-closed due to inactivity.

@mtrezza
Copy link
Member

mtrezza commented Sep 3, 2021

⚠️ Important change for merging PRs from Parse Server 5.0 onwards!

We are planning to release the first beta version of Parse Server 5.0 in October 2021.

If a PR contains a breaking change and is not merged before the beta release of Parse Server 5.0, it cannot be merged until the end of 2022. Instead it has to follow the Deprecation Policy and phase-in breaking changes to be merged during the course of 2022.

One of the most voiced community feedbacks was the demand for predictability in breaking changes to make it easy to upgrade Parse Server. We have made a first step towards this by introducing the Deprecation Policy in February 2021 that assists to phase-in breaking changes, giving developers time to adapt. We will follow-up with the introduction of Release Automation and a branch model that will allow breaking changes only with a new major release, scheduled for the beginning of each calendar year.

We understand that some PRs are a long time in the making and we very much appreciate your contribution. We want to make it easy for PRs that contain a breaking change and were created before the introduction of the Deprecation Policy. These PRs can be merged with a breaking change without being phased-in before the beta release of Parse Server 5.0. We are making this exception because we appreciate that this is a time of transition that requires additional effort from contributors to adapt. We encourage everyone to prepare their PRs until the end of September and account for review time and possible adaptions.

If a PR contains a breaking change and should be merged before the beta release, please mention @parse-community/server-maintenance and we will coordinate with you to merge the PR.

Thanks for your contribution and support during this transition to Parse Server release automation!

@Moumouls
Copy link
Member

Close since Yoga is now implemented

@Moumouls Moumouls closed this Jun 10, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants