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

Discussion: LTS & v5 release planning #3000

Closed
7 of 8 tasks
rvagg opened this issue Sep 22, 2015 · 45 comments
Closed
7 of 8 tasks

Discussion: LTS & v5 release planning #3000

rvagg opened this issue Sep 22, 2015 · 45 comments
Labels
meta Issues and PRs related to the general management of the project.

Comments

@rvagg
Copy link
Member

rvagg commented Sep 22, 2015

We are approaching October where we've committed to kicking off our first LTS where, according to the LTS plan:

... with the first LTS release cut during the first week of October, 2015

We really wanted to hit October to have that be our LTS timing every year.

There are some things we need to figure out for this, some of which are @nodejs/lts topics but are worth opening up discussion on:

  • Do we wait for the next V8 before branching and releasing v5.x? We've put ourselves in an awkward position having jumped on 4.5 for v4.x because we're not likely to see a stable V8 until at least mid-October. Throughout this year, the V8 team have averaged 45 days between releases, if they hit the average then we'd land at October 15th. If they did it their quickest then we might get the 6th of October, with the latest being the 3rd of November. Do we just keep master in a holding state until we have successfully integrated a stable 4.6? Perhaps this is a good chance for us to begin promoting an initial nightly / canary strategy?
  • Is there any good reason not to bump npm to v3 in master and our v5.x branch?
  • We need a codename for the release, there is some discussion here with the current plan for the LTS WG to come up with a shortlist and then give the collaborators the chance to vote on their preferred option. It's looking likely that we'll be picking something off the periodic table. (Please don't bikeshed this topic in this issue, take it to First LTS Release 'codename' Release#26 if you feel it's that important).
  • Do we bake something into the LTS binaries to signify that they are LTS? I can't recall where this discussion was but we had talked briefly about possibly putting something in process.release, maybe process.release.lts: '201510' or process.release.lts: 'codename'. If we do this, then do we ensure we cut an actual release in the "first week of October" just to make sure we have this done?
  • How exactly do we transition to an LTS release process? Do we just throw it to @nodejs/lts to figure out exactly how to determine what to cherry-pick? Do we have a special group, @nodejs/lts-release, separate from @nodejs/release to handle these? Does it matter? Once we have an idea for the number of commits we might be pulling in then we should probably discuss likely release cadence for LTS.
  • How do publicise and promote LTS lines? Does @nodejs/website have ideas on how to make this happen when we have something called "LTS" and then start to get new "Stable" releases with a 5 at the front? Ideally, users will be self-selecting and would end up with the kind of release suited to them, perhaps we need to outline on the front page of the website and/or on the download page why you would choose LTS over Stable?
  • Do we need to prepare a new NAN for V8 4.6? I don't see anything that's obviously breaking but it'd be good to have @nodejs/addon-api tuned in to the v5 timeline.
  • Prepare postmortem metadata in new V8 prior to 5.0.0, tracking @ Update mdb_v8 for V8 4.6.x TritonDataCenter/mdb_v8#36

What else?

@rvagg
Copy link
Member Author

rvagg commented Sep 22, 2015

screen shot 2015-09-22 at 8 17 31 pm

#3000, that's gotta be significant for a discussion like this right?

@ChALkeR ChALkeR added the meta Issues and PRs related to the general management of the project. label Sep 22, 2015
@paulvi
Copy link

paulvi commented Sep 22, 2015

👍 #3000 is very easy to remember for as ticket for a new version

How exactly do we transition to an LTS release process?

LTS is usually just usual release that is lucky enough to happen on special time. Because it should be supported for longer time, one would consider not to hurry to get newer dependencies version and stick to more stable.

How do publicise and promote LTS lines?

Usually LTS are needed for Enterprise users, no need to promote.

LTS can be just below other releases or above as on http://www.ubuntu.com/download/desktop

@Fishrock123
Copy link
Member

Is there any good reason not to bump npm to v3 in master and our v5.x branch?

I can't think of one in release builds. I'd definitely prefer this. (Maybe when switching back and forth it could cause problems when trying to run npm@2 commands on an npm@3 install? cc @zkat?)

Do we bake something into the LTS binaries to signify that they are LTS

Seems like a reasonable plan. Codename probably?

How exactly do we transition to an LTS release process? ... Does it matter?

Given the release team is currently me and Rod, I really don't think so. :/

@trevnorris
Copy link
Contributor

Do we wait for the next V8 before branching and releasing v5.x?

We have some fudge time. More so since we started off schedule anyway. I'd say we wait.

Is there any good reason not to bump npm to v3 in master and our v5.x branch?

Are we sure it will be ready by Nov 1?

How exactly do we transition to an LTS release process?

Does LTS have a release timeline? I assume they'll want to do an "official" LTS release shortly after the branch enters LTS. But since it'll all built into the branch version, Jenkins should be good on builds/releases, right?

Having an lts-release sounds like a good idea. Even if there is a lot of personnel overlap to start. But things will get more complicated as v8 diverges.

Do we need to prepare a new NAN for V8 4.6?

Are smoke tests setup for this?

@jasnell
Copy link
Member

jasnell commented Sep 22, 2015

I'd say the transition point to LTS is fairly arbitrary. If we feel it's
ready by the end of the first week in October, let's do it.

The cut of v5.x definitely doesn't need to happen at the same time. We have
wiggle room there. Let's wait until later in October and land the V8
update. If npm3 lands after I have no problem cherry picking it back from
master.
Btw, I ought to have an updated citgm for better smoke testing by the
second week of October.
On Sep 22, 2015 9:51 AM, "Trevor Norris" notifications@github.com wrote:

Do we wait for the next V8 before branching and releasing v5.x?

We have some fudge time. More so since we started off schedule anyway. I'd
say we wait.

Is there any good reason not to bump npm to v3 in master and our v5.x
branch?

Are we sure it will be ready by Nov 1?

How exactly do we transition to an LTS release process?

Does LTS have a release timeline? I assume they'll want to do an
"official" LTS release shortly after the branch enters LTS. But since it'll
all built into the branch version, Jenkins should be good on
builds/releases, right?

Having an lts-release sounds like a good idea. Even if there is a lot of
personnel overlap to start. But things will get more complicated as v8
diverges.

Do we need to prepare a new NAN for V8 4.6?

Are smoke tests setup for this?


Reply to this email directly or view it on GitHub
#3000 (comment).

@jasnell
Copy link
Member

jasnell commented Sep 22, 2015

And Yes, the process.release should include the codename at least.
On Sep 22, 2015 1:44 AM, "Rod Vagg" notifications@github.com wrote:

We are approaching October where we've committed to kicking off our first
LTS where, according to the LTS plan:

... with the first LTS release cut during the first week of October, 2015
https://github.com/nodejs/LTS/

We really wanted to hit October to have that be our LTS timing every year.

There are some things we need to figure out for this, some of which are
@nodejs/lts https://github.com/orgs/nodejs/teams/lts topics but are
worth opening up discussion on:

  • Do we wait for the next V8 before branching and releasing v5.x?
    We've put ourselves in an awkward position having jumped on 4.5 for
    v4.x because we're not likely to see a stable V8 until at least
    mid-October. Throughout this year, the V8 team have averaged 45 days
    between releases, if they hit the average then we'd land at October 15th.
    If they did it their quickest then we might get the 6th of October, with
    the latest being the 3rd of November. Do we just keep master in a
    holding state until we have successfully integrated a stable 4.6? Perhaps
    this is a good chance for us to begin promoting an initial nightly / canary
    strategy?
  • Is there any good reason not to bump npm to v3 in master and our v5.x
    branch?
  • We need a codename for the release, there is some discussion here
    First LTS Release 'codename' Release#26 with the current plan for
    the LTS WG to come up with a shortlist and then give the collaborators the
    chance to vote on their preferred option. It's looking likely that we'll be
    picking something off the periodic table. (Please don't bikeshed this topic
    in this issue, take it to First LTS Release 'codename' Release#26
    First LTS Release 'codename' Release#26 if you feel it's that
    important).
  • Do we bake something into the LTS binaries to signify that they are
    LTS? I can't recall where this discussion was but we had talked briefly
    about possibly putting something in process.release, maybe process.release.lts:
    '201510' or process.release.lts: 'codename'. If we do this, then do we
    ensure we cut an actual release in the "first week of October" just to make
    sure we have this done?
  • How exactly do we transition to an LTS release process? Do we just
    throw it to @nodejs/lts https://github.com/orgs/nodejs/teams/lts to
    figure out exactly how to determine what to cherry-pick? Do we have a
    special group, @nodejs/lts-release, separate from @nodejs/release
    https://github.com/orgs/nodejs/teams/release to handle these? Does
    it matter? Once we have an idea for the number of commits we might be
    pulling in then we should probably discuss likely release cadence for LTS.
  • How do publicise and promote LTS lines? Does @nodejs/website
    https://github.com/orgs/nodejs/teams/website have ideas on how to
    make this happen when we have something called "LTS" and then start to get
    new "Stable" releases with a 5 at the front? Ideally, users will be
    self-selecting and would end up with the kind of release suited to them,
    perhaps we need to outline on the front page of the website and/or on the
    download page why you would choose LTS over Stable?
  • Do we need to prepare a new NAN for V8 4.6? I don't see anything
    https://docs.google.com/document/d/1g8JFi8T_oAE_7uAri7Njtig7fKaPDfotU6huOa1alds
    that's obviously breaking but it'd be good to have @nodejs/addon-api
    https://github.com/orgs/nodejs/teams/addon-api tuned in to the v5
    timeline.

What else?


Reply to this email directly or view it on GitHub
#3000.

@trevnorris
Copy link
Contributor

Part of the initial release plan was not to have a major transition immediately to LTS when the next major was released. Done so users would have some transition time. If v8 has no breaking changes then it can probably be shortened.

@misterdjules
Copy link

@rvagg Regarding the v5, we'll need to evaluate if post-mortem metadata needs to be updated.

We have a tracking issue for mdb_v8 here: TritonDataCenter/mdb_v8#36. Evaluating this shouldn't be long (I'll probably be able to do that before the end of the week), I just want to avoid another release happening without having the chance to update the post-mortem metadata.

@misterdjules
Copy link

Thankfully @ofrobots updated at least some of it with https://codereview.chromium.org/1308113007, and possibly other changes. Thank you 👍 I'd still like to spend some time running mdb_v8's tests to make sure that we have everything we need.

@mhdawson
Copy link
Member

It is important that from the website its easy to identify and select the right stream, maybe the download page should have an lts, stable and nightly section

@mhdawson
Copy link
Member

At this point I think its reasonable to leave it to @nodejs/lts to decide what to backport, we probably need some tags so that candidates can be identified

@phillipj
Copy link
Member

It is important that from the website its easy to identify and select the right stream, maybe the download page should have an lts, stable and nightly section

The frontpage also needs some thought. It would be great to still have a big green download button for the stream suitable for "most developers". Which stream should be default, stable or LTS?

@Fishrock123
Copy link
Member

We should recommend the current stable, with the LTS as a long-term fallback for those who need it.

@rvagg
Copy link
Member Author

rvagg commented Sep 22, 2015

added a checkbox for postmortem metadata, thanks for the reminder @misterdjules

@zkat
Copy link
Contributor

zkat commented Sep 23, 2015

Is there any good reason not to bump npm to v3 in master and our v5.x branch?

We are totally onboard with this happening. npm@3 is out the door and doing well, even though it's just starting to get wide adoption. Plus, the less time we commit to 2.x the better, tbh. Gonna cc @iarna and @othiym23 to see how they feel about the October timing, too, since they've been dealing with v3 tickets more than me. :)

@mcnameej
Copy link

Is there any good reason not to bump npm to v3 in master and our v5.x branch?

npm v3 is significantly slower than v2 in (some|many|most) cases.

npm/npm#8826

@Fishrock123
Copy link
Member

I think getting npm@3 into v5 now and letting it improve is a better option than waiting a half-year for v6.

@ofrobots
Copy link
Contributor

IMO, a performance issue shouldn't hold us back from pickup on npm@3 from Node v5.0. It is npm stable and, if anything, picking it up on Node 5 will help find more edge cases and get them fixed faster. The only thing that should hold us up from pickup npm@3 for Node 5 would be an irreconcilable breaking change.

@ilkkao
Copy link

ilkkao commented Sep 24, 2015

Maybe not that important but will npm@2 be maintained by npm team as longs as first Node LTS? Might be one reason to favour npm@3

@zkat
Copy link
Contributor

zkat commented Sep 24, 2015

@ilkkao that's our plan, yes. We'll agreed to at least support it through Node v4's lifetime (not that I would mind if npm@3 makes it into node 4)

@misterdjules
Copy link

@rvagg @ofrobots @targos PR submitted against the vee-eight-4.6 branch to update post-mortem metadata: #3057.

If further commits land into that branch with changes to the layout of internal data structures, I would like to be notified before the v5.x release so that we can determine if anything needs to be done regarding post-mortem support.

If no other commit land into that branch and that branch ends up being what upgrades V8 in master and for the v5.0 release, I believe we're good to go.

@ofrobots
Copy link
Contributor

@misterdjules We will be picking up more commits from V8 branch-heads/4.6 into vee-eight-4.6 going forward, but I would not expect a change in the layout of the V8 internal data structures on the 4.6 branch.

@rvagg
Copy link
Member Author

rvagg commented Sep 25, 2015

@nodejs/collaborators as we are heading in to LTS for v4, the bar for commits that land in the v4.x branch will be significantly raised and there will be no semver-minor additions unless absolutely needed (for security fixes for instances). If there are things pending that you think really should go in to v4.x then you should work on getting them merged next week or you'll miss out.

@Fishrock123
Copy link
Member

I do have some philosophical issues with going into LTS without cutting a new stable, but I suppose it doesn't matter too much.

I don't really want to be holding semver-minor stuff in master for long.

@thefourtheye
Copy link
Contributor

It would prefer #2966 or #2967 land in LTS version. Cc @ChALkeR @targos

@trevnorris
Copy link
Contributor

I do have some philosophical issues with going into LTS without cutting a new stable

That shouldn't happen. The original plan was to have overlap of stables to allow for module authors to migrate. Has the plan changed since then?

@rvagg
Copy link
Member Author

rvagg commented Sep 29, 2015

@trevnorris see my first checkbox above:

Do we wait for the next V8 before branching and releasing v5.x? We've put ourselves in an awkward position having jumped on 4.5 for v4.x because we're not likely to see a stable V8 until at least mid-October. Throughout this year, the V8 team have averaged 45 days between releases, if they hit the average then we'd land at October 15th. If they did it their quickest then we might get the 6th of October, with the latest being the 3rd of November. Do we just keep master in a holding state until we have successfully integrated a stable 4.6? Perhaps this is a good chance for us to begin promoting an initial nightly / canary strategy?

i.e. the "plan" hasn't changed, it's the compressed timeframe of v4 and v5 that we're dealing with here, we hoped for a v4 in August where we'd have enough time for this to work out just fine but we've left only a month between v4 and potentially cutting a v5, the options as I see them:

  1. Switch v4.x to LTS within the next week(ish) and let master collect commits until V8 4.6 goes gold and cut v5.x then, could be a delay of a couple of weeks, a month at the most.
  2. Switch v4.x to LTS within the next week(ish) and also ship v5.x with V8 4.5 and have to live with that for the next 6 months
  3. Same as option 2 but ship with 4.6 before it goes gold
  4. Defer LTS until we are ready to cut and ship v5.x when 4.6 goes gold

My vote is for option 1. Followed by 3.

Option 1 could be managed by merging the vee-eight-4.6 branch we already have (that has been kept in shape by @targos so should be ready to go) into master and and ship prebuild nightlies until Chrome 46 is shipped at which point we just bump to 5.0.0.

@jasnell
Copy link
Member

jasnell commented Sep 29, 2015

Option 1.
On Sep 29, 2015 3:56 AM, "Rod Vagg" notifications@github.com wrote:

@trevnorris https://github.com/trevnorris see my first checkbox above:

Do we wait for the next V8 before branching and releasing v5.x? We've put
ourselves in an awkward position having jumped on 4.5 for v4.x because
we're not likely to see a stable V8 until at least mid-October. Throughout
this year, the V8 team have averaged 45 days between releases, if they hit
the average then we'd land at October 15th. If they did it their quickest
then we might get the 6th of October, with the latest being the 3rd of
November. Do we just keep master in a holding state until we have
successfully integrated a stable 4.6? Perhaps this is a good chance for us
to begin promoting an initial nightly / canary strategy?

i.e. the "plan" hasn't changed, it's the compressed timeframe of v4 and v5
that we're dealing with here, we hoped for a v4 in August where we'd have
enough time for this to work out just fine but we've left only a month
between v4 and potentially cutting a v5, the options as I see them:

  1. Switch v4.x to LTS within the next week(ish) and let master collect
    commits until V8 4.6 goes gold and cut v5.x then, could be a delay of
    a couple of weeks, a month at the most.
  2. Switch v4.x to LTS within the next week(ish) and also ship v5.x
    with V8 4.5 and have to live with that for the next 6 months
  3. Same as option 2 but ship with 4.6 before it goes gold
  4. Defer LTS until we are ready to cut and ship v5.x

My vote is for option 1. Followed by 3.

Option 1 could be managed by merging the vee-eight-4.6 branch we already
have (that has been kept in shape by @targos https://github.com/targos
so should be ready to go) into master and and ship prebuild nightlies until
Chrome 46 is shipped at which point we just bump to 5.0.0.


Reply to this email directly or view it on GitHub
#3000 (comment).

@evanlucas
Copy link
Contributor

I'm for Option 1

@thefourtheye
Copy link
Contributor

Defer LTS until we are ready to cut and ship v5.x

When we get to v5.x, will v8 4.6 be gold?

@rvagg
Copy link
Member Author

rvagg commented Sep 29, 2015

When we get to v5.x, will v8 4.6 be gold?

That was the intention of that option, yes, edited post to reflect that.

Also, fwiw, I'm strongly in favour of shipping LTS in "the first week of October", it's important that we set expectations for users that it'll be predictable each year, LTS are our serious releases where we need to at least look like we know how to be adults, it's all about the signal we send.

@mhdawson
Copy link
Member

+1 for option 1

@trevnorris
Copy link
Contributor

My worry about option 1 is once v4 reaches LTS we're limited on the number of commits that can be picked. So we'll have a time lapse when features don't reach the public. If this is only a week or two then whatever. But I'd question it if we have to wait a month.

@misterdjules
Copy link

@rvagg Whatever the plan ends up being, any fix for #3035 needs to be able to land at some point in a v4.x LTS version. So if the LTS policy around landing changes does not allow that, then we need to delay the LTS release.

@bnoordhuis
Copy link
Member

Option 4, wait until V8 4.6 is ready. LTS means it's going to be around for a long time, don't start with obsolete dependencies from the get-go.

@mikeal
Copy link
Contributor

mikeal commented Oct 1, 2015

I agree with @bnoordhuis, we want to take a V8 for 5 that is as new as possible to reduce the amount of lag we have in our cycle.

@zkat
Copy link
Contributor

zkat commented Oct 1, 2015

In general, it seems better to miss a deadline than to rush something out.

Option 4 seems like the best one, and I'd like to think LTS customers would give allocate more points to "patient and better" than "punctual but rushed". Having hanging patches on master when you don't actually know when v5 will come out is less preferable (option 1), but more tolerable than 2 or 3.

@rvagg
Copy link
Member Author

rvagg commented Oct 2, 2015

From the TSC meeting yesterday (audio) the general consensus was closer to option 1, pending some discussion in Monday's LTS meeting (which others' are welcome to join just as long as it's for constructive purposes and not to bog us down in bikeshedding things that have been previously covered).

i.e. the timeframe during October will look something like this:

  1. v4.1.2 released with the CVE-2015-7384 fix in it on Monday, i.e. in 3-4 days from now something like 82 hours from now according to the schedule I'm working on for it). FYI I'm strongly in favour of keeping these kinds of security releases to semver-patch only to ease the friction and concern that large users particularly feel in upgrading, although @Fishrock123 has expressed an alternative viewpoint that we should be conditioning people to see semver-minor as just part of the process, so get used it being normal. For this release, since I've put up my hand to handle it I'm making the call to keep it semver-patch unless the TSC wants to make a policy decision on this.
  2. v4.2.0 will be our LTS release and will follow shortly after, possibly as early as the end of next week, if not then, probably the beginning of the next week. So there is a window of time for @nodejs/collaborators to get semver-minor changes in between now and then for them to be baked in to v4, otherwise semver-minor will be (mostly) out of the question for v4.x and we'll be (mostly) bumping the patch version for the next 30 months on v4.2.x. To @zkat's point, I don't think there's a rush here on LTS, the codebase is stable and we're confident in the major things that are going on with v4.x, the outstanding items are ones of procedure and minor things (like process.release.lts containing a "codename").
  3. master collects changes like normal, cherry-picking to v4.x continues with a lower threshold for what makes it across exactly what that threshold is will be up for discussion and iteration and will very likely change over the 18 months of LTS as the delta between master and v4.x increases.
  4. V8 4.6 goes gold, they can't give us a timeframe for this so our estimates (above) are as good as we're going to get. The ~ 6 week release cycle puts us somewhere from mid to late October. When that happens we can cut a v5.x branch and start the v5.0.0 release process. I believe the vee-eight-4.6 branch is in a good state so this shouldn't be very painful.

In between steps 3 and 4 we some options to discuss:

  • Releasing nightlies: I haven't turned them on for nodejs.org, it's been a lack of time to get it right more than anything, there's an issue here to remind me to do this asap). Do we want nightlies to follow stable releases? Any point in having nightlies for LTS? Do we pin nightly releases to the current stable branch or master or do we have next-nightlies again like we did for io.js? It's not important that we figure out a perfect strategy here, I'm imagining we'll come up with a good canary-style strategy as V8 4.7 comes out and people are itching to have something to try out. The important bit for now is getting master / v5.x coming out in builds that can be used by everyone (node-gyp changes now in npm (!!!) make this feasible btw, this makes me so excited).
  • Merging vee-eight-4.6: as far as I'm concerned this could be merged in to master as soon as v4.x goes LTS so we can start preparing properly for v5.x but I'd like to hear opinions of others on this, particularly @nodejs/v8 who are managing this. Perhaps we want a policy of holding off until V8 goes stable before it makes it to master? I don't see a problem there but there are others who have better perspective on such things than I that can weigh in.

@Fishrock123
Copy link
Member

Checked some things off in the OP with comments.

@misterdjules
Copy link

Checked "Prepare postmortem metadata in new V8 prior to 5.0.0".

@mgol
Copy link
Contributor

mgol commented Oct 13, 2015

Chrome 46 is out so V8 4.6 is now stable.

@Fishrock123
Copy link
Member

npm@3 currently having some minor issues with how we test it. #3308 (comment) I expect it to be resolved quite soon.

@pmq20
Copy link
Contributor

pmq20 commented Oct 15, 2015

Now that Node.js 4.x uses v8 4.x, It would be awesome if Node v5.x was to use v8 v5.x 😆

@rvagg
Copy link
Member Author

rvagg commented Oct 16, 2015

Moving on to #3397, thanks all!

@rvagg rvagg closed this as completed Oct 16, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta Issues and PRs related to the general management of the project.
Projects
None yet
Development

No branches or pull requests