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

docs: add versioning system to contribution guide #7294

Merged
merged 7 commits into from
Oct 31, 2021

Conversation

mtrezza
Copy link
Member

@mtrezza mtrezza commented Mar 23, 2021

New Pull Request Checklist

Issue Description

Parse Server does not declare to follow an official versioning system.

Related issue: #7271

Approach

Declares semver with a flavor of calver as the official versioning system for Parse Server. The goal is to start the next release of Parse Server with 5.0.0 using the new versioning system.

See the file change:

  • Major version increases yearly; prepares us for introduction of LTS without any changes in the versioning system; we may try out LTS in the future and see how much work it really is.
  • Mentions pre-release-labels; as we get to a more frequent, regular release cycle, we may add release candidates as a "soft" start for new major releases, like 3 months before the end of the year so we can weed out bugs and create a more stable major release (which includes breaking changes).
  • Version numbers are called major, feature, fix to make their purpose more clear and already considers possible branch names, but may well be renamed to major, minor, patch as we go along.

TODOs before merging

(none)

@mtrezza mtrezza changed the title Added versioning Added versioning system Mar 23, 2021
@mtrezza mtrezza marked this pull request as draft March 23, 2021 18:49
@codecov
Copy link

codecov bot commented Mar 23, 2021

Codecov Report

Merging #7294 (32b8274) into alpha (090350a) will decrease coverage by 0.09%.
The diff coverage is n/a.

❗ Current head 32b8274 differs from pull request most recent head 73a2e2e. Consider uploading reports for the commit 73a2e2e to get more accurate results
Impacted file tree graph

@@            Coverage Diff             @@
##            alpha    #7294      +/-   ##
==========================================
- Coverage   93.99%   93.90%   -0.10%     
==========================================
  Files         181      181              
  Lines       13382    13209     -173     
==========================================
- Hits        12579    12404     -175     
- Misses        803      805       +2     
Impacted Files Coverage Δ
src/GraphQL/transformers/mutation.js 93.47% <0.00%> (-0.87%) ⬇️
src/GraphQL/loaders/parseClassTypes.js 94.23% <0.00%> (-0.65%) ⬇️
src/Routers/UsersRouter.js 93.78% <0.00%> (-0.60%) ⬇️
src/Security/CheckGroups/CheckGroupServerConfig.js 95.23% <0.00%> (-0.42%) ⬇️
src/triggers.js 94.95% <0.00%> (-0.41%) ⬇️
src/Controllers/LiveQueryController.js 96.42% <0.00%> (-0.35%) ⬇️
src/LiveQuery/ParseWebSocketServer.js 93.10% <0.00%> (-0.23%) ⬇️
src/GraphQL/ParseGraphQLSchema.js 96.96% <0.00%> (-0.23%) ⬇️
src/middlewares.js 97.18% <0.00%> (-0.19%) ⬇️
src/LiveQuery/ParseLiveQueryServer.js 95.50% <0.00%> (-0.19%) ⬇️
... and 22 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 87e65d8...73a2e2e. Read the comment docs.

@mtrezza mtrezza marked this pull request as ready for review March 24, 2021 03:47
@ghost
Copy link

ghost commented Mar 24, 2021

Warnings
⚠️ Please add a changelog entry for your changes.

Generated by 🚫 dangerJS

@mtrezza
Copy link
Member Author

mtrezza commented Mar 24, 2021

@sadortun what do you think about this versioning system?

CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
@mtrezza
Copy link
Member Author

mtrezza commented Mar 27, 2021

@davimacedo, @dplewis, @TomWFox May I ask for your review of this?

Once we have used and refined this for some time, we would eventually apply this to all Parse Platform repos, I estimate in 2022.

This is part of a larger roadmap as described in #7271.

@mtrezza mtrezza mentioned this pull request Mar 27, 2021
18 tasks
Copy link
Contributor

@TomWFox TomWFox left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR, I have queries...

