So, in order to answer all those questions, we should go back 20 years in time – to the early years of the web when most people thought that the Internet was just a hackerish thing.
The early years
What is more, TC39 (Technical committee 39) was created to be in charge of the evolution of the standard as every new feature was coming from it.
Here is the right moment to say that the actual versions aren’t called ES1, ES2, ES3, etc. Their actual names are ECMAScript XXXX, where XXXX is the year of the release but developers shorten it to ES combined with the version number of the release for convenience purposes.
The abandoned release
After numerous controversial discussions, in July 2008, at a meeting in Oslo TC39 made a decision. ECMAScript 4 was abandoned, and a polished version of ECMAScript 3.1 was going to be released as ECMAScript 5. Finally, in December 2009, the new release was officially announced.
Moreover, TC39 decided that their entire development process should be revamped and started working on the planned improvements.
They agreed on three major things:
- Small improvements, no big promises
- Strict release lifecycle
- Community-driven improvements
In 2015, TC39 came out with ECMAScript 2015. This was the first version which followed the new development process and is currently the most popular standard version.
After the long years of discussions and considerations, the committee finally came to an agreement over a strict proposal lifecycle and fixed a yearly standard version as they recognized the need of upgraded versions in a timely manner. Moreover, the proposals became community-driven, instead of corporate-driven. But let’s dive deeper into the whole development process of one new ECMAScript functionalities.
It consists of one informal and four formal development “stages”:
As I mentioned before, everyone can propose a new functionality to be incorporated into the standard and all of those ideas are going into Stage 0 – “Strawperson”. This is the initial state of the feature proposal and there aren’t any specific requirements here, just coming up with a creative idea.
If that idea is favored by someone from the committee it goes to the next stage – Stage 1, Proposal. This is the first formal stage of a new feature development. The person who recommends the addition should provide an explanation of his motivation for introducing the extension. The member of committee who liked the idea becomes a “champion”, who is responsible for outlining the problem, discussed at the regular meetings and urging TC39 to review it. At this stage major changes are allowed.
If the feature has the committee’s approval, it goes to the next level – the list with Stage 2 “Draft” proposals. At that point the author should precisely describe the syntax and semantics, using formal spec language, as well as provide experimental implementation. Only incremental changes are allowed from that point onwards.
The next stage is called – Stage 3 “Candidate”. Reaching that phase means that the addition is almost done. Its semantics, syntax and API are completely described, and only modifications motivated by critical problems could be applied. Also, reaching this state means that all committee members have signed off that the feature should be included in a future standard version.
The final Stage 4 “Finished” means that the addition has been significantly tested and integrated in most popular browsers. All the proposals at Stage 4 are included in the next standard candidate draft at the beginning of February each year.
The whole process of giving life to one new feature could last from a couple of months to a few years. So, the main reason for adopting this development lifecycle is not to block ready-to-be-released features because of discussions on unfinished functionalities.
ECMAScript Release Lifecycle
Furthermore, the committee takes a specific approach when it comes to delivering the new standards succeeding ECMAScript 2015.
Here is an approximate timeline.
The new release Candidate Draft is introduced at the beginning of February. The next two months are a period for testing all the stage 4 proposals. At TC39’s Meeting in March all stage 4 proposals are incorporated and approved. The new specifications version is branched from master and only editorial changes are allowed. In the next three months ECMA reviews the proposal of the new version and if everything goes well, the official yearly release standard comes to life in July.
You might be wondering why you should know all those facts. What I wanted to show you with my article is the big effort that someone else does in order to make our lives as programmers easier and the end user’s experience more delightful.
So, here is my advice for all programmers – go for the newest version, it will minimize your efforts and make your life easier.
And if you are a business owner and you are wondering why your team insists on using new technologies and constantly refactoring the code, then give them a chance, new technologies don’t bite.