Blog: Evolving the Node.js Release Schedule#8631
Blog: Evolving the Node.js Release Schedule#8631UlisesGascon wants to merge 21 commits intonodejs:mainfrom
Conversation
- Add "About the Alpha Channel" section explaining: - Target audience (library authors, CI pipelines) - Expectations (no security patches, API may change) - Rationale (feedback loop + V8 updates) - ABI stability noted as TBD - Simplify schedule phases: Alpha → Current → LTS (29 months) - Remove Active LTS / Maintenance distinction - Add Ubuntu release cycle comparison for familiarity - Clean up v26/v27 timelines (remove Maintenance milestone)
- Add comprehensive 10-year schedule table (v27-v36) with Alpha, Release, LTS, and End of Life dates - Clarify that Alpha channel uses only nightly builds (no formal alpha releases, reducing releaser workload) - Link to nodejs.org/download/nightly for early testing - Reorder Timeline section: v26 → v27 → 10-year table
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
👋 Codeowner Review RequestThe following codeowners have been identified for the changed files: Team reviewers: @nodejs/releasers @nodejs/nodejs-website Please review the changes when you have a chance. Thank you! 🙏 |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8631 +/- ##
==========================================
+ Coverage 75.01% 75.15% +0.14%
==========================================
Files 103 104 +1
Lines 9068 9103 +35
Branches 315 314 -1
==========================================
+ Hits 6802 6841 +39
+ Misses 2264 2260 -4
Partials 2 2 ☔ View full report in Codecov by Sentry. |
| @@ -0,0 +1,114 @@ | |||
| --- | |||
| date: '2026-04-01T00:00:00.000Z' | |||
There was a problem hiding this comment.
This is just a placeholder, no idea when makes sense to publish it.
There was a problem hiding this comment.
Let's align it with Kylie and Robin. We should create an official tweet using Node.js account along with it.
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
RafaelGSS
left a comment
There was a problem hiding this comment.
Despite those changes, I think we need to mention that it's up to the release team to define what the rules will be to ship semver-major commits in alpha versions.
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
Co-authored-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com> Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
| - **One major release per year** (April), with LTS promotion in October | ||
| - **Every release becomes LTS**. No more odd/even distinction. | ||
| - **Alpha channel replaces odd-numbered releases** for early testing (for librairies) | ||
| - **Version numbers align with years**: 27.0.0 in 2027, 28.0.0 in 2028 |
There was a problem hiding this comment.
It's a nice coincidence, but not sure this is worth stating here; it's not a stated objective or an explicit commitment of the new release plan.
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Show resolved
Hide resolved
Co-authored-by: Filip Skokan <panva.ip@gmail.com> Signed-off-by: Ulises Gascón <ulisesgascongonzalez@gmail.com>
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
Co-Authored-By: Sebastian Beltran <103585995+bjohansebas@users.noreply.github.com>
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Show resolved
Hide resolved
Co-authored-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com> Signed-off-by: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Co-authored-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com> Signed-off-by: Ulises Gascón <ulisesgascongonzalez@gmail.com>
RafaelGSS
left a comment
There was a problem hiding this comment.
Final nits, let's coordinate with social team to publish it!
| @@ -0,0 +1,114 @@ | |||
| --- | |||
| date: '2026-04-01T00:00:00.000Z' | |||
There was a problem hiding this comment.
Let's align it with Kylie and Robin. We should create an official tweet using Node.js account along with it.
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
| | Phase | Duration | Description | | ||
| | ------- | --------- | ----------------------------------------------- | | ||
| | Alpha | 5 months | Oct to Mar. Early testing, semver-major allowed | | ||
| | Interim | 6 months | Apr to Oct. Stabilization | |
There was a problem hiding this comment.
From what I understand from https://ubuntu.com/about/release-cycle, using Interim might not be a wise choice since Ubuntu seems to be using it only for releases that do not get long-term support (i.e. it would fit the current schedule's odd releases, but the new one no longer have those). So if we release 27.0.0 as Interim, it's actually sending the wrong signal.
Wdwt about "Latest"?
| | Interim | 6 months | Apr to Oct. Stabilization | | |
| | Latest | 6 months | Apr to Oct. Stabilization | |
There was a problem hiding this comment.
The exact comparison with Ubuntu is tricky, because their Interim releases are killed and renumbered as LTS releases. Ubuntu LTS releases are LTS from the first day of release. https://ubuntu.com/about shows that pictorially.
Beta would not be a good term either.
Maybe just call it what it is: "Stabilization" instead of "Interim", if the term "Interim" may be misinterpreted? (Except that's a long word!)
There was a problem hiding this comment.
what about using Current (23ce3d1)? Maybe is less confusing as we use a term that is already known by our users? I you don't agree I can drop that commit 👍 .
Super open to suggestions anyway, but I agree that maybe Interm is not clear enough. While I like "Stabilization" maybe is translating the message that the release is not yet ready? but at the same time we finished Alfa but there is no Beta 🫤
There was a problem hiding this comment.
I suggest "Preview."
People heavily involved in open source speak so much English they're like native speakers, but that's not true for all developers. I expect a term like "pilot" would risk confusion for non-native English speakers, and can be ambiguous even if you are a native speaker. Maybe "promotion" since a new release is being promoted to LTS status. That's not too exotic, but it's not too familiar either, and feels subtle even for native speakers.
Perhaps "preview" is the least bad term. It borrows from everybody on earth watching Hollywood movies so they know about previews. The movie itself is largely finished, but it's being prepared for distribution to a wide audience. If you watch a preview, you get a valid taste of what's coming, but you also know that it's still possible something might change before final release. Even for native speakers this offers more instant recognition than other terms, and for people with limited English skills it's likely the easiest term.
There was a problem hiding this comment.
"Preview" suggests pre-release imo.
There was a problem hiding this comment.
I also thought about "Early," though I don't think that's been used by other software before, and it's vague. LibreOffice used to use the term "Fresh," though my own memory of confusion around that term partly triggered me when I saw this blog post. The problem in that case was they didn't explain anything clearly, so it was hard to understand how their releases worked (even though it wasn't actually complicated at all).
It's hard to find a word that strikes a good balance. Essentially the two channels (Alpha and Interim) are meant for library testing and application testing, right? Theoretically they could be called "Libtest" and "Apptest" which isn't pretty but certainly avoids confusion.
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
apps/site/pages/en/blog/announcements/evolving-the-nodejs-release-schedule.md
Outdated
Show resolved
Hide resolved
Co-authored-by: Matt Cowley <me@mattcowley.co.uk> Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
| Total support: 35 months from release to [End of Life (EOL)](https://nodejs.org/en/about/eol). | ||
|
|
||
| ### About the Alpha Channel | ||
|
|
There was a problem hiding this comment.
Sorry to stir up trouble here but...
If the goal is to invite library authors to integrate Alpha releases into their CI, the term "Alpha" is... bad. Nobody outside the Node inner circle has any idea how much or how little the details of release channels will change, so they cannot know how they should interpret terminology. If the proposed "Alpha" channel is intended to replace odd-numbered Current releases, it's a misleading name. The word "alpha" has strong connotations with decades of precedent that contradict such usage. I doubt many people would expect "alpha" releases to be tested through Canary in the Goldmine.
For a very mature project like Node, I suspect Nightly builds from main are closer to what most think of as "alpha" software. Today's odd-numbered Current releases are more equivalent to release candidates or at least beta versions. If someone from a Java background just starting serious work with Node sees the term "alpha," without knowing this history or context they might think "buggy prototype" and ignore it completely. Yet the purpose of this channel is to attract attention from library authors, right?
The term "beta" tells library authors it's time for testing without having to read a blog post. Was that term avoided deliberately, perhaps to allow more wiggle room for occasional buggy releases in this channel? I suppose "testing" would be misleading, since although this is meant for testing of libraries, the subsequent channel is also meant for testing, by end-user developers before LTS for production. Maybe the best option is already right under everyone's noses from CITGM: call this channel "Canary."
I think the non-native English speaker concern is less relevant here, since library authors already have to deal with more troublesome terminology anyway (and probably get more practice speaking English). The biggest precedent most people will have for the term "canary" is the React channel used by Next.js. That's probably an acceptable association, since it roughly matches what the experience will be for Node: generally stable, but expect occasional breakage or bugs. The name "Canary" avoids any "flaky prototype" connotations of "alpha," yet appropriately warns people not to expect reliable stability either.
After "Canary" to attract library authors, "Preview" would attract attention from early adopters (as opposed to those who stay on the older LTS). Imagine the viewpoint of Java, C#, Go, Rust, C++, Python and PHP developers, and hope for a match between their natural expectations and the future release channels being proposed for Node. I suspect "Canary" to "Preview" to "LTS" is less confusing or misleading than many other possibilities.
There was a problem hiding this comment.
If the proposed "Alpha" channel is intended to replace odd-numbered Current releases
That's not the intention, Alpha releases can be very different from Current releases as we can ship semver-majors on it.
I wouldn't be opposed to a different term, but Beta or Canary doesn't seem different from Alpha in my experience - all of them tell the same: It's an experimental version, subject to break.
There was a problem hiding this comment.
This is a direct quote from the blog post draft:
The Alpha channel replaces odd-numbered releases.
So presumably that wording should be adjusted?
I think this perception of terminology is a difference between experts and everybody else. When you reach a certain level of expertise, you realize there isn't really a fundamental difference between categories like "alpha" or "beta" or whatever. But outside that circle of expertise, those words have a lot more subjective impact. I think "alpha" has stronger implications than experts realize.
There was a problem hiding this comment.
I personally think Alpha is also fine, it clearly communicates that the releases may still contain breaking changes, and that folks shouldn't rely on them for day-to-day use. We're explicitly stating that library authors are encouraged to test against these releases, whatever their perception of Alpha may be.
If there is really that much concern about the specific word being used, I could see Canary being a fine alternative, as it even more directly has connotations to being a release that we want library authors and such to test.
Preview url: https://nodejs-org-git-fork-ulisesgascon-release-announcement-openjs.vercel.app/en/blog/announcements/evolving-the-nodejs-release-schedule
Objective
This is an initial draft of the blog post, intended to collect feedback and iterate until we have a clear plan for communicating the release schedule change.Explain to the users that we are planning a change in the Release Schedule starting on Node@27 and provide context on how the schedule works in general lines and the motivation for this change.
Context
We have been discussing this topic for a while in nodejs/Release#1113, nodejs/Release#953 and at the Collaboration Summit Chesapeake 2025.
The goal of this post is to communicate the change clearly to users as part of the messaging around Node 26.x, since the new plan will take effect starting with Node 27.x. We decided to write this blog post during our last Release WG meeting.