CONTRIBUTING.md Outdated Show resolved Hide resolved
@mtrezza mtrezza force-pushed the add-versioning-system branch from 84d06d1 to 6224efd Compare April 9, 2021 13:20
Copy link
Contributor

@TomWFox TomWFox left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I must admit, I find this quite difficult to evaluate, so many angles to consider and plenty of unknowns. I do really appreciate your forward thinking.

I'm concerned that doing a release at the beginning of every year may prove challenging. It's important that voluntary contributors contribute when they can & want to. I don't think we should expect team members to put together a major release on a fixed schedule - with changes being required to introduce breaking changes. We won't be able to rely on the original contributor to come back after a year to make the required changes.

If we had a part/full time paid contributor with agreed responsibilities it would be a different story.

I'm not sure I can support this unless you or other contributors are happy to take on the responsibility to put together the major releases.

@mtrezza
Copy link
Member Author

mtrezza commented Apr 15, 2021

I'm concerned that doing a release at the beginning of every year may prove challenging.

That's a non-issue. All this says is that we increment the major version with the first release of a year, whenever that is. This is not more or less work.

I don't think we should expect team members to put together a major release on a fixed schedule

I think you are overestimating the effort it takes to do a release, and it doesn't have to be Jan 1st. We are going towards release automation and will open a pre-release distribution channel, so making a release should be a 5-10 min effort. We need to step up release frequency anyway, so there will likely need to be a release in Jan or Feb of the year anyway to fix a vulnerability.

I read your concern as "we cannot commit to find someone spending hours to do a release every year on Jan 1st". That I would agree with, but that's not part of this policy.

It is irrelevant whether we increase the major version every year or not. It's not more or less work. The only benefit this brings is that we set up a versioning system that allows us to experiment with LTS without having to make another adaption to the versioning system.

@TomWFox
Copy link
Contributor

TomWFox commented May 1, 2021

That's a non-issue. All this says is that we increment the major version with the first release of a year, whenever that is. This is not more or less work.

Due to the deprecation policy a major release will be more work, I thought we established that when discussing the introduction of the policy? This means that the first release of the year will require more work and unless we want to go months without any releases then it will be required within Jan or feb.

I think you are overestimating the effort it takes to do a release, and it doesn't have to be Jan 1st. We are going towards release automation and will open a pre-release distribution channel, so making a release should be a 5-10 min effort. We need to step up release frequency anyway, so there will likely need to be a release in Jan or Feb of the year anyway to fix a vulnerability.

Having done releases before I completely understand the effort. To be clear I wouldn't see an issue with this pre-deprecation policy.

I don't have a problem with this policy per se or the deprecation policy per se; it's both together which I see as being incompatible with a relatively small number of voluntary contributors.

@mtrezza
Copy link
Member Author

mtrezza commented May 1, 2021

My suggestion is: let's aim high and fail fast. We are both guessing estimates for an automated release system that doesn't exist yet. Let's dare to be ambitious and if there is an issue, we can address that specifically and practically.

@TomWFox
Copy link
Contributor

TomWFox commented May 1, 2021

We can take that approach. With that being the case, I think it would be sensible to add a note to this policy (and in reflection the deprecation policy) that it's aspirational, we don't know if we can adhere to it fully and it's likely to see significant changes as we work out the practicalities.

Obviously there are no warranties with this project as set out by the license but I think it would help to set expectations for both people using the project & us contributors 🙂

@mtrezza
Copy link
Member Author

mtrezza commented May 1, 2021

I suggest we continue to pursue a non-ambivalent, declared and enforceable policy. If we can't fulfill it, then we adapt it. Adding an aspirational note already puts this into a psychological "likely we can't do it" / "it's not really important" context, which is predestined to lower compliance.

This is part of a larger roadmap, and to make sure we reflect on any changes in effort, we can formally establish some review milestones throughout 2021 and 2022, which is during and after the implementation of the new automated release system, how about that?

@TomWFox
Copy link
Contributor

TomWFox commented May 1, 2021

I disagree with your framing. I believe that such a note would just be honest, it's much more of a "we're aiming to do this but can't be certain". I would much rather have 'lower compliance' than risk loosing a valued contributor or give people who use the project the wrong idea.

Really, it's similar to marking a feature as 'experimenal' or in beta.

Reviewing the policy would be a good idea but I don't see it as a substitute to being clear & open about its aspirational nature.

@mtrezza
Copy link
Member Author

mtrezza commented May 1, 2021

Alright, let's add this then. I'm fine with adding a note that it's a new policy that we're trying out, and once we see that we can reliably fulfill it, we can remove that note. We should be careful about the wording though to be able to reference the policy in reviews. Do you have a suggestion?

@sadortun
Copy link
Contributor

sadortun commented May 1, 2021

Do you have a suggestion?

Just an idea:

We are commited to respect this release cycle and deadlines to the best of our abilities. That said, this project is supported[sponsors url] by the community and some delays may be possible. If you're interested in helping us, please consider [donation link].

@mtrezza
Copy link
Member Author

mtrezza commented May 1, 2021

We are commited to respect this release cycle and deadlines to the best of our abilities.

Maybe that part could do. I'm not sure which deadlines are meant specifically, I don't think there are any, so maybe leave that out. Donation seems off-topic in this matter and lacking causality, nor have we identified any issues so far. Asking for help to solve an issue that doesn't exist doesn't make much sense.

@TomWFox are you ok with this line?

@mtrezza mtrezza force-pushed the add-versioning-system branch from 36bb09e to 32b8274 Compare May 2, 2021 13:17
@mtrezza
Copy link
Member Author

mtrezza commented May 2, 2021

@TomWFox I tried to add a note, but I don't want to taint the whole versioning chapter as "aspirational", including basic aspects like committing to semver. Do you have a suggestion about what part of the versioning system specifically you think we may not be able to achieve?

@TomWFox
Copy link
Contributor

TomWFox commented May 6, 2021

@TomWFox are you ok with this line?

I think that almost sends the opposite message that I was thinking of. To me it comes across as more of a reinforcement. How about this...

"Please be aware that whilst we endeavour to respect this release cycle, it is aspirational. As a project powered by voluntary contributions we may not always be able to, or indeed want to, adhere to all aspects of the policy."

Do you have a suggestion about what part of the versioning system specifically you think we may not be able to achieve?

It really comes down to this line...

  • The major version increments with the first release of every year and may include changes that are not backwards compatible.

So perhaps add a note above or below this?

@mtrezza mtrezza marked this pull request as draft July 27, 2021 00:43
@mtrezza
Copy link
Member Author

mtrezza commented Jul 27, 2021

Converted to draft, because the exact versioning system, release labels and release cycles will be mostly determined according to the technical capabilities of the automated release framework.

@mtrezza
Copy link
Member Author

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!

@mtrezza mtrezza marked this pull request as ready for review October 31, 2021 20:38
@mtrezza mtrezza changed the title Added versioning system docs: add versioning system to contribution guide Oct 31, 2021
@parse-github-assistant
Copy link

Thanks for opening this pull request!

  • 🎉 We are excited about your hands-on contribution!

@mtrezza mtrezza merged commit 42ecf6c into parse-community:alpha Oct 31, 2021
@mtrezza mtrezza deleted the add-versioning-system branch October 31, 2021 20:57
@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 5.0.0-alpha.5

@parseplatformorg parseplatformorg added the state:released-alpha Released as alpha version label Nov 1, 2021
@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 5.0.0-beta.1

@parseplatformorg parseplatformorg added the state:released-beta Released as beta version label Nov 1, 2021
@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 5.0.0

@parseplatformorg parseplatformorg added the state:released Released as stable version label Mar 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
state:released Released as stable version state:released-alpha Released as alpha version state:released-beta Released as beta version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants