parse-community / parse-server

Parse Server for Node.js / Express
https://parseplatform.org
Apache License 2.0
20.71k stars 4.76k forks source link

Add experimental features policy #8016

Open mtrezza opened 2 years ago

mtrezza commented 2 years ago

New Feature / Enhancement Checklist

Current Limitation

Parse Server does not have a concept for "experimental" features. In the past, some features were in some way or another indicated as being experimental. That practice has been abandoned with the reform of Parse Platform's code management in 2020/2021.

The purpose of that reform was to introduce more predictability and transparency for developers, which was one of the top concerns voiced within the developer community at that time. Some results of that reform were policies like fixed release cycles with pre-releases, deprecation policy to avoid braking changes and clearer pull request classification and changelog semantics.

In that context, the loose declaration of features as "experimental" brought several challenges in the past:

Feature / Enhancement Description

Evaluate a potential introduction of experimental features through a comprehensive policy that addresses the issues experienced in the past.

Example Use Case

Alternatives / Workarounds

Status quo: expect a feature to be - in best conscience - production ready for it to be merged. That shifts more responsibility for testing and quality to the original contributor to get their PR merged.

parse-github-assistant[bot] commented 2 years ago

Thanks for opening this issue!

dblythy commented 2 years ago

Thanks for the detailed documentation here - I guess the concern is certain newer features might be unstable and have impacts not covered by code coverage, and a lot of those bugs won't be caught until it's rolled out. Maybe that's expected with new features though that they are going to become more stable though maturity.

mtrezza commented 2 years ago

I think if we can come up with a policy that works, we can add experimental features to the codebase. It's just that the examples above show that an "experimental" stamp is not a blank check to get something merged. There needs to be a defined barrier of entry for new code (currently that is "production ready"), clarity for developers and a plan how and when to bring a feature out of experimental state.

dblythy commented 2 years ago

Regardless of whether a feature is "experimental" or not, open source depends on users finding bugs and vulnerabilities and then reporting and/or contributing back to the project. My expectation would be that an "experimental" tag would mean that bugs are more likely to occur and the feature needs community support / polish to move into a ready state.

mtrezza commented 2 years ago

I don't think anyone is doubting that. The point is that the challenges above are very real and need to be addressed before we add any experimental feature.

Please feel free to make a proposal for each of the points to kickstart the discussion.