This course has been updated! We now recommend you take the ES6: The Right Parts course.

Check out a free preview of the full JS.Next: ES6 / ES2015 course:
The "EcmaScript" Lesson is part of the full, JS.Next: ES6 / ES2015 course featured in this preview video. Here's what you'd learn in this lesson:

EcmaScript is a language specification. JavaScript is an implementation of EcmaScript. Aaron walks through the history of how EcmaScript became the standard and how we got to where we are today.

Get Unlimited Access Now

Transcript from the "EcmaScript" Lesson

>> [MUSIC]

>> Aaron Frost: This is how they do that. They're like, let's standardize it, so they have to find a standardization committee that can kind of be an independent party and own the API. And then they can just implement it as JavaScript. So Netscape reached out to this committee called Ecma, and it's independent of Microsoft and it's independent of Netscape too.

[00:00:27] And so in June of 97, they sit down in 96 and they're like, hey, let's read the whole thing and we need like x months to approve the whole thing. So they finally get it approved in June of 97 the JS, the JavaScript API becomes EcmaScript API, the interface that other people can implement.

[00:00:50] And it's the official API for ECMA, the official scripting API for Ecma, and a bunch of people immediately jump on board. People who have interest in the language and in implementing their own scripting language jump on board with EcmaScript. That's good. They're able to roll out some new features.

[00:01:09] They roll out ES2. They roll out ES3. Everything's going well. They still have a ton of ideas though when they get it is AS3 out in 99, and before we keep going, I'm going to define what Ecma is. Does anyone know what EcmaScript is? Hold on, well let me talk before I define EcmaScript vs JavaScript.

[00:01:33] Does anyone not understand the difference between EcmaScript and JavaScript? So, I'm gonna just go through it real quick. So EcmaScript is language spec, like they say this object will have this method on it. And if you call it, you should expect to pass at these parameters, and it will return you this type of a return value.

[00:01:51] So just kind of is a specification for a language, and JavaScript is a language that implements that spec. And there's other languages implement it as well. So the docs for EcmaScript, has anyone read them? They're not humanly digestible very well. They're tough to read unless you have a solid degree, and I don't.

[00:02:14] So they're still really, really hard for me to digest, and the JavaScript docs however will help you write code. They explain to you, hey, this is you're gonna call it and run it in JavaScript. So there's other implementations of the EcmaScript API though, like ActionScript is based on EcmaScript and Java's Nashorn is based on EcmaScript.

[00:02:38] And there's other out there. You guys could probably name a whole bunch more. But Ecma, it used to stand for the European Computer Manufacturer Association, and that's who they went to. Netscape goes to this European Computer Manufacturers Association to get this to be their center scripting API. But later they just rebrand as Ecma, so it doesn't mean European Computer Manufacturers Association anymore.

[00:03:07] Ecma is a noun. It's a name that they call themselves. It's a proper name. So their role is to facilitate discussions and make sure everyone is participating and keeping it positive. Does anyone, and Ecma puts a committee in charge of steering the EcmaScript API. Does anyone know the name of the committee?

[00:03:35] Besides him?
>> Speaker 2: TC 39.
>> Aaron Frost: TC 39, yeah. So TC 39, TC stands for technical committee. I don't know what the 39 is, but it's called TC 39. So Technical Committee 39, and the TC 39 is, they're the ones currently guiding it today. Does anyone have any friends on the TC 39?

[00:03:58] Acquaintances? No, okay. One guy. No one on the chat. All right, so I'm gonna go back. So ES3 is 1999, and more people started implementing this spec. It's constantly getting implemented, and browsers are becoming more important in 99. Remember we were about to have this huge boom that's coming up in 2000?

[00:04:27] And more people are getting involved in the technical committee, more people are caring about the direction the language. And they get two releases out, and then there's this huge gap. ES3 goes out in 99. ES4 begins in 2006. So we have this this notable gap with not a lot of the middle, so I wanted to kind of talk about what happened there real quick.

[00:05:03] So IE just kills Netscape, just blows them out of the water. Does everyone remember that, when Internet Explorer was all you used? And in 2003 Netscape ends. They have one thing they do before they go under though. They're like, open source all of it, so they open source all their stuff.

[00:05:25] And IE kind of gets their glory days, and the sandbagging happens. And we have this huge gap where there's not a lot of innovation. The EcmaScript standards body doesn't have any bite to like, hey stop doing the things that you're doing and everyone stay in together, because no one is really coming to the meetings anymore.

[00:05:44] So it's gonna take a savior to come back and stop this and kinda get things back on track, and then so the browser wars start. And the guys from Netscape start Mozilla, and we get Firefox. I think it wasn't called Firefox, does anyone remember what it was called?

[00:06:02] I think it was like, was it Phoenix? Something like that. I can't even remember the first name. I remember I used it, but I can't remember what it was called. Anyway so Mozilla's back. So Mozilla's new in town, and they care a lot about the browser, which is awesome.

[00:06:20] And in 2006 they're able to kindle everyone back into talking about ES4 again. So that was kind of the big gap explained there. That was why there was a big dead time for JavaScript specifically, and they start talking about ES4. They've got a lot of ideas that they left off back from 1999 when they did ES3, and some of the ideas conflict.

[00:06:49] And the implementations have different goals, like the different companies involved need different things out of EcmaScript, the API. And Crockford, he's like, let's get rid of the bad parts. Let's just keep the good parts, and Brendan Eich's like, no, let's get Microsoft to work on this generatively and and make the specs match.

[00:07:11] And Microsoft is like, no, we need to add all this extra stuff for JScript.Net. And Adobe's like, dude, we got Flash stuff going on. We needed classes and some other stuff that they needed. So there's a lot of pull in a bunch of different directions, right? So they come up with these two main pushes.

[00:07:27] They're like, hey, let's do one small release, and then a bunch of people jump on that camp and that's called ES3.1. And then there's another camp that's ES4, which is significantly bigger. So in ES1 we've got Mozilla, and we've got Adobe, and we've got Opera, and other people.

[00:07:51] And on ES4 we've got Microsoft pushing for ES4, and we've got Yahoo pushing for ES4, and there's other people in their camp as well. And they they spend a lot of time talking about this, and they don't do a lot of agreeing. And when you listen to them talk about it, there's kind of a falling out where it got really tough and not productive in those TC 39 meetings, and ultimately something's got to give in order for the language to progress.

[00:08:21] And of this fight, though, at the end they're like, okay, ES3 wins. The camp that wants to do a much smaller release, they're gonna win for now, and ES4 can become a thing that we do next. And so these are the ideas of the two camps. ES3 was lighter changes, strict mode, and remove some bad stuff.

[00:08:48] Note, don't add any new syntax, and this is what some people were fighting for. And then other people want some heavier changes, classes and other stuff like that. And they ended up giving in, the ES 4 people to ES 3.1, and when you look at it, a lot of what we're seeing in ES 6 is this ES 4 stuff that kind of got pushed.

[00:09:14] And so in 2008, the TC39 meets in Oslo, and everyone agrees, hey ES 4, we're gonna postpone it. ES 3.1, that's the new thing, and to represent all the progress we've made as a committee and as the standardization body, we're gonna rev the name, though, to ES 5.

[00:09:36] And we're gonna call it 3.1, we're gonna make it an official release we can call ES 5, which is why wasn't an ES 4. That's where ES 5 came from. And then we'll move on from there. And Brendan sends out an e-mail the next month. He's like, hey, we're working harmoniously now.

[00:09:55] Everything's feels like it's going better, anyway. All the other features that ever go into JavaScript are going into a bucket I'm gonna call Harmony. So a lot of us have heard Harmony features, that just means every feature that we want to implement, whether it's in the next version or the two versions or the third version from now, it goes into this huge harmony bucket.

[00:10:16] So in 2008 Brendan kind of emits the idea of the harmony bucket, and 2009 ES 5 is officially approved. 5.1 is officially approved in June of 2011, and currently, so the ES 6 is finalizing right now. And they're still making changes if you believe it, around modules and around classes and stuff.

[00:10:50] So it's still moving, even though they're trying to finalize it. Maybe they'll finalize it in June of next year. Browser vendors are currently working on ES6, and the TC39 is, while they're talking about some of these last features for ES6, they're talking about ES7 already in and kind of nailing down the proposals for that version.