# Why Babel, Webpack, & Gulp?
Babel transforms ES6 to ES5. It also allows custom transforms – and the community has created a lot of them. In particular, Babel has transforms for ES7 features like async/await and decorators. It also transforms your React JSX.
There are two module bundling tools which dominate the landscape: Browserify and Webpack. Browserify teaches browser-based apps to pretend to be node modules. Webpack is more generalized browser app dependency packaging.
Both have scary example configurations in the wild. The author prefers his own terse webpack config.
Wiki's matrix chat brought my attention to Polymer. Although `polymer` is it's own command-line application too, the example used `bower`. Bower's website says "we're still here, but use `yarn` and `webpack` for new projects."
Everyone has their own build tools. There's many ways to write modules. There's many ways to do promises. There's server-side vs browser-side cultural differences. Many different test languages.
I guess this is also true of any large programming ecosystem. It's hard to get started on projects when there are so many choices to make before you can even get started.