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

Road to Stability #3036

Closed
13 tasks done
q9f opened this issue Aug 30, 2021 · 8 comments · Fixed by #3587
Closed
13 tasks done

Road to Stability #3036

q9f opened this issue Aug 30, 2021 · 8 comments · Fixed by #3587
Labels
meta-discussion Indicates a topic that requires input from various developers. prio-medium Resolve this some time soon (tm).

Comments

@q9f
Copy link
Contributor

q9f commented Aug 30, 2021

We currently to nightly "unstable" releases and biweekly "alpha" releases, however, at this early stage of the project, we do not have any strategies towards stabilizing the code and the releases.

I use this meta ticket to outline some strategies to revisit in future in case we want to move into a "beta" or "stable" phase.

Useful resouce:

The key element is the release checklist (we can already tick two boxes):

Release components checklist for teams:

  • dedicate a team member to commit to releases (release manager, release coordinator) --> @q9f?
  • commit to a strict versioning scheme (semver, calver, etc.) --> semver (lerna)
  • enable concurrent development that reflect different expectations of release quality (stable, beta, nightly, etc.)
  • conduct pre-release testing (release candidates, CI, QA)
  • distribute packages (binaries, signatures, checksums) --> NPM/Docker

The hackmd above also outlines two different release strategies (Flow vs. Maturity). I always give the example that Geth uses the "Flow" strategy and Parity uses used "Maturity." I'm personally a big fan of the latter.

Current State of Lodestar https://github.com/ChainSafe/lodestar/releases

  • has development branches
    • master (pull requests default to master)
  • has releases (23)
    • v0.29.1 on ⚠️ master
    • v0.29.0 on ⚠️ master
    • ...
  • ⚠️ has release branches
    • ⚠️ no release branch for current track (0.29 ?)
@q9f q9f pinned this issue Sep 14, 2021
@q9f q9f added meta-discussion Indicates a topic that requires input from various developers. prio-medium Resolve this some time soon (tm). q5-substantial and removed q5-substantial labels Sep 14, 2021
@dapplion
Copy link
Contributor

Spoke with Afri and got a good plan that should be relatively easy to follow tho it requires non-trivial changes to our CI.

This diagram explains the process for the first release going into this flow (v0.33.0 release), and a regular release already being into this flow (v0.34.0 release)

Screenshot from 2021-11-23 19-03-34

This git flow allows us to:

  • Branch a potential release into a "candidate" stage while we test for 3 or more days
  • Commit bug fixes exclusively to that release candidate, and preserve separation from master such that we can keep merging unstable PRs to master
  • Easily promote that commit to stable release

Changes to do (at least)

  • CI must not trigger release on package.json bump, but on a tag
  • Bump master to the next version when creating a release candidate

@twoeths
Copy link
Contributor

twoeths commented Nov 24, 2021

this looks great to me, once we create a branch for a release we should have docker image for that release and assign someone (or the release manager?) to deploy/test it for 3-4 days before it becomes stable.

@g11tech
Copy link
Contributor

g11tech commented Nov 24, 2021

lgtm OK 👍

@dapplion
Copy link
Contributor

dapplion commented Dec 10, 2021

v0.33.0 todo

@philknows
Copy link
Member

I think we're ready to close this epic unless there are any other outstanding issues with the release process @dapplion .

@dapplion
Copy link
Contributor

dapplion commented Jan 7, 2022

I think we're ready to close this epic unless there are any other outstanding issues with the release process @dapplion .

Yes ready to be closed. However I think we should persist this information somewhere, any ideas?

@philknows
Copy link
Member

I think we're ready to close this epic unless there are any other outstanding issues with the release process @dapplion .

Yes ready to be closed. However I think we should persist this information somewhere, any ideas?

Maybe a releases.md in the main directory?

@q9f
Copy link
Contributor Author

q9f commented Jan 25, 2022

🎉

@dapplion dapplion unpinned this issue Jan 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta-discussion Indicates a topic that requires input from various developers. prio-medium Resolve this some time soon (tm).
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants