Modules: unflagging in 12.x LTS

Created on 2 Dec 2019  Â·  20Comments  Â·  Source: nodejs/modules

I'm opening this as one of the releasers working on the 12.x branch.
Unflagging ESM, along with other changes that landed only in 13.x, is a semver-minor change. According to the current plan for the 12.x active LTS release line, the next possible windows to unflag ESM will be 2020-01-21, 2020-04-21 and 2020-07-21.

Is it reasonable to aim for January? Is it a requirement to make ESM completely stable before we unflag it in LTS?
ESM-related PRs are piling up and will be causing more and more conflicts in the 12.x branch until we backport them.

Most helpful comment

Since ESM is experimental it is my belief that we can backport the majority
of changes as patches, what should land as a minor is the removal of the
flag itself.

Currently a bunch of the changes have conflicts due to relying on changes
to V8 7.8 for synthetic modules. An upgrade to V8 would be Semver Minor

A plan of action I think would be reasonable would be to target the January
release with the 7.8 upgrade and as many of the changes as we can, but not
unflag.

We could then land changes in the monthly releases with a goal of
unflagging in the April Semver Minor release

Thoughts?

On Mon, Dec 2, 2019, 9:39 AM Michaël Zasso notifications@github.com wrote:

We could make an exception, but per LTS rules, anything that goes into LTS
on 2020-01-21 should have landed on 13.x on 2020-01-07.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nodejs/modules/issues/450?email_source=notifications&email_token=AADZYVYGSV7QI3OVQDHJJHLQWUM35A5CNFSM4JTWO4QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFTWLYI#issuecomment-560424417,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADZYV7NDOE6ZVW5UHHDTDTQWUM35ANCNFSM4JTWO4QA
.

All 20 comments

I think we wanted to settle the dual packages question before backporting, which currently means conditional exports get unflagged if no other solution gains consensus before the end of January. Maybe we should amend that slightly to be mid-January, in time for the 2020-01-21 deadline? Or if there are no other contenders in development, should we perhaps just unflag it now? @weswigham @MylesBorins

We could make an exception, but per LTS rules, anything that goes into LTS on 2020-01-21 should have landed on 13.x on 2020-01-07.

Since ESM is experimental it is my belief that we can backport the majority
of changes as patches, what should land as a minor is the removal of the
flag itself.

Currently a bunch of the changes have conflicts due to relying on changes
to V8 7.8 for synthetic modules. An upgrade to V8 would be Semver Minor

A plan of action I think would be reasonable would be to target the January
release with the 7.8 upgrade and as many of the changes as we can, but not
unflag.

We could then land changes in the monthly releases with a goal of
unflagging in the April Semver Minor release

Thoughts?

On Mon, Dec 2, 2019, 9:39 AM Michaël Zasso notifications@github.com wrote:

We could make an exception, but per LTS rules, anything that goes into LTS
on 2020-01-21 should have landed on 13.x on 2020-01-07.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nodejs/modules/issues/450?email_source=notifications&email_token=AADZYVYGSV7QI3OVQDHJJHLQWUM35A5CNFSM4JTWO4QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFTWLYI#issuecomment-560424417,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADZYV7NDOE6ZVW5UHHDTDTQWUM35ANCNFSM4JTWO4QA
.

April is a long way off. Why not target unflagging in January?

If we just land dual mode then we cannot be guaranteed it is stable /
doesn't have unseen bugs. We shouldn't rush things. Don't really see April
unflag as a big deal.

On Mon, Dec 2, 2019, 11:53 AM Geoffrey Booth notifications@github.com
wrote:

April is a long way off. Why not target unflagging in January?

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nodejs/modules/issues/450?email_source=notifications&email_token=AADZYV6QN2NI57N64RQYPPTQWU4PLA5CNFSM4JTWO4QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFUENNQ#issuecomment-560481974,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADZYVZG7SGCDIW7OYZUCQ3QWU4PLANCNFSM4JTWO4QA
.

I don't think we should slow down anymore than we need to though at the same time.

As users start to ship "exports", the implications of the backport may become more breaking in that users might expect "exports" to mean Node.js 13+ and adapt their build process accordingly.

I honestly can't see how things will be stable enough in January to unflag. We can definitely keep the implementations up to date though

Yes unfortunately the timings don't work out too well here. Feb would have been ideal :) But we absolutely must not let April slip like we did the last target.

I am seriously concerned about breakage though - packages shipping "exports" may change their behaviour on the upgrade path.

One alternative would be to backport the "exports" implementation only for CommonJS, provided we can stabilize "exports" in particular by Jan 7 (sorry for flood, thinking out loud here).

We're in a compatibility zone right now because users haven't shipped "exports" yet. As usage picks up next year I do have concerns that we lose this window entirely to backport.

@targos Two questions:

  • Is there any possibility of a release between January and April? Like another LTS release in February?
  • Are we sure that we can backport everything that’s landed in 13 related to ESM, including the unflagging?

cc @weswigham

There will be monthly patch releases. I would not be super happy to have an
additional minor.

On Wed, Dec 4, 2019, 1:05 PM Geoffrey Booth notifications@github.com
wrote:

@targos https://github.com/targos Two questions:

  • Is there any possibility of a release between January and April?
    Like another LTS release in February?
  • Are we sure that we can backport everything that’s landed in 13
    related to ESM, including the unflagging?

cc @weswigham https://github.com/weswigham

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nodejs/modules/issues/450?email_source=notifications&email_token=AADZYVY7UXLNHGE5II4M5NDQXALQFA5CNFSM4JTWO4QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEF6PRNA#issuecomment-561838260,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADZYVZY2TLHMPXUMD5O3W3QXALQFANCNFSM4JTWO4QA
.

Also, I believe that there were technical concerns about require-esm from both myself and @guybedford (maybe others?). I think we should make sure to spell them out very explicitly so that we don't risk that Wes investing a bunch of work only to then hear about concerns we could be voicing right now. @weswigham Would you prefer an issue for tracking them or what would be a good channel?

  • There will be releases in February and March, but they won't be semver-minor. The unflagging must happen in a semver-minor release. Other changes can land in between.
  • We can backport anything that was not semver-major.

@guybedford and I sat with @jasnell at the collab summit and talked through backports. Current plan was

  • Backport everything to 12.x in Semver Minor in January

    • this requires backporting V8 7.8

  • Keep release lines up to date in Feb / March release
  • Aim to remove flag on 12.x in April Semver Minor

Thoughts?

Would that backport theoretically include unflagging conditional exports in 13 / moving conditional exports under the overarching experimental modules flag in 12?

Yes.

On Mon, Dec 16, 2019, 5:52 PM Jordan Harband notifications@github.com
wrote:

Would that backport theoretically include unflagging conditional exports
in 13 / moving conditional exports under the overarching experimental
modules flag in 12?

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nodejs/modules/issues/450?email_source=notifications&email_token=AADZYVYKXNGDZKXFJORWAXLQZABCBA5CNFSM4JTWO4QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHAM3GI#issuecomment-566283673,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADZYV6X6SJAH6UGRON5SNLQZABCBANCNFSM4JTWO4QA
.

V8 backport is ready to land as soon as the next patch release is done

Landed on v12.x-staging

_Originally posted by @targos in https://github.com/nodejs/node/pull/33055#issuecomment-625069467_

I think we can close this now.

Yep. Thanks

Was this page helpful?
0 / 5 - 0 ratings

Related issues

GeoffreyBooth picture GeoffreyBooth  Â·  4Comments

MylesBorins picture MylesBorins  Â·  3Comments

Jamesernator picture Jamesernator  Â·  4Comments

WebReflection picture WebReflection  Â·  5Comments

mhdawson picture mhdawson  Â·  5Comments