Modules: Out-of-band meeting to discuss unflagging

Created on 24 Oct 2019  Ā·  20Comments  Ā·  Source: nodejs/modules

Let’s finish our discussion from today’s meeting, and hopefully reach a consensus about unflagging.

https://doodle.com/poll/watrpmrg9gi74wuz

Wednesday Oct 30 at 10 am PT / 1 pm ET / 17:00 UTC

Zoom: https://zoom.us/j/650056413

events ngo?

Most helpful comment

Consensus per this meeting:

  • Land conditional exports behind experimental flag: https://github.com/nodejs/node/pull/29978.

    • Ideally only flag the part of conditional exports that allows separate entry points for the same specifier within Node. Group has consensus to ship the rest of the feature, to provide a framework for defining entry points for Node vs other runtimes/environments.

    • If consensus can’t be reached on the ā€œnon-divergent specifierā€ parts of conditional exports, the entire feature will be placed behind a flag but will still land.

  • Document singleton hazards and recommend approaches: https://github.com/nodejs/node/pull/30051/files?short_path=8e67f40#diff-8e67f407bc32a0569e25d7ecaff6e494; start at the ā€œDual CommonJS/ES Module Packagesā€ heading.

  • Unflag --experimental-modules as the current state plus the above in node 13. This preserves the experimental warning. https://github.com/nodejs/node/pull/29866.

  • At the end of January, if there’s no better alternative for dual packages, we will remove the conditional exports flag and turn the feature on by default.

šŸŽ‰ 🚢 šŸš€ šŸŽ‰

All 20 comments

Only six replies so far, so won’t meet tomorrow (Friday). Please fill out the Doodle, folks!

Currently looks like this will be on Thursday or Friday, but many folks still haven’t filled out the Doodle. @bmeck @DanielRosenwasser @devsnek @inidaname @jdalton @mduleone @SMotaal @targos @zenparsing if you could please take a moment to let us know your availability: https://doodle.com/poll/watrpmrg9gi74wuz

I picked two-hour timeslots to try to ensure we didn’t run out of time like our last meeting, but hopefully we won’t need all that time. Please RSVP even if you can only attend part of it.

Should we try to enumerate the open questions? E.g. is this mostly down to "should conditional exports be a blocker" / "can we unflag with them"?

Conditional exports themselves are one open question.

Right, to break down "should conditional exports be a blocker":

  • Should conditional exports be a blocker?
  • If not, is there a gap left by conditional exports we need to fill with something else before we can unflag?
  • If we need something else, do we know what it would be (both in theory and in practice)?

Is that roughly what you had in mind when you said "one open question"? Also, you seem to imply that there are more questions..? I think it would help if we spell them out at this point so we can go into the meeting with open eyes. :)

Currently looks like this will be on Thursday or Friday, but many folks still haven’t filled out the Doodle.

I think Friday is clearly ahead now. Should we lock it in so people can block the time in their calendars?

I think that the only open questions are as you outlined, yes.

I _think_ that the only open questions are as you outlined, yes.

Our last _two_ regular meetings discussed unflagging and any last concerns before doing so, and the hazard/conditional exports issue was the only one raised, which was why it was sent to the TSC (and was the only issue sent to them). If anyone has any other concerns at this point, hopefully they either don’t block unflagging or there’s a good reason why they weren’t raised earlier. In order to be a functioning group we all need to be respectful of each other’s time.

Currently it’s looking like Friday Nov 1 at 12 pm PT / 3 pm ET / 19:00 UTC Wednesday Oct 30 at 10 am PT / 1 pm ET / 17:00 UTC, if people want to reserve that time in their calendars.

@MylesBorins is there an official Zoom meeting we can use?

Also if folks wouldn’t mind, before the meeting please read https://github.com/nodejs/modules/issues/409 and take a look at the accompanying example repo https://github.com/GeoffreyBooth/dual-package-hazard.

didn't we agree in the last meeting that it was a separate flag? I'm confused

I've updated my availability, I have to be OOO on Friday. Looks like Wednesday 1 - 3 pm ET is the best time now.

didn’t we agree in the last meeting that it was a separate flag? I’m confused

Here are the meeting notes about conditional exports, at the very end of the meeting:

  • MB: Can we land ConExp behind a flag?
  • Wes objects.
  • MB: Can we land ESM as it exists?
  • JH - I object. We need ConExp. (but Wes blocks ConExp)
  • JH - Are we lone objectors?
  • silence
  • BF: I object to ConExp but not if it’s behind a dedicated flag.
  • JH: If someone has to run Node with a flag to get a feature in a dependency, it’s like it does not exist. People don’t run Node with flags. So defaults matter. If defaults do not support dual packages, you can’t publish it. So my objection remains.
  • MB: We can discuss a vote, but not now - time is up.

Looks like we can set the time: Wednesday Oct 30 at 10 am PT / 1 pm ET / 17:00 UTC

@MylesBorins, do you mind please setting up Zoom etc. for us?

Sorry folks, I am having trouble taming notifications… I just updated doodle and will be able to make the Wednesday 1pm ET (juggling things as we do though).

I've scheduled the zoom, added the link to the original post (https://zoom.us/j/650056413) and added the event to the Node.js calendar

I was listening in on the meeting šŸ‘‚

Nice job everyone! šŸ‘ šŸŽ‰ šŸ„‡

Consensus per this meeting:

  • Land conditional exports behind experimental flag: https://github.com/nodejs/node/pull/29978.

    • Ideally only flag the part of conditional exports that allows separate entry points for the same specifier within Node. Group has consensus to ship the rest of the feature, to provide a framework for defining entry points for Node vs other runtimes/environments.

    • If consensus can’t be reached on the ā€œnon-divergent specifierā€ parts of conditional exports, the entire feature will be placed behind a flag but will still land.

  • Document singleton hazards and recommend approaches: https://github.com/nodejs/node/pull/30051/files?short_path=8e67f40#diff-8e67f407bc32a0569e25d7ecaff6e494; start at the ā€œDual CommonJS/ES Module Packagesā€ heading.

  • Unflag --experimental-modules as the current state plus the above in node 13. This preserves the experimental warning. https://github.com/nodejs/node/pull/29866.

  • At the end of January, if there’s no better alternative for dual packages, we will remove the conditional exports flag and turn the feature on by default.

šŸŽ‰ 🚢 šŸš€ šŸŽ‰

Consensus per this meeting:

  • Land conditional exports behind experimental flag: https://github.com/nodejs/node/pull/29978.

    • Ideally only flag the part of conditional exports that allows separate entry points for the same specifier within Node. Group has consensus to ship the rest of the feature, to provide a framework for defining entry points for Node vs other runtimes/environments.

    • If consensus can’t be reached on the ā€œnon-divergent specifierā€ parts of conditional exports, the entire feature will be placed behind a flag but will still land.

  • Document singleton hazards and recommend approaches: https://github.com/nodejs/node/pull/30051/files?short_path=8e67f40#diff-8e67f407bc32a0569e25d7ecaff6e494; start at the ā€œDual CommonJS/ES Module Packagesā€ heading.

  • Unflag --experimental-modules as the current state plus the above in node 13. This preserves the experimental warning. https://github.com/nodejs/node/pull/29866.

  • At the end of January, if there’s no better alternative for dual packages, we will remove the conditional exports flag and turn the feature on by default.

šŸŽ‰ 🚢 šŸš€ šŸŽ‰

Hi @GeoffreyBooth, does this mean --experimental-modules will be unflagged in Node.js 13 onwards, but not Node.js 12?

  • Unflag --experimental-modules as the current state plus the above in node 13. This preserves the experimental warning. nodejs/node#29866.

I can't tell from your comment here if it applies to Node.js 13 only: https://github.com/nodejs/modules/issues/411#issuecomment-548210560

But then this comment proposes it will come to Node.js 12: https://github.com/nodejs/modules/issues/400#issue-505927802

  • Assuming there is not major ecosystem push back we aim to remove the flag in the 1st or 2nd Semver Minor of 12.x LTS (likely in December or March)

If you can clarify that would be great thanks 😊

It may come to 12, that's not certain. It depends how things go in 13.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

MylesBorins picture MylesBorins  Ā·  5Comments

GeoffreyBooth picture GeoffreyBooth  Ā·  4Comments

guybedford picture guybedford  Ā·  3Comments

mhdawson picture mhdawson  Ā·  4Comments

devsnek picture devsnek  Ā·  3Comments