Babel Roadmap

    We should run against (the JavaScript test suite). This is made easier with test262-harness. In addition, it would be great to have it run in , as announced by Bocoup.

    This will give us a few things:

    • Better confidence in Babel's output. More tests/coverage is better for catching regressions and finding spec bugs worth working on.
    • Can use these to help do a reverse test against any kind of "loose" mode. We can purposely fail a test when that option intends to not adhere to the spec.
    • Can use this new data instead of compat-table for @babel/preset-env.

    Polyfill behavior

    This is regarding https://github.com/babel/babel/tree/master/packages/babel-preset-env#usebuiltins-usage

    • Allow any substitute polyfill instead of core-js. You should be able to override anything (custom Promise, etc)
    • Make "usage" option the default after it is stable.

    Build/publish workflow

    Codemods for TC39 Proposals

    Increasing the quality of community plugins

    • Work with the community to create guides on how to write plugins or understand ASTs, etc
    • Analysis of API's/syntax used (Google BigQuery)
    • Have #blessed/sanctioned/curated packages according to some standard
      • Can use for smoke tests
      • Official testing package
      • Certain level of coverage, downloads, etc
      • Create a scoped namespace on github/npm for these? like webpack-contrib
      • Can enforce linting rules on apis?
      • Makes ecosystem changes easier if can notify and upgrade these plugins beforehand
      • Create a set of standard tests to verify against (handles all syntax)
      • Documented/tested set of options

    ASTExplorer

    • allow custom version of babel-standalone (same as REPL to allow per PR tests)
    • integrate with repl? (both are in react)
    • auto publish a plugin to npm?
    • create tests?
    • hook into codesandbox?

    • Use six-speed repo as a base, needs to apply for ES6 and proposals
    • Need continued maintainence

    Compiled Output Stats

    • The REPL just added a before/after code-size
    • Maybe difficult to do per transform

    Async Transforms

    Support having async plugins. Will require it to be opt-in and for all other plugins to be async.

    Plugin Ordering

    • Add before/after keys for plugins so they can specify order.
    • Possibily implement related plugins in the same "plugin" but just expose a flag out to the end-user.

    Babel Helpers (shared code)

    Repurpose babel / create babel-init

    We can re-use the babel package for a more simplified 0 config™ version

    Not sure what this looks like but had this idea for a really long time and didn't really get anywhere - the cli version could just be for libs? Maybe webpack/parcel would have it covered for apps?


    • Babel itself https://github.com/babel/babel/issues/6134
    • babel-core integrations (wrappers like , test frameworks, etc)
    • Libraries ((p)react, redux, vue)
    • Tools that use individual packages (debugger.html, prepack)
    • OSS Apps ()

    Better Debuggability

    Website/Docs

    • Translations
    • Real documentation on APIs
    • Up to date babel-handbook/merge into rehauled website
    • Link to common errors pages

    Better REPL

    • Dropdown examples/examples of syntax from github?
    • Import any package from npm (can give test examples for 3rd party plugins, debugging issues)
    • Run any plugin from npm
    • Create a plugin from the repl (can we merge it with ASTExplorer/codesandbox?), even publish, run from URL?
    • Import/Export a config file
    • Combine ^ with the ability to run the version of Babel in a PR/master.
    • Use plugin's tests in the repo as "examples" for docs.

    babel-bot

    A bot is really useful to do github/maintainer activities automatically.

    We haven't updated this in a long time due to Andrew being busy and not setting up the automatic infra on AWS. Switching will make updating actually real so we can add some new features which would save some headache.

    References: https://github.com/eslint/eslint-github-bot,

    Expanded Maintainer Guide

    Better onboarding/contributing guide

    • Guide to different aspects of contributing with real examples to issues/PRs

    Maintainers/Sustainability

    • Promote Open Collective, talking with companies about office hours, sponsorship, contracting?
    • Mentoring: Google Summer of Code/Rails Girls Summer of Code were great but was hard to keep up with volunteeers and I felt like we could be doing a lot more with full time help.
    • Maybe doing local meetups on contributing, or livestreaming development/maintenance work?
    • Should focus on bringing in maintainers that will lower the burden, not increase it even if there is upfront work

    Big Wishlist (might be out of scope/complex/ecosystem)

    • Should Babel operate multi-file/take in a dep graph?
    • Should Babel use type info (from other things like ts/flow/runtime info)
    • AST
      • Can we just move back to acorn + estree?
      • Should we switch to shift?
      • What about binary ast?