Adobe, Mozilla, and Tamarin
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. I'm not directly involved with the project itself but have spent a few days reviewing press materials and doing press interviews, so I've had a chance to think about the significance of this announcement and what it means for the Mozilla project and for the web at large. Here are some of my thoughts.
The basics
First, a brief review of what this announcement is about (and what it's not about). (I apologize for repeating material from the press release and elsewhere; I've found in the past that one can't always assume that people have actually read such material.)
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 name Tamarin
continues the Mozilla tradition of
monkey-themed projects, including of course
SpiderMonkey
itself; like SpiderMonkey
,
Tamarin
is a code name, not a trademark. As noted on the
Tamarin project page, we thank Ben Parker for his generosity in
allowing us to reuse the name of his existing Tamarin framework for
development of Java Swing applications.)
Note that Tamarin is not an open source version of the Flash player; it is simply the virtual machine embedded within Flash Player 9, and does not include all the other components that make up Flash (including the bits that display graphics and play music and video). Adobe will continue to develop and distribute the Flash player on its own as a product separate from Firefox itself.
What it all means
What does this all mean? Let's start with users of Firefox and other
applications based on Mozilla technology. They'll get future versions
of Firefox and other Mozilla-based products that will run
JavaScript-based applications significantly faster, including in
particular AJAX-enabled web applications commonly thought of in
connection with the Web 2.0
meme. (In its own testing Adobe
has seen up to a ten times speedup of ActionScript applications due to
the introduction of the AVM2 technology.) Since Firefox and Firefox
extensions are partly written in JavaScript (as are other applications
built on Mozilla's XUL technology), users will also likely see
performance gains in some areas of Firefox itself.
Developers of web applications and XUL-based applications will also realize the benefits of improved performance; they'll be able to develop and deploy new and innovative applications for which the performance demands on current JavaScript engines are just too great. They'll also be able to take advantage of new JavaScript language features coming with ECMAScript 4th Edition, and in addition will be more able to leverage their knowledge of JavaScript in developing Flash applications using ActionScript (or vice versa).
Finally, the Mozilla project will gain yet another major corporate contributor in Adobe, one that's made the largest single code contribution to the project since Netscape originally released the Mozilla source code in 1998. Not only do we gain an important new piece of technology that's critical to our products, we and Adobe both gain the benefit of being able to more closely work together on ECMAScript language technology and avoid unnecessary duplication of efforts; this in turn will allow both the Mozilla project and Adobe to put more resources into other areas important for future innovations.
For Adobe, Mozilla, and others who might join in future, the Tamarin
project represents for client-side web technology what the so-called
LAMP
stack does for server-side web technology: a move to
not only centralize development around key specifications (ECMAScript
for Tamarin, HTTP, SQL, etc., for the LAMP stack) but also to jointly
develop and promote high-quality open source implementations of those
specifications. Cooperating on such efforts helps grow the larger
commercial and noncommercial ecosystems around the relevant
technologies, to the ultimate benefit of all users of the web.
In praise of sustaining innovations
Some might read the above and say, So Tamarin will enable web
applications to run faster, maybe even an order of magnitude faster,
and make JavaScript and ActionScript more compatible; what's the big
deal?
We're conditioned to look for world changing
,
break the mold
developments in technology and to dismiss merely
incremental
improvements. To use the terms popularized by
Clayton Christensen, we think disruptive innovations
are sexy, and sustaining innovations
are not.
I believe this is a serious mistake. First, the terms
disruptive
and sustaining
aren't indicators of the
technical merit of innovations; they simply indicate whether the
degree to which innovations better satisfy the needs of existing
customers (sustaining innovations) vs. appealing to new customers
(disruptive innovations). In this sense even something as wonderful as
Firefox is better viewed as a sustaining innovation than a disruptive
innovation, as I've previously discussed.
Second, the cumulative impact of multiple sustaining innovations can be quite large, and can enable new disruptive innovations to take root and flourish. For example, as many people have pointed out, at least in theory Web 2.0-style applications could have been developed many years before they in fact appeared. The advent of Web 2.0 as we know it was really a function of multiple sustaining innovations that accumulated over time and interacted together:
incremental browser features like XMLHttpRequest that enabled basic AJAX techniques to be developed
continuous improvements in the performance, stability, and standards compliance of web browsers, which enabled cross-platform dynamic web applications to be more easily developed and debugged
continuous improvements in the cost and performance of server-side hardware and software, which enabled organizations to deploy significant web applications without multi-million dollar investments
continuous improvements in the ability of organizations to economically manage large numbers of servers, which enabled Google and others to deploy dynamic web applications reaching hundreds of millions of users
continuous improvements in the cost, performance, and ubiquity of broadband connections, which enabled more people to run dynamic web applications and actually enjoy the experience
Within each of these areas the individual innovations were relatively small: a minor cost or performance improvement made, a few more browser bugs fixed or new browser features added, a few million more broadband connections provisioned. But in toto these innovations added up to nothing less than a revolution in the way the web can be used.
In this sense everyone who contributes to the Mozilla project–fixing a Mozilla bug, making a performance improvement in Mozilla code (no matter how small), enabling Mozilla-based products to pass yet another standards compliance test, writing a Mozilla test case, creating or revising a Mozilla documentation page, and so on–helps change the future of the web and advance our goal of promoting choice and innovation on the Internet, to the ultimate benefit of everyone. Adobe is the latest such contributor, and most definitely a significant one; we thank them for their contribution and welcome them to the Mozilla project. Please join me in doing likewise!
2006-11-07
Trackbacks
JD on EP mentioned this post in "Tamarin commentary, day 1":
Tamarin commentary, day 1: Through the day I'll be updating this entry with links & pullquotes I find particularly interesting. It's like drinking from a firehose, though... Adobe's donation to Mozilla of scripting engine sourcecode will take us all awhile to assimilate....
Global Nerdy mentioned this post in "Adobe Donates Tamarin Code to Mozilla Foundation":
<p>Frank Hecker, the Excecutive Director of the Mozilla foundation has a comprehensive post on this announcement, which has been burning ...
The Momo Weblog mentioned this post in "Projet Tamarin : Adobe donne sa machine virtuelle ECMAscript Mozilla":
Adobe, qui a rachet il y a peu Macromdia, le crateur de Flash, vient de librer le code (135000 lignes) de sa machine virtuelle ECMAscript 4 sous licence Mozilla Public Licence. Cela en fait donc un produit open source, nomm Tamarin.
A...
bkchung's WebLog mentioned this post in "플래‹의 액션스크립트 버추얼머‹ 오픈소스화 소‹ (II)":
Frank Hecker, Mozilla : Adobe, Mozilla, and Tamarin 정‹없는 이전 포스트를 보기보‹는 위의 Frank가 깔끔하게 쓴 글을 참고하‹라. Frank
Elsewhere on the 'Net mentioned this post in "Project Tamarin":
http://weblogs.mozillazine.org/roadmap/archives/2006/11/project_tamarin.html...
Backdrifter mentioned this post in "Adobe Donates ActionScript VM to Mozilla":
Adobe has donated the source code to AVM2, their ActionScript virtual machine, to the Mozilla Foundation. The new project is known as Tamarin. As stated in the press release, this is the largest contribution to Mozilla since its inception. For the w...
ryyo's Blog mentioned this post in "Adobe 的 AVM2 source":
Adobe 把 AVM2 open source 了[separator],將它捐給了 Mozilla 的 Tamtrin Project,Mozilla 同時間也發佈了,AVM2 source code (遵循 MPL/GPL/LGPL)..
Sam Ruby mentioned this post in "Tamarin":
Frank Hecker: If we take as a given that this runtime will be ubiquitous, debugged, and performant; and couple this with the recent trends to retarget popular languages to run on a common VM, then why not port some of these same language
GBGames' Blog mentioned this post in "Better Flash Support for Mozilla, GNU/Linux?":
I never thought I would be posting anything from Happy News, but then I saw the article entitled Adobe Gives Mozilla Some Computer Code. Basically, Adobe shared some code with the Mozilla Project related to ActionScript, which is what the Flash playe...
hastalasiesta.org mentioned this post in "Tamarin":
I’m a bit surprised how little speculation there have been about the Tamarin project. If you have no clue what I’m talking about; let me break it down for you.
Adobe, the current owners of what used to be the Macromedia Flash Player, have m
Comments
tr wrote at 2006-11-07 06:14:
Frank Hecker wrote at 2006-11-07 09:03:
Robin wrote at 2006-11-07 06:27:
funTomas wrote at 2006-11-07 10:52:
Jason Barnabe wrote at 2006-11-07 11:21:
Ben wrote at 2006-11-07 11:24:
Frank Hecker wrote at 2006-11-07 11:28:
Frank Hecker wrote at 2006-11-07 11:38:
Simon wrote at 2006-11-08 03:51:
Steven Elliott wrote at 2006-11-08 06:31:
Frank Hecker wrote at 2006-11-08 07:01:
Mads Bondo Dydensborg wrote at 2006-11-09 01:28:
Dino Baskovic wrote at 2006-11-09 15:01:
Frank Hecker wrote at 2006-11-09 18:09:
Bora wrote at 2006-11-11 03:31:
Supbar (Malaysia) wrote at 2006-11-11 03:35:
Frank Hecker wrote at 2006-11-11 09:44:
Manian wrote at 2006-11-13 08:16:
Frank Hecker wrote at 2006-11-13 12:44:
Supbar (Malaysia) wrote at 2006-11-14 01:54:
Frank Hecker wrote at 2006-11-14 11:49:
Juergen Fey wrote at 2006-11-20 11:06:
Frank Hecker wrote at 2006-11-20 12:22:
Jim Plush wrote at 2006-11-21 13:29:
Bora wrote at 2006-12-12 10:41:
Firefox fan (Malaysia) wrote at 2007-01-20 22:06:
Frank Hecker wrote at 2007-01-22 13:41: