Linux Foundation Launches JS Foundation

JavaScript is a high-level, dynamic, untyped and interpreted programming language used in most modern day web applications. With thousands of modules in NPM, the JavaScript ecosystem is the largest open source platform. And while the language is standardized in a vendor-neutral ECMAScript language specification, the ecosystem is deeply convoluted and fragmented.

To address this issue, The Linux Foundation created the JS Foundation, which will provide technical governance and assistance for a range of JavaScript-oriented open-source projects. The aim is to facilitate the adoption and development of essential JavaScript solutions and technologies. To understand why we need a JavaScript foundation, a walk down memory lane is necessary.

The turmoil surrounding the specification has been hanging around since inception. In 1995, Netscape’s Brendan Eich released Mocha, precursor for the current JavaScript. In the same year, to avoid trademark issues, Mocha suffered a few name changes: Live Wire, Live Script and, in December 1995, became JavaScript.

In 1996, Netscape 2 was launched, with JavaScript being one of its main features. Concurrently, Microsoft, implemented their interpretation of JavaScript, the Jscript. The same year, the European Computer Manufacturers Association produced the ECMAscript standard which embodied the JavaScript core syntax.

The development cycle continued, and in 1999, ES3 was released. The now obsolete standard is considered by many as being the baseline for modern day JavaScript. Divergences between various players (remember AS3, ES4, E4x, Tamarin, Jscript.net) delayed the adoption of the next specifications until 2009. In the meantime, developer communities rallied in support to JavaScript and libraries such as jQuery, Dojo and Mootools were released. The Ajax group of technologies restyled the concept of web pages, bringing a new era in web development.

In 2009, as a result of a reconciliation between the key stakeholders behind JavaScript, ECMAScript 5 was released. The subsequent version of the standard, the ES6 (ECMAScript 2015), finalized in June 2015, significantly updated JavaScript’s syntax and added features such as arrow functions, iterators, typed arrays etc. The 2015 release was significant, however it took six years to be standardized. Such a timeframe is not viable in the current web ecosystem. Furthermore, this release cycle causes two major problems:

New features which are ready to deliver are postponed until the new release is adopted

Incomplete or inconsistent features are hurried up to avoid being postponed for a future release

In order to address this issues, TC39 (Technical Committee 39), the committee that oversees the ECMAScript standard, adopted a rapid release process (TC39 process), which focuses on agility rather than quantity. The result of the release cycle is the 2016 iteration of ECMAScript language specification which includes only two new features. Compared to previous release cycles, this may seem like a rather frugal specification however, this strategy should favor the implementation of innovative and qualitative features allowing JavaScript to remain cutting edge for the foreseeable future.

Do We Need Another Foundation?

The latest specification is emblematic for the monolithic consensus that the stakeholders behind JavaScript achieved (hopefully, we’ll never have another ECMAScript 4). However, standardization alone is not a panacea for JavaScript. JavaScript’s main problem is what makes it great: the ecosystem. While the developer has the opportunity to choose whatever tool, library or framework are suitable for the project, the fragmentation and interdependence that accompanies selected assets is bound to add uncertainty to an already volatile environment. In fact, a few months ago, JavaScript was close to reaching an event horizon. The Koculu JavaScript fiasco occurred when a developer unpublished more than 200 packages as a result of a trademark litigation between the developer and a third party. Thousands of projects that relied on the unpublished packages failed.

To contribute to a better ecosystem, the JS Foundation is designed to promote best practices and policies that will determine high-quality standards and sustainable contributions.

“The JS Foundation aims to support a vast array of technologies that complement projects throughout the entire JavaScript ecosystem. JavaScript is a pervasive technology, blurring the boundaries between server, client, cloud and IoT. We welcome any projects, organizations or developers looking to help bolster the JavaScript community and inspire the next wave of growth for application development,” said Kris Borchers, executive director of the JS Foundation.

The foundation will focus on mentoring client and server side application libraries, mobile application testing frameworks, JavaScript engines and other emerging JavaScript technologies.

Sizzle: JavaScript CSS selector engine designed to be easily dropped in to a host library

Webpack: Renowned modules bundler

Governance Model

At its core, the JS Foundation is based on a community-driven model. To achieve its goal to implement adequate quality development standards, open governance and healthy community development practices, the foundation implements a dual governance model. The Technical Advisory Committee provides project-based technical advice while the Board of Directors supervises the day-to-day operations. This bicameral mechanism ensures alignment between the technical communities and members.

The new project also has the backing of the Node.js Foundation. Both foundations have closely aligned goals, however, according to Mikael Rogers, Node.js Foundation Community Manager, the JS Foundation will be able to fulfill a critical goal that the Node.js Foundation hasn’t taken on – supporting third-party packages.

JS Foundation and ECMAScript

While the foundation is not assuming jurisdiction over ECMAScript, the official specification underlying JavaScript, it will collaborate with standards bodies to promote the open standards that browser vendors and developers rely upon.