Skip to content

Instantly share code, notes, and snippets.

@nrn
Forked from othiym23/cfp-jsconf2014.md
Last active January 2, 2016 18:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nrn/8344531 to your computer and use it in GitHub Desktop.
Save nrn/8344531 to your computer and use it in GitHub Desktop.

The current schedule for the completion of ECMAScript 6, the next version of JavaScript, dictates that the language specification be finished by the end of the second quarter of 2014, and most browser vendors have made informal commitments to have ES6 implemented by the end of the year. Over the last couple years, we've heard a lot about the many new features in ES6, excitement, fear, and the inevitable bickering that comes with change. ES6 stands to be the most substantial change to JavaScript since ES4 (which didn't work out that great, as most users of ES5 are aware).

With this much change comes a lot of complexity. Many of the new features (like generators or proxies) are powerful, basic abstractions, and as such combine in complex (and potentially unexpected) ways. In many ways, it offers the possibility of returning us to the wild frontier days that JavaScript only recently left behind, with library and framework vendors each choosing their own combinations of features to build powerful (and complicated) architectures that can really only be understood on their own terms.

However, as a community we've learned a lot over the last half decade or so, and I think we've learned how to tackle this problem head on. I've come up with a strategy that I think would allow us to collaboratively get to a good place with ES6 relatively quickly:

  1. Experiment with the new, powerful abstractions in ES6 and see how they compose and combine
  2. Concentrate on distinguishing between "what's good" vs "what's cool", and ensuring we give the former more weight when building new libraries and frameworks.
  3. Build on what we've already got and incrementally fold the new features into existing JS idioms where they clearly improve things.
  4. Work together to converge on a new style of "Effective JavaScript" using a new set of "Good Parts".
  5. And, if some of them turn out to be obviously problematic, try to deprecate them as quickly as possible and move on.

It's up to us as a community to get out in front and provide tooling, documentation, and training that will help people use these new tools effectively, before folklore and superstition start to take root. And it's important to remember that finishing ES6 frees the JavaScript standards bodies to concentrate on ES7, where our feedback from ES6 will help them refine what comes next.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment