Description
New Feature / Enhancement Checklist
- I am not disclosing a vulnerability.
- I am not just asking a question.
- I have searched through existing issues.
TLDR
The goal is to have predictable, frequent, immediate, up-to-date releases of Parse Server with a high degree of automation by mid / end of 2021.
Current Limitation
Parse Server has no fixed release cycles.
Feature / Enhancement Description
Introduce a fixed release cycle which helps developers, contributors and repo managers to better plan.
This requires the introduction of a versioning system. Ideally, we go with semver:
- Breaking change, significant feature additions, UI redesign be a major increment.
- Feature additions be a minor increment.
- Bug fixes be a patch increment.
A simple release cycle, for example:
- A major release every 6 months (to make breaking changes that have been announced in at least the previous major release).
- A minor release every month (to release new features, improvements)
- A patch release every month (may be merged with the minor release) or immediately if the fix is at least a bug of severity S2
I expect that in the process we can automate some of the release tasks, so that it becomes less work to actually do a release and we can drive down the times between minor and patch releases.
Long Term Support (LTS)
LTS means that certain versions do not receive breaking changes but only bug fixes or minor compatibility changes that are not breaking. Once a version goes into LTS, a developer can update to newer patched versions without having to worry about significant or breaking changes, while knowing that the LTS version keeps receiving the latest security fixes. It basically decouples feature changes from security fixes.
Maintaining multiple LTS versions significantly increases resource requirements and may therefore require more extensive considerations. To follow a step-by-step approach it makes sense to keep LTS out of scope for this discussion. Since LTS depends on release cycles, I suggest to first finish this issue with a satisfying level of automation and based on that experience, open the LTS discussion with more insight at a later stage.
Related issues:
Roadmap
- Introduce bug severity levels to classify severe bug fix for patch release 💬 Update of issue labels #6984
- Add changelog entry with every PR to reduce release effort Improve issue templates & add PR template #7051
- Introduce versioning system docs: add versioning system to contribution guide #7294
- Introduce centralized deprecation mechanism Add centralized deprecation #7302
- Introduce deprecation policy Add Phased Deprecation Policy #7198
- Introduce bot to enforce PR syntax compliance Add issue bot to assist contributors #7522
- Add conventional commit docs and bot enforcement docs: add angular commit #7567
- Inform contributors of open PRs to merge before
5.0-beta
- Introduce new branch system ⚠️
master
branch is nowalpha
#7639 - Automate release process to reduce effort from ~30-60mins to <5 mins
- Experiment with Long-Term-Support --> ongoing with LTS for 4.x releases
- Feature freeze
5.0-beta
and fix any bugs before stable release - Introduce release cycle policy docs: add versioning system to contribution guide #7294
- Release
5.0
as "fresh start" (beginning 2022) build: release 5.0 #7851 - Advertise new release cycle to community to get more deployments onto the release train
See parse-community/parse-dashboard#1813 as a detailed example for how to implement release automation in an existing repository.