[Python-ideas] JS’ governance model is worth inspecting

James Lu jamtlu at gmail.com
Fri Sep 21 16:29:57 EDT 2018


> Babel's primary purpose is transpiling to run on older browsers, which isn't that much of an issue with Python. It's also complicated a bit by the large number of implementations that *must* be developed in sync, again due to running in user's browsers. 
It’s true that one of Babel’s purposes is to transpile to older browsers. However, if you look at the React Native project template (a fairly typical JavaScript project template), the Babel transpiler preset looks like this:
- Remove Flow and transpile JSX: these are language extensions for type hinting and inline XML, not intended to be merged with mainline JavaScript. 
- Transpile Standardized JavaScript to older JavaScript 
- Stage-3 Proposal: adds dedicated syntax for setting static and instance variables outside of the constructor but within the class.
- Stage-1 Proposal: syntax to support trailing comma in functions
function foo(
a,
b,
c,
) { }
Inspired from Python’s syntax:
def foo(a,
              b, 
              c,
             ):
    ...

As you can see, two non-standard features under consideration for inclusion in the standard are included in the preset. This inclusion of non-standard features is typical for JS starter projects. One of the requirements for advancing stages is seeing practical use in the industry.

Since almost everyone uses Babel anyways, this four stage process acts as a way to gain consensus on the base set of JS features. 

Almost all of the newest standard JS took this route of unofficial use before official inclusion. 


More information about the Python-ideas mailing list