Adobe Donates Tamarin Code to Mozilla Foundation

Frank Hecker, the Excecutive Director of the Mozilla foundation has a comprehensive post on this announcement, which has been burning up the blogosphere (kind of).

By now the press release has gone out announcing Adobe's contribution to the Mozilla project of open source code for their ActionScript Virtual Machine (AVM2), and Brendan has blogged about it.

Adobe's Flash player executes applications written in ActionScript, a programming language that (in its current version, ActionScript 3.0) is based on the ECMAScript language specification and is therefore a sibling to JavaScript. As part of Flash Player 9 Adobe introduced a new virtual machine (AVM2) for executing ActionScript applications; among other things, AVM2 features a Just In Time (JIT) compiler that can convert ActionScript bytecode (the form into which ActionScript is initially compiled) into native machine instructions for much faster execution of ActionScript 3.0 applications.

Adobe has now taken the code for that AVM2 virtual machine implementation and released it as open source through the Mozilla project as Tamarin. Adobe will continue to develop the Tamarin code, working with other developers from the Mozilla community, and will be using it as the basis of the ActionScript virtual machine in future versions of their own products. The Mozilla project will use Tamarin as part of future versions of SpiderMonkey, the C-based JavaScript engine used in Firefox and other applications, and will include it in future versions of Firefox (beyond Firefox 3) that are built using Mozilla 2 technology.

The upshot is that future versions of the JavaScript engine built into Firefox and other projects built around Mozilla Foundation code will have access to the Tamarin/AVM2 virtual machine, including the JIT compiler, meaning JavaScript-based applications will run much faster. The current virtual machine in "SpiderMonkey" also converts JavaScript into bytecode, but doesn't, in turn, create platform-specific machine code at runtime, so this will be a significant speed enhancement that users of JavaScript-intensive applications (such as Google Maps) will definitely feel.

Many people are taking great pains to point out, of course, that this does not represent the open-sourcing of the Flash player. As one Flex engineer puts it: [link courtesy John Dowdell]

This is a major contribution from Adobe to the open-source community, but let me try to clarify what it is and what is isn't. The code being open-sourced is for the core AS3 language, not for anything specific to Flash. The contributed engine is able to execute a program that uses core classes of the language like Array, Date, RegExp, and XML. It is not be able to execute a program that use Flash-specific classes like Sprite, TextField, SharedObject, or URLLoader. In particular it supports no Flash graphics.

Mozilla will use this engine by adding browser-DOM classes such as Window, Document, Form, Anchor, etc., which are the "domain objects" that a browser manipulates, in the same way that Flash uses this engine by adding classes for its domain objects such as Sprites. Once this is done, webapp developers will be able to use AS3/ES4 as a fast, type-checked, object-oriented "JavaScript" if they want to.

So, beyond faster JavaScript performance in the future (which, admittedly, is a gross simplification of this whole thing, but is, after all, what users will actually feel as a tangible outcome), what's the significance of this? What, for example, does Adobe gain? Hard to say for sure, but I imagine their strategy to break down the barrier between local and network resources will be served by this move. Another way of looking at Adobe and the Mozilla Foundation working together would be as a defensive maneuver against Microsoft's strategies for rich internet applications (RIA). Anything Adobe can do to shore up open standards for RIA will help when Microsoft tries to woo developers to develop their applications using proprietary client-side technologies tightly bound to Windows Presentation Foundation/Everywhere


Tags: , , , , , , , , , ,