ES2015 is the last approved Javascript standard which includes a lot of improvements and features which Python developers are used to. Features like arrow functions, template strings, classes, destructuring, iterators and generators are all features that as Python developers we are used to and that greatly improve your life as a developer (if you don’t know what ES2015 brings, a quick overview of the new features is available at http://es6-features.org)

While ES2015 is now quite widespread, its support in browser is still lacking, which forces developers to use a transpiler to convert ES2015 code to current Javascript that can run in browsers. The problem is that so far using a transpiler was only available to NodeJS environment as most of the required tools only run on Node.

To make things even more complex, modern JS frameworks are now starting to embrace the same approach to allow simpler code bases. Both Angular2 and React introduced a preprocessing step to convert a simpler and easier to read code to the longer version that will actually run on the browser. So if you want to embrace both ES2015 and React you will need two transpiling phases. One for JSX (an HTML like language for JavaScript to generate the React DOM nodes) and one for ES2015.

Last but not least as ES2015 introduced modules support, and the lack of them for years lead to hundreds of different ways to implement modules in Javascript, you will also need a module loader or bundles packager.

This usually forces people to use tools like Webpack and BabelJS to solve the three previously mentioned tasks. Again both of them only work on NodeJS.

As Python developers this force us to always keep around two environments: Node and Python. Have two package manager: Npm and PIP and manage two list of requirements.

Clearly this was far from being perfect and lead many people to look for alternatives to manage everything from Python.

Good news is that it is actually possible.

To package modules WebAssets can be used instead WebPack and BabelJS can be run on DukPy (it actually comes bundled with DukPy).