-
-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
♻️ Release Automation #7271
Comments
Hi guys! As a "user" We are using Parse Server on many different projects, I think there is a few important things that should be taken care of. As mentioned previously, update fatigue is something to consider. When making your decision on a standardized release cycle, I have a few things :
Whatever the new version is, it's super important to know if this major/minor release will be supported and for how long. I would never update a project to the next major if I am not sure for how long it will be supported with patches. Current There should be at lease one LTS per Major. For at least the current and last Major.
Have a nice day! |
Here is a pro / con list as basis for discussion: Phased DeprecationPros:
Cons:
Versioning System (semver)Pros:
Cons:
Release CyclesPros:
Cons:
General NoteMost important for all of the above is that they mitigate upgrade fatigue, because developers don't have to worry doing a patch or minor version upgrade. Which means developers are more likely to upgrade to newer versions, ergo we get more feedback more quickly for more recent versions of Parse Server, which speeds up
We currently block our own gears. We have 2-4 months between releases, presumably the majority of developers is not deploying the master branch, and if, most likely not in production, that creates a feedback lag of presumably half a year(!). |
How much time does it take you to make a release ? |
@davimacedo How long did it usually take to make a Parse Server release? I think the key is to maintain it constantly and require less ad-hoc effort on release. We are already doing that for Parse Server because the changelog is now always up-to-date as it is a requirement since we switched to the new PR template half a year ago. There should be virtually no effort anymore other than a superficial changelog review. |
It is not that much work. Let's say 30 min. Now that we are adding the entries to the changelog in each PR, it should be faster. It is more time consuming when we have relevant changes in the dependencies and we need to release everything bottom up. I'd love to migrate the project to a monorepo with all js projects. |
My expectation is that this should not take longer than 5 minutes (+5 min effort for one reviewer) even without any more sophisticated automation. A release should be exclusively a meta review, without having to review or touch any actual code. @davimacedo If it's fine with you, I'll do the next release with your guidance, this or next week and we'll document any bottlenecks and see what we have to address to get to the 5 mins. And we'll do the versioning already according to semver to finally get this ball rolling. |
Sure. We can do that. |
Here is a practical example of how to do a breaking change going forward. |
@mtrezza in this case, what can be done would be to imement the PR now, but add a config parameter that would default to If the parameters remind Since youre also considering refactoring the server config, I would recommend implementing support for the new structure in current Deprecations are just fine if:
For example, WordPress is dooing an awesome job at this! |
@sadortun How does this differ from the suggestion made in #7292 (comment)? The current plan is to constantly allow the addition of deprecation warnings, then a release has to happen to make these warnings visible to everyone who upgrades. Then these warnings are displayed during one full major release cycle, I'm currently estimating 6 months or 12 months. Developers have (half) a year time to adapt their deployments. Then, on the next major release, the breaking changes are actually coming into effect. That guarantees that deprecation warnings are displayed during at least one major release.
Good point, there is a PR in the works to centralize deprecation warnings. A contributor can easily see which parts of the code are deprecated by looking into the deprecation definitions. |
For future discussion about release automation, we may use something like https://github.com/semantic-release/semantic-release. That would also define the branch structure to use. Still requires to compare the different auto-release approaches available. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
After further looking into various release automators, semantic-release seems to be exactly what we need. It offers a versatile, forward-looking branch structure that is especially useful to better manage breaking changes with pre-release versions. That means we can work on future branches that include breaking changes while still patching existing releases, all in a managed context. I will go ahead and set up an example repo where we can get a feeling for how this could work for Parse Server. @davimacedo I will look out for monorepo support along the way. |
@L3K0V
If you mean release automation, eventually (ideally) yes. After Parse Server, the automated release process will likely be rolled out to other repos. No time frame for Parse Dashboard yet though. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Thanks for opening this issue!
|
Closing this finally. |
New Feature / Enhancement Checklist
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:
A simple release cycle, for example:
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
5.0-beta
master
branch is nowalpha
#76395.0-beta
and fix any bugs before stable release5.0
as "fresh start" (beginning 2022) build: release 5.0 #7851See parse-community/parse-dashboard#1813 as a detailed example for how to implement release automation in an existing repository.
The text was updated successfully, but these errors were encountered: