{"action":"created","comment":{"url":"https://api.github.com/repos/babel/babel.github.io/pulls/comments/91219247","pull_request_review_id":11728642,"id":91219247,"diff_hunk":"@@ -0,0 +1,226 @@\n+---\n+layout: post\n+title:  \"The Future of Babel\"\n+author: Henry Zhu\n+date:   2016-11-29 11:00:00\n+categories: announcements\n+share_text: \"The Future of Babel\"\n+---\n+\n+How we're doing, where we want to go, and how you can help!\n+\n+> Previous issues: [Babel Roadmap #4130](https://github.com/babel/babel/issues/4130), [6.0 #2168](https://github.com/babel/babel/issues/2168)\n+\n+- Project Maintenance\n+- Current Status: Where We are Now\n+- Future: Where We Want to Go!\n+\n+## Project Maintenance\n+\n+Maintaining any large open source project could deserve its own article, but Babel itself covers a lot of ground: core packages, plugins, build integrations such as gulp, webpack, etc (many of which we ourselves may not use), and more. We want to be able to support community plugins, presets, and ideas.\n+\n+Babel has its place in many tutorials, guides, talks, etc for various frameworks. The project itself has definitely helped me to understand the language better through bug fixes and support questions. We are active on Twitter, Slack, and GitHub across other projects that use Babel. We have to balance new features, bug fixes, browser support, speed of compilation/generated code, plugin options, ease of use, collaborating with individuals, big companies, libraries, and more.\n+\n+We want to continue supporting the JavaScript toolchain: complilation, linting, minification, codemods, code coverage, etc.\n+\n+## Current Status\n+\n+### Maintaining Babel plugins [for each proposal in TC39](https://github.com/tc39/proposals) starting from stage 0\n+\n+In short, proposal champions benefit from getting feedback early and often. Babel is fundamental in the TC39 process given its place in the ecosystem. It's significantly easier for a developer to update a `.babelrc` file than a browser flag. It's also much faster to write a Babel plugin than implement the feature natively.\n+\n+Babel uses [TC39's concept of stages](http://babeljs.io/docs/plugins/#stage-x-experimental-presets-) to categorize its experimental plugins.\n+\n+Users should be able to easily use features before they are actually implemented in browsers in [stage 4 of the proposal process](https://tc39.github.io/process-document/).\n+\n+This is the core of Babel. It had its start as a JavaScript compiler for ES6 back when it was still called 6to5.\n+\n+The proposals process often takes months and may involve signficant iteration: some can change in syntax or even get dropped. Given TC39 meets every 2 months, the plugins should be updated as meetings happen so that users can be in sync and involved with the standards process.\n+\n+There isn't enough time or resources to maintain each plugin, especially when there are spec updates.\n+\n+Some transforms are simply out of date such as decorators. Logan had to port the previous spec [babel-plugin-transform-decorators-legacy](https://github.com/loganfsmyth/babel-plugin-transform-decorators-legacy) for Babel 6 and we haven't had annyone able to rewrite it for the updated spec.\n+\n+Another example: [babel/babel#3473 - Async iteration proposal](https://github.com/babel/babel/pull/3473) wasn't merged for so long because we just didn't have time to review it. By the time it was merged it had already moved from stage 2 to stage 3.\n+\n+### Maintaining other ecosystem plugins: JSX/Flow.\n+\n+There is both a React and a Flow team at Facebook and they have many related issues/PRs to review.\n+\n+- [React plugins](https://babeljs.io/docs/plugins/#react)\n+- [Flow plugin](https://babeljs.io/docs/plugins/transform-flow-strip-types)\n+\n+### Autoprefixer for Babel via [babel-preset-env](https://github.com/babel/babel-preset-env)\n+\n+This is something that is very important as we move forward to a point where users are compiling a specific set of transforms while the browsers support a specific set of features. There is a constant sliding window. This preset picks the right amount of plugins supported by the target environments so that the code can be fast/smaller.\n+\n+The goal of this effort is to make it simple to ship native code while allowing users to use the latest spec features. This will result in smaller payloads to users.\n+\n+The next big feature would be dynamic checking of polyfills as well as syntax as described in [babel/babel-preset-env#20](https://github.com/babel/babel-preset-env/issues/20).\n+\n+### Linting via [babel-eslint](https://github.com/babel/babel-eslint)\n+\n+As long as you want to lint JavaScript with experimental features (stage x, types) that ESLint proper won't support yet.\n+\n+> Future: Better interop with ESLint (hook into scope, traversal), possibility of writing an ESLint rule with Babel APIs, running ESLint rules as plugins/presets?\n+\n+### Minification\n+\n+[babel/babili](https://github.com/babel/babili) was created as a future-proof minifier.\n+\n+It will be continually updated to take advantage of the latest JavaScript features (ES2015+ aware). Each transform can be independent and also pluggable.\n+\n+### Codemods / Refactoring\n+","path":"_posts/2016-11-29-future.md","position":null,"original_position":74,"commit_id":"68f66f7d8fca75c2d0b72598278e3ecbadafa25d","original_commit_id":"ab9bc8bb0f99a263b229b49c7272820186261338","user":{"login":"addyosmani","id":110953,"avatar_url":"https://avatars.githubusercontent.com/u/110953?v=3","gravatar_id":"","url":"https://api.github.com/users/addyosmani","html_url":"https://github.com/addyosmani","followers_url":"https://api.github.com/users/addyosmani/followers","following_url":"https://api.github.com/users/addyosmani/following{/other_user}","gists_url":"https://api.github.com/users/addyosmani/gists{/gist_id}","starred_url":"https://api.github.com/users/addyosmani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/addyosmani/subscriptions","organizations_url":"https://api.github.com/users/addyosmani/orgs","repos_url":"https://api.github.com/users/addyosmani/repos","events_url":"https://api.github.com/users/addyosmani/events{/privacy}","received_events_url":"https://api.github.com/users/addyosmani/received_events","type":"User","site_admin":false},"body":"Agree with Dan. I imagine not as many folks know what codemods are as we might like :)","created_at":"2016-12-07T03:02:43Z","updated_at":"2016-12-07T03:02:43Z","html_url":"https://github.com/babel/babel.github.io/pull/1014#discussion_r91219247","pull_request_url":"https://api.github.com/repos/babel/babel.github.io/pulls/1014","_links":{"self":{"href":"https://api.github.com/repos/babel/babel.github.io/pulls/comments/91219247"},"html":{"href":"https://github.com/babel/babel.github.io/pull/1014#discussion_r91219247"},"pull_request":{"href":"https://api.github.com/repos/babel/babel.github.io/pulls/1014"}}},"pull_request":{"url":"https://api.github.com/repos/babel/babel.github.io/pulls/1014","id":95824729,"html_url":"https://github.com/babel/babel.github.io/pull/1014","diff_url":"https://github.com/babel/babel.github.io/pull/1014.diff","patch_url":"https://github.com/babel/babel.github.io/pull/1014.patch","issue_url":"https://api.github.com/repos/babel/babel.github.io/issues/1014","number":1014,"state":"open","locked":false,"title":"WIP Post","user":{"login":"hzoo","id":588473,"avatar_url":"https://avatars.githubusercontent.com/u/588473?v=3","gravatar_id":"","url":"https://api.github.com/users/hzoo","html_url":"https://github.com/hzoo","followers_url":"https://api.github.com/users/hzoo/followers","following_url":"https://api.github.com/users/hzoo/following{/other_user}","gists_url":"https://api.github.com/users/hzoo/gists{/gist_id}","starred_url":"https://api.github.com/users/hzoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hzoo/subscriptions","organizations_url":"https://api.github.com/users/hzoo/orgs","repos_url":"https://api.github.com/users/hzoo/repos","events_url":"https://api.github.com/users/hzoo/events{/privacy}","received_events_url":"https://api.github.com/users/hzoo/received_events","type":"User","site_admin":false},"body":"> Might want to view the rendered form\r\n\r\nStill WIP but wanted feedback on the generic topics covered, edits\r\n\r\n## Many TODOs 😅\r\n\r\n- [ ] team/project health\r\n- [ ] contributing: rfcs, governance, etc\r\n- [x] where to contribute\r\n- [x] explain each section more for those without the context\r\n- [x] plugin ecosystem (how we can help)\r\n- [x] speed (of parser, individual plugins, general transformation, generator)","created_at":"2016-11-30T04:10:24Z","updated_at":"2016-12-07T03:02:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a94e6e5b4004c966d599ce124189a43f22e2cc67","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/babel/babel.github.io/pulls/1014/commits","review_comments_url":"https://api.github.com/repos/babel/babel.github.io/pulls/1014/comments","review_comment_url":"https://api.github.com/repos/babel/babel.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/babel/babel.github.io/issues/1014/comments","statuses_url":"https://api.github.com/repos/babel/babel.github.io/statuses/68f66f7d8fca75c2d0b72598278e3ecbadafa25d","head":{"label":"babel:future","ref":"future","sha":"68f66f7d8fca75c2d0b72598278e3ecbadafa25d","user":{"login":"babel","id":9637642,"avatar_url":"https://avatars.githubusercontent.com/u/9637642?v=3","gravatar_id":"","url":"https://api.github.com/users/babel","html_url":"https://github.com/babel","followers_url":"https://api.github.com/users/babel/followers","following_url":"https://api.github.com/users/babel/following{/other_user}","gists_url":"https://api.github.com/users/babel/gists{/gist_id}","starred_url":"https://api.github.com/users/babel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babel/subscriptions","organizations_url":"https://api.github.com/users/babel/orgs","repos_url":"https://api.github.com/users/babel/repos","events_url":"https://api.github.com/users/babel/events{/privacy}","received_events_url":"https://api.github.com/users/babel/received_events","type":"Organization","site_admin":false},"repo":{"id":26390088,"name":"babel.github.io","full_name":"babel/babel.github.io","owner":{"login":"babel","id":9637642,"avatar_url":"https://avatars.githubusercontent.com/u/9637642?v=3","gravatar_id":"","url":"https://api.github.com/users/babel","html_url":"https://github.com/babel","followers_url":"https://api.github.com/users/babel/followers","following_url":"https://api.github.com/users/babel/following{/other_user}","gists_url":"https://api.github.com/users/babel/gists{/gist_id}","starred_url":"https://api.github.com/users/babel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babel/subscriptions","organizations_url":"https://api.github.com/users/babel/orgs","repos_url":"https://api.github.com/users/babel/repos","events_url":"https://api.github.com/users/babel/events{/privacy}","received_events_url":"https://api.github.com/users/babel/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/babel/babel.github.io","description":":globe_with_meridians: The Babel documentation website","fork":false,"url":"https://api.github.com/repos/babel/babel.github.io","forks_url":"https://api.github.com/repos/babel/babel.github.io/forks","keys_url":"https://api.github.com/repos/babel/babel.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/babel/babel.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/babel/babel.github.io/teams","hooks_url":"https://api.github.com/repos/babel/babel.github.io/hooks","issue_events_url":"https://api.github.com/repos/babel/babel.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/babel/babel.github.io/events","assignees_url":"https://api.github.com/repos/babel/babel.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/babel/babel.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/babel/babel.github.io/tags","blobs_url":"https://api.github.com/repos/babel/babel.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/babel/babel.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/babel/babel.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/babel/babel.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/babel/babel.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/babel/babel.github.io/languages","stargazers_url":"https://api.github.com/repos/babel/babel.github.io/stargazers","contributors_url":"https://api.github.com/repos/babel/babel.github.io/contributors","subscribers_url":"https://api.github.com/repos/babel/babel.github.io/subscribers","subscription_url":"https://api.github.com/repos/babel/babel.github.io/subscription","commits_url":"https://api.github.com/repos/babel/babel.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/babel/babel.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/babel/babel.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/babel/babel.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/babel/babel.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/babel/babel.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/babel/babel.github.io/merges","archive_url":"https://api.github.com/repos/babel/babel.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/babel/babel.github.io/downloads","issues_url":"https://api.github.com/repos/babel/babel.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/babel/babel.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/babel/babel.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/babel/babel.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/babel/babel.github.io/labels{/name}","releases_url":"https://api.github.com/repos/babel/babel.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/babel/babel.github.io/deployments","created_at":"2014-11-09T08:29:53Z","updated_at":"2016-12-04T11:51:22Z","pushed_at":"2016-12-07T02:51:52Z","git_url":"git://github.com/babel/babel.github.io.git","ssh_url":"git@github.com:babel/babel.github.io.git","clone_url":"https://github.com/babel/babel.github.io.git","svn_url":"https://github.com/babel/babel.github.io","homepage":"https://babeljs.io/","size":16835,"stargazers_count":237,"watchers_count":237,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":396,"mirror_url":null,"open_issues_count":55,"forks":396,"open_issues":55,"watchers":237,"default_branch":"master"}},"base":{"label":"babel:master","ref":"master","sha":"aff4f5cfc2d93b418fd50bdb49b8d33fa3bf0171","user":{"login":"babel","id":9637642,"avatar_url":"https://avatars.githubusercontent.com/u/9637642?v=3","gravatar_id":"","url":"https://api.github.com/users/babel","html_url":"https://github.com/babel","followers_url":"https://api.github.com/users/babel/followers","following_url":"https://api.github.com/users/babel/following{/other_user}","gists_url":"https://api.github.com/users/babel/gists{/gist_id}","starred_url":"https://api.github.com/users/babel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babel/subscriptions","organizations_url":"https://api.github.com/users/babel/orgs","repos_url":"https://api.github.com/users/babel/repos","events_url":"https://api.github.com/users/babel/events{/privacy}","received_events_url":"https://api.github.com/users/babel/received_events","type":"Organization","site_admin":false},"repo":{"id":26390088,"name":"babel.github.io","full_name":"babel/babel.github.io","owner":{"login":"babel","id":9637642,"avatar_url":"https://avatars.githubusercontent.com/u/9637642?v=3","gravatar_id":"","url":"https://api.github.com/users/babel","html_url":"https://github.com/babel","followers_url":"https://api.github.com/users/babel/followers","following_url":"https://api.github.com/users/babel/following{/other_user}","gists_url":"https://api.github.com/users/babel/gists{/gist_id}","starred_url":"https://api.github.com/users/babel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/babel/subscriptions","organizations_url":"https://api.github.com/users/babel/orgs","repos_url":"https://api.github.com/users/babel/repos","events_url":"https://api.github.com/users/babel/events{/privacy}","received_events_url":"https://api.github.com/users/babel/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/babel/babel.github.io","description":":globe_with_meridians: The Babel documentation website","fork":false,"url":"https://api.github.com/repos/babel/babel.github.io","forks_url":"https://api.github.com/repos/babel/babel.github.io/forks","keys_url":"https://api.github.com/repos/babel/babel.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/babel/babel.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/babel/babel.github.io/teams","hooks_url":"https://api.github.com/repos/babel/babel.github.io/hooks","issue_events_url":"https://api.github.com/repos/babel/babel.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/babel/babel.github.io/events","assignees_url":"https://api.github.com/repos/babel/babel.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/babel/babel.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/babel/babel.github.io/tags","blobs_url":"https://api.github.com/repos/babel/babel.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/babel/babel.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/babel/babel.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/babel/babel.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/babel/babel.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/babel/babel.github.io/languages","stargazers_url":"https://api.github.com/repos/babel/babel.github.io/stargazers","contributors_url":"https://api.github.com/repos/babel/babel.github.io/contributors","subscribers_url":"https://api.github.com/repos/babel/babel.github.io/subscribers","subscription_url":"https://api.github.com/repos/babel/babel.github.io/subscription","commits_url":"https://api.github.com/repos/babel/babel.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/babel/babel.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/babel/babel.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/babel/babel.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/babel/babel.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/babel/babel.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/babel/babel.github.io/merges","archive_url":"https://api.github.com/repos/babel/babel.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/babel/babel.github.io/downloads","issues_url":"https://api.github.com/repos/babel/babel.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/babel/babel.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/babel/babel.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/babel/babel.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/babel/babel.github.io/labels{/name}","releases_url":"https://api.github.com/repos/babel/babel.github.io/releases{/id}","deployments_url":"https://api.github.com/repos/babel/babel.github.io/deployments","created_at":"2014-11-09T08:29:53Z","updated_at":"2016-12-04T11:51:22Z","pushed_at":"2016-12-07T02:51:52Z","git_url":"git://github.com/babel/babel.github.io.git","ssh_url":"git@github.com:babel/babel.github.io.git","clone_url":"https://github.com/babel/babel.github.io.git","svn_url":"https://github.com/babel/babel.github.io","homepage":"https://babeljs.io/","size":16835,"stargazers_count":237,"watchers_count":237,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":396,"mirror_url":null,"open_issues_count":55,"forks":396,"open_issues":55,"watchers":237,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/babel/babel.github.io/pulls/1014"},"html":{"href":"https://github.com/babel/babel.github.io/pull/1014"},"issue":{"href":"https://api.github.com/repos/babel/babel.github.io/issues/1014"},"comments":{"href":"https://api.github.com/repos/babel/babel.github.io/issues/1014/comments"},"review_comments":{"href":"https://api.github.com/repos/babel/babel.github.io/pulls/1014/comments"},"review_comment":{"href":"https://api.github.com/repos/babel/babel.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/babel/babel.github.io/pulls/1014/commits"},"statuses":{"href":"https://api.github.com/repos/babel/babel.github.io/statuses/68f66f7d8fca75c2d0b72598278e3ecbadafa25d"}}}}
{"actor":{"display_login":"addyosmani"}}