10 days to build, eternity to perfect
The NCSA Mosaic web browser played a huge role in making the web more user friendly. The “Mosaic” name itself actually referred to its ability to handle various internet protocols such as NNTP, Gopher, FTP, and HTTP.
A year after the NCSA Mosaic launch, Netscape launched its own web browser which was considered more advanced and more usable. Within the first four months of its release, it had already taken three-quarters of the browser market.
In late 1995, Microsoft was starting to catch on to the competitive threat the web posed. So the team at Microsoft started the Internet Explorer (IE) project in an attempt to take control of the emerging technology from Netscape through an “embrace, extend, extinguish” strategy. Microsoft was now a threat to Netscape.
In response, Netscape decided to target a larger audience by incorporating a scripting language which would allow interactions with the DOM. To achieve this, they collaborated with Sun Microsystems to embed the newly created Java programming language, and hired Brendan Eich to embed the Scheme language.
In comparison to Microsoft, who had Visual C++ for professional programmers and a Visual Basic scripting language for amateurs, Netscape wanted a simpler companion script to Java that mimicked what Microsoft was offering.
The initial version Eich created was called Mocha. It was important to both Netscape and Sun that Mocha “looked like Java.” To accommodate this, Eich used syntax influenced by C, and implemented naming conventions that are similar to those found in Java. Eich also applied the prototype-based object model from the Self language, meaning Mocha would have objects that inherit directly from other objects.
Unfortunately, Eich was unable to fulfill his original goal of implementing Scheme in Mocha. However, he was influenced by it to add Lisp-like first-class functions. This essentially treated functions as variables. So in the end, Mocha had the syntax of Java, the object-orientation of Self, and the functional style of Scheme.
ECMAScript 1 (ES1) was released in 1997 with ES2 released in the following year. Not much changed between these two versions. However, in 1999, the release of ES3 added strict equality, regular expressions, switch statements, and try/catch handling. ES3 was the last major update to the ECMAScript specification for almost a decade.
The first draft of ECMAScript 4 was dated February 1999, and over time many features were proposed, including classes, interfaces, and optional type annotations. ES4 was beginning to look more like our modern-day version of TypeScript. Crockford, who was involved with TC39 during this period, was concerned that the proposal was too complex and bloated. Microsoft agreed, refusing to have any part of the ES4 proposal.
With Internet Explorer still dominating the browser market at 90 percent, Microsoft contributed to ECMA, but mostly played by their own rules, shipping new features for JS for their browser only. This, coupled with Microsoft backing out of ES4 discussions, led to two different proposals running at the same time: ES4 and ES3.1.
This early to mid-2000s era is sometimes referred to as “The Dark Ages,” as it slowly transformed into a renaissance by the end of the decade.
Node.js was created by Google software engineer Ryan Dahl in 2009, and adopted a variation of the CommonJS specification. The success of Node was partially due to the release of more complex web apps such as YouTube and Facebook, which proved to web developers that top-notch web experiences were possible.
Once Node reached maturity, people saw the advantages in terms of speed, server costs, and learning costs. This led Node to be used and adopted by many startups, eventually bringing about frameworks such as Electron used for building desktop applications) and Meteor (used for producing cross-platform code).
After the long struggle and ultimate failure of ES4 in 2008, TC39 focused on ES3.1. ES4 was already recognized as a specific variant of ECMAScript with Adobe’s ActionScript for Flash, so the committee decided to rename ES3.1 to ECMAScript 5 to avoid confusion.
None of these changes required major syntax updates, and ES5 was overall a modest improvement that helped JS become more usable. It became fully supported by all browsers in 2014.
Knockout JS released in July of 2010, and helped connect parts of the UI to a data model using declarative bindings, but lacked a strict application structure that made later frameworks more popular.
In October of the same year, Jeremy Ashkenas released Backbone, the first framework aimed at creating single-page applications. Ashkenas had seen how messy a large JQuery application could become and wanted to create a cleaner approach.
The same month Backbone released, Google engineer Misko Hevery unveiled Angular, which was the first framework that provided a complete architecture for front-end applications. Angular was an all-inclusive framework, compared to Backbone’s lightweight approach, and it quickly became popular.
It became quickly apparent that the plans for ES6 Harmony were too ambitious for a single version, so its features had to be split into two groups. The features considered to have the highest priority were shipped first in ECMA2015. After Harmony’s initial release, TC39 made a decision that ECMAScript would have yearly, smaller releases, in an attempt to avoid the mishap with ES4, and to get out some of the lower-priority features on a more regular basis.
This major update actually included many features originally proposed for ES4, like the addition of classes as syntactic sugar and the addition of a modules system, but left out the more controversial features like optional type annotations.
In 2016, the core version of Babel was downloaded 5 million times a month. However, as of 2018, all major browsers support ES6 and use of these generic transpilers has greatly decreased.
Use of Angular waned during this time period, as other new frameworks gained popularity. But in 2016, Google developers released Angular 2, which was a substantial shift compared to the initial version. This new Angular required TypeScript, catered to the mobile users, and focused on creating large applications.
By 2014 npm had grown to over 50,000 packages, and developers needed an easy way to reuse those modules within their code. Browserify solved this by making the CommonJS module system and Node built-ins work in the browser by implementing polyfills and building a single bundle file.
Every feature added to ES.Next must first go through a five--stage process. We can reference proposals in stage three and four to most accurately predict the near future of ECMAScript, since these new features are near completion by stage three, and ready to be included in the standard by stage four. Proposals in stage zero through two are still being reviewed, and there’s no guarantee that they will ever be included in the standard. There are more than 90 proposals still in stage one, and while stage two features have a better chance to reach completion, they are still in a primitive state.
Sign up for our email newsletter. Nothing spammy about it. Just a monthly rundown of what we’re sharing.