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

2017-06-07 Meeting Notes #21

Merged
merged 8 commits into from
Jun 7, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions 2017-06/june-07.md
Original file line number Diff line number Diff line change
@@ -1 +1,77 @@
# Babel Team Meeting - 2017-06-07

## Attendees
- Boopathi Rajaa
- Daniel Tschinder
- Diogo Franco
- Henry Zhu
- Jon Major Condon
- Kara de la Marck
- Karl Cheng
- Nathan Hammond
- Robert Jackson
- Peeyush Kushwaha
- Sven Sauleau

## Actions

- [X] (Nathan) Publish meeting notes.
- [ ] (Nathan) Promote priority task for this week.

## Discussion

> Use http://slack.babeljs.io/ to join our Slack

### Plugin Ordering Updates
- [#plugin-ordering](https://babeljs.slack.com/messages/plugin-ordering) on Slack!
- Large team! @sarupbanskota, @ncantelmi, @jonmajorc, @karadelamarck, @danez, @rwjblue, @hzoo, and more!
- @ncantelmi has a few proposals we want the core team to weigh in on: https://docs.google.com/document/d/1zO1QiaAyDxmA1OcmdOKYLFmuSXGSr4S50pE0uQFTVEE/edit?usp=sharing
- Deprecating unnamed plugins in Babel 6.
- Require plugins to have names in Babel 7 (better error messages).
- Ordering based solely on plugin name, not `capabilities`.
- Eliminate `passForPreset`.
- Deprecation guide and website updates.
- Will continue approximately one more week.

#### Thoughts
- Initial idea of capabilities was just for syntax anyway.
- We have multiple transforms for async functions, so capabilities would allow one to "win."
- If we do a good enough job on the "official" plugins then we wouldn't expect the community to implement this sort of thing and we remove duplication of work since we can all improve the same one.
- Macro expansions ... don't really care which one is used, just run one before it.
- In this case the author of the plugin could specify `after` for each of the plugins which are valid.
- Users will definitely have conflicting plugins, will need to provide better messaging either way.
- Default to using plugin name and then use `capabilities` as an escape hatch?

### Class Fields

- [#proposal-class-fields](https://babeljs.slack.com/messages/proposal-class-fields) on Slack!
- Daniel Ehrenberg (@littledan) is working on the spec for TC39.
- Propose strike team for Diego and interested parties.

### Decorators

- [#proposal-decorators](https://babeljs.slack.com/messages/proposal-decorators) on Slack!
- Diego Ferreiro Val (@dval) has volunteered to participate in this effort.
- Peeyush (@peey) has begun researching what the effort would entail.
- Getting more TC39 people involved to get the proposal moving forward.

> Rob: maybe we should make sub-group/meetings for proposals?

### Priority Topics!

- [Better error messages.](https://github.com/babel/babylon/issues/169)
- [Use Babylon ESTree plugin.](https://github.com/babel/babel-eslint/issues/440) (to unblock a future task of [ESLint failing tests](https://github.com/babel/babel-eslint/issues/62)) @kaicataldo
- Have volunteers for this week already, going to rope in people who have already volunteered to help mentor.

### Other Topics

- [#proposal-opt-chaining](https://babeljs.slack.com/messages/proposal-opt-chaining) on Slack! (a?.b?.c)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we define a team for this?

- PR has been made ([#5813](https://github.com/babel/babel/pull/5813)), but spec is still in flux. See [tc39/proposal-optional-chaining#2](https://github.com/tc39/proposal-optional-chaining/issues/2) and [tc39/proposal-optional-chaining#3](https://github.com/tc39/proposal-optional-chaining/issues/3).
- Numeric Separator (1_000) [transform](https://github.com/babel/babel/tree/7.0/packages/babel-plugin-transform-numeric-separator) is already released in 7.0.0-alpha.12 (Rick Waldron)
- BigInt (1n): [parser issue](https://github.com/babel/babylon/issues/569)
- import.meta: [transform issue](https://github.com/babel/babel/issues/5832)
- Boopathi will begin integration testing `babel-preset-env` + `babili` over the next week.
- Rob: let's begin thinking through cross-process caching.
- Logan has been doing a lot of caching work (for configs but wanted to apply it to files)
- @rauschma: How should library authors publish untranspiled code?
- This is brought up a lot more recently since more environments support ES6. Babel itself may not need to change but we can help provide a recommendation
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think Babel does need to change to truly solve this.

First, I think a project needs to be able to declare two things: a list of target environments, and a list of the syntax they want to use (like ES2015 + object spread, or ES latest + class properties, or whatever). Then, both babel (babel-preset-env) and babel-eslint would need to read those, and error out on anything that isn't being transpiled to something safe for all the target envs; and then transpile everything down to those target envs.

Once this exists, then a separate thing would need to exist in package.json, but that'd be out of scope of Babel.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

relevant babel-eslint issue: babel/babel-eslint#434

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think Babel does need to change to truly solve this.

Honestly I don't think Babel needs to do anything. I think library authors should just use env based on Node's LTS schedule and ship the output.

Does babel-preset-env have just an LTS setting?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's both hostile to users that can't upgrade that fast; and unrealistic considering that people ship code to browsers, and won't have an easy way of knowing which preset was used for each of the deps in their graph.

Regardless, babel-eslint still needs to change, because currently it allows "everything" and it needs to be warning on things that aren't transpiled and won't be supported by target envs.

Copy link

@jamiebuilds jamiebuilds Jun 8, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's both hostile to users that can't upgrade that fast

It's not really though, LTS schedule is quite long and you shouldn't be updating your dependencies over the node version if you fall out of the LTS schedule. It's not hostile, it's going above and beyond.

and unrealistic considering that people ship code to browsers

This has not appeared to be a problem so far, I don't see why it would start now.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not been a problem because the common best practice is to ship ES5 CJS. Libraries that ship more than that either forces people to transpile node_modules (which drastically increases the risk of breakage and the fractal of varying babel settings); or, to drop support for older browsers (usually unintentionally, which then is hostile to the users of those browsers); or, to just not use that dependency.

In a deep dependency graph like you often get with npm, it's very critical that the leaves, in particular, are maximally compatible - and all it takes is one bad dep to knowingly or unknowingly break a site on various browsers.