### babel stage about ES standard

[TC39 Process](https://docs.google.com/document/d/1QbEE0BsO4lvl7NFTn5WXWeiEIBfaVUF7Dk0hpPpPDzU/edit)  

TC39 is the technical committee from ECMA that writes the ECMAScript standard.
Their process is categorised into 5 stages:

  -  State 0 - Strawman  
      *  Allow input into the specification  
      
      ```
        /* Stage 0 : class property */

        class Person {
          firstName = "Sebastian";
          static lastName = "McKenzie";
        }

        assert(new Person().firstName, "Sebastian");
        assert(Person.lastName, "McKenzie");
      ```
  -  State 1 - Proposal  
      *  Make the case for the addition  
      *  Describe the shape of solution  
      *  Identify potential challenges  
      
      ```
        /* State 1:  Decorators */

        function concat(...args) {
          let sep = args.pop();

          return function(target, key, descriptor) {
            descriptor.initializer = function() {
              return args.map(arg => this[arg]).join(sep);
            }
          }
        }

        function autobind(target, key, descriptor) {
          var fn = descriptor.value;
          delete descriptor.value;
          delete descriptor.writable;
          descriptor.get = function () {
            var bound = fn.bind(this);
            Object.defineProperty(this, key, {
              configurable: true,
              writable: true,
              value: bound
            });
            return bound;
          };
        }

        class Person {
          firstName = "Sebastian";
          lastName = "McKenzie";

          @concat("firstName", "lastName", " ") fullName;
          @concat("lastName", "firstName", ", ") formalName;

          @autobind
          getFullName() {
            return `${this.firstName} ${this.lastName}`;
          }
        }

        assert(new Person().fullName, "Sebastian McKenzie");
        assert(new Person().formalName, "McKenzie, Sebastian");
        assert(new Person().getFullName.call(null), "Sebastian McKenzie");
      ```
  -  State 2 - Draft  
      *  Precisely describe the syntax and semantics using formal spec language 
  -  State 3 - Candidate  
      *  Indicate that further refinement will require feedback from implementations  
  -  State 4 - Finished  
      *  Indicate that the addition is ready for inclusion in the formal ECMAScript standard  


Proposals that are **state 2 or above** are enabled in Babel by default

**[more about babel 5.0](http://babeljs.io/blog/2015/03/31/5.0.0/)**

