Move off the release train to a simpler release model#17
Merged
Conversation
Propose retiring Ember's calendar-driven release train (fixed six-week minor cadence, rotating release-manager ceremony, hand-maintained canary/beta/release channels) in favor of an automated, PR-driven model powered by release-plan. Work integrates on `develop`; every merge can release from `main`, with the npm publish gated behind a protected GitHub deployment environment requiring manual approval. Stable releases go through the same gated release-plan publish. SemVer and existing compatibility guarantees are unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
|
PRs merge to `main`, canary builds come off `main`, and the gated release-plan publish runs from `main`. Removes the develop/main split and the "promote develop to main" framing throughout. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reframe: the proposal retains the six-week release schedule and SemVer/ deprecation/major (RFC 830)/LTS policies unchanged. What changes is the branch-and-channel machinery — a single `main`, stable cut from it via release-plan on the existing cadence (gated by a GitHub deployment env), and the published canary/beta channels removed in favor of tracking `main` via git. Updates motivation, channels, deprecation/major/LTS, drawbacks, alternatives, and unresolved questions accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Canary is consumed from git, not an ember-source@canary npm dist-tag; only @beta is a published prerelease tag today. Reframe the prerelease story: publish an `@alpha` dist-tag automatically from `main` (like Embroider's prereleases) while keeping main's git-ref workflow, drop the `@beta` tag, and resolve the former "build artifact consumption" open question. Updates motivation, channels, teaching, drawbacks, alternatives, and unresolved questions to match. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Close the gaps the incremental edits left: - Explain that release-plan collapses a cycle's labeled PRs into a single bump (highest impact wins -> one minor per six weeks, as today), and how the continuous @Alpha relates to the scheduled stable snapshot. - Reconcile majors with RFC 830: the M.10 freeze already gates when a breaking change may merge, so a label-driven major bump only happens in the major window -- not mid-cycle. - Clarify the scheduled cut is triggered by a maintainer or scheduled workflow; note ember-data is now WarpDrive. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Incorporate all inline review feedback: - canary was never a branch; remove canary-branch framing everywhere and the duplicate-the-git-repo section - release-plan is label-driven (breaking/enhancement/bug/documentation/ internal); changelog comes from PR titles; remove changeset "fluff" - we publish from CI already (no "hand-publish"); the cost is maintainer time and bus-factor (Katie/Chris), and release-plan lets any maintainer release - emphasize release-plan handles version+changelog for us - majors aren't manual: breaking label + RFC 830's 12x6-week cadence - drop ember-data mentions; strip em-dash/colon taglines from headings - remove the "main lives in git" statement from the summary Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author
|
Addressed all inline comments in ad52c78 and resolved each thread. Summary:
|
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…aintainer cut, informal approvers - @Alpha publishes nightly from main (not every merge) - beta fully dropped; the keep-beta option is now an alternative, not a TBD - lockstep is timing-based: ember-source/ember-cli release independently on the same six-week date, with no cross-repo coordination - the six-week stable cut is a maintainer merging the release-preview PR - publish approvers are the same active people who release today (informal) - prune the now-decided unresolved questions Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ta cleanup is removal - canary stays exactly as today (main consumed from git); add it explicitly to the channels list and stop implying alpha replaces it - @Alpha is a new published npm prerelease of main; release-plan handles the version scheme, nothing special - ember-try/beta consumers remove their @beta scenarios (canary unaffected) - Unresolved questions: none outstanding; only implementation remains Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Conversational tone (today/folks, underscore emphasis, parentheticals), no em-dashes, lighter bold lead-ins. Content unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- remove redundant 'long-lived branch' phrasing; main is always that - just state release-plan's labels, no preamble - drop the soak-stage, labeling-discipline, publish-authority, and tooling-dependency drawbacks (non-issues / we own release-plan) - remove the Steering bullet and the steering team; steering doesn't decide this - scope removed backporting to the beta/release branches; keep LTS backports when needed - note consumers won't notice a difference Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Drop superlatives and sales phrasing (biggest win, trivially, turnkey, well loved, the important bit, everyone else already trusts, from anywhere, tribal knowledge) in favor of plain description. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
e662e01
into
NullVoxPopuli:nvp/move-off-the-release-train-to-simpler-release-model
1 check passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ember's "release train" today bundles two separate things: a six-week release cadence, and a multi-channel promotion pipeline (
canary→beta→releasebranches, cut and promoted by a rotating release manager working a manual checklist each cycle).This RFC keeps the cadence and replaces the pipeline. The six-week beat is the part that works and stays exactly as it is; what goes away is the multi-branch channel machinery and the hand-run ceremony.
The shape:
main— nocanary/beta/releasebranches, none of the cherry-pick/back-merge bookkeeping.mainbyrelease-planon the same six-week schedule. Thenpm publishruns inside a job bound to a protected GitHub deployment environment — a required reviewer approves the deployment; that single click is the entire residual ceremony (no manual version bump, changelog, ornpm publish).@alpha, auto-published frommainthe way Embroider published its prereleases. Sinceember-sourcelives in git,mainalso stays directly consumable as a git ref (exactly how canary is consumed today).@betagoes away; its consumers move to@alpha.Explicitly unchanged: SemVer, the six-week cadence, the deprecation policy, LTS, and the major-version process of RFC emberjs#830. Across a cycle
release-plancollapses labeled PRs into a single bump (highest impact wins → one minor per six weeks, as today), and because RFC emberjs#830'sM.10freeze already controls when a breaking change may merge, a label-driven major bump only ever lands in the major window — not mid-cycle.The RFC also covers lockstep across
ember-source/ember-cli/WarpDrive, drawbacks (the@beta→@alphamigration forember-try/addon CI, the lost soak stage, labeling discipline, concentrated publish authority,release-plandependency), alternatives (status quo, keeping@betaas a second prerelease stream,changesets, fully continuous releases), and unresolved questions (@alphacadence, lockstep, approver group).Rendered: text/0000-move-off-the-release-train-to-simpler-release-model.md
🤖 Generated with Claude Code