The Gift of Code

In the open source community, there is perhaps no greater gift than code. This is about that time 135,000 lines of gifted code created a new era of JavaScript


There is a period time known as Web 2.0, dating back to the early 2000’s. It was a turbulent time. So much so that among the many consequences of that era was a fissure in HTML standards, when a faction of browser makers split off fromT the W3C to create the Web Hypertext Application Technology Working Group, also known as the WHATWG. It’s stated objective was to bring HTML closer to the needs of real web applications, an effort that would eventually lead to HTML5 and the HTML living standard.

This was a time of innovation. Websites transformed by AJAX. Web applications made to replicate the look and feel of desktop programs. HTML that, once rendered, updated and animated. Dynamic HTML, as it was once known.

And yet JavaScript—the engine behind this innovation, the language that made it all possible—hardly advanced at all. An updated version of Javascript hadn’t been released since 1999, when the JavaScript standards body Ecma International released the specification for ECMAScript 3, an offshoot and standardized version of the Javascript language

As the browsers wars raged overhead, and the dot-com bubble burst, individuals and organizations that participated in Ecma had come up with theoretical drafts and new designs. There were new features to be added, language enhancements that had been forgotten in the rushed implementation of JavaScript’s first version. Inside of Ecma, it was known as ECMAScript 4. But others in the web community had started grouping these new ideas and features under the moniker JavaScript 2.

Still, after half a decade, there wasn’t anything solid to show for it.

There was, however, hope just over the horizon. Mozilla was one possible avenue for change. Netscape had attempted to fend off Microsoft for years, but by the end of the 1990’s, they had been outflanked and outmaneuvered. In a last ditch effort, AOL acquired the company for something close to a king’s ransom. AOL’s focus on enterprise customers meant little attention for the browser. Caught in a death spiral, and backed by their employees, Netscape instead chose to gift their browser to the open source community and spun off Mozilla as a non-profit to take charge.

For years, Mozilla retooled the codebase, piling rewrite on top of rewrite. Eventually, in 2004, they released Mozilla Firefox from the ashes of Netscape, a new browser focused on modern standards support. Firefox looked to be able to challenge even Microsoft, who’s lumbering Internet Explorer had seen very little developments in recent years.

At the same time, Adobe had found a use for Javascript.

Macromedia had been using a version of ECMAScript they called ActionScript, all the way back in 2000, beginning with the release of Flash version 5. ActionScript powered Flash files in the same way JavaScript powered websites. It added a scripting layer that was able to make the software more interactive and dynamic.

People figured out all kinds of things to do with ActionScript, and it became a popular way to build applications for the web, even if it wasn’t grounded in core web technologies. As HTML, CSS, and JavaScript lagged behind, Flash offered a powerful alternative.

Flash websites like this one, for Rockstar Games released in 2000, drew on the strength of Flash design tools in combination with Actionscript, a move largely necessitated by the lack of progress in JavaScript development. via Web Design Museum”

In 2005, Macromedia was bought by Adobe, and Flash became an Adobe product. After the acquisition, Flash pushed ActionScript even further, bringing in a set of features that couldn’t even be found in the version of JavaScript running browsers (chief among them were extendable classes inside of the language, which never fully caught on).

To make that work in Flash, and without a reference implementation in browsers, Adobe was forced to develop their own way of rendering modern JavaScript. To do so, the Adobe team built a JavaScript Virtual Machine, known as Project Tamarin. A more cutting edge JVM than could be found in Mozilla Firefox or Internet Explorer.

This all culminated in a renewed push behind ECMAScript, a process that Adobe had been a part of for years already. Then, Adobe did what might seem like the unthinkable. In November of 2006, they gifted all of Project Tamarin, able to run the latest Javascript features, to the Mozilla project. The whole damn thing. All 135,000 lines of code. The hope was that Tamarin could jumpstart Mozilla’s internal JavaScript development and move things closer to an official specification and release for ECMAScript 4. A rising tide lift all boats. And Adobe was hoping they could catch the tide.

And it really, truly, almost worked. The announcement was met with a wave of excitement and enthusiasm from programmers and browser makers. It was seen as a huge win for open source software, and a push forward for JavaScript. With their combined strength, it felt like Adobe and Mozilla might be able to use Tamarin to roll over the sleeping giant Microsoft had let linger and actually get a new version of JavaScript drafted, standardized and widely adopted.

Almost immediately, plans were set into motion, backed by monkey themed project codenames. Popular purveyors of JavaScript and standards began sharing next steps for Tamarin. It was to be integrated into Mozilla’s JavaScript engine SpiderMonkey for sure, they said, but there were plans to try to slide it into Internet Explorer as well through a side door, using an installable plugin for IE codenamed ScreamingMonkey.

Yet ECMAScript 4 had been in development for almost a decade at that point. There had been so many stops and stars and half-drafted specifications that no one quite knew where to start. In the wake of the Tamarin announcement, even more members joined Ecma to try and keep up the momentum.

Within a year, it became clear that ECMAScript 4 was far too ambitious; and there was far too little agreement on what should be included. It buckled under the weight of its own promise, a language that couldn’t be implemented or adopted without slowing most of the web down as it did.

In August of 2008, Ecma officially moved on from ECMAScript 4 and began planning a much leaner version 5, released in 2009. Later that year, Mozilla announced that they would be moving away from Tamarin as well, and focusing on streamlining their existing JavaScript implementation. By 2009, Tamarin was discontinued.

Though the project did fade away1, the impact of Project Tamarin is hard to deny. It resuscitated a conversation that had laid dormant for half a decade. Without the momentum behind Tamarin, we may not have had ECMAScript 5.

In the end, Mozilla may have been better going by it’s original codename: Phoenix. As with so many other things with Mozilla, it has created a lot from the ashes of other projects.

  1. Bugzilla, Tamarin Graveyard ↩︎

Sources