When Adobe donated its Tamarin virtual machine to the Mozilla foundation, the company's director of engineering and Tamarin project lead Dan Smith told Artima that Tamarin was about:
Coming up with the absolute best implementation we can have. We expect other people to contribute to the [source code] base, and grow it to make it into the best engine... We've been working with Mozilla, along with Yahoo, Microsoft, and others, on the EcmaScript working group on the standard. It's a good idea for us now to work together with Mozilla on the implementation.
IronMonkey is setting out with the goal of mapping Microsoft's Common Intermediate Language (CIL) to ActionScript Byte Code (ABC), allowing additional language implementations, such as IronPython and IronRuby, to run in the Tamarin Virtual Machine.
IronPython and IronRuby are implementations of Python and Ruby, respectively, that runs on .NET Common Language Runtime (CLR) (and, incidentally, also on Mono), written in C#...
To break all of this down: There are implementations of Python and Ruby that are capable of being compiled down to a Common Intermediate Language, which will then be able to be run on Tamarin via IronMonkey...
ScreamingMonkey is the effort, being led by Mark Hammond, to allow the Tamarin engine to run within non-Mozilla browsers, starting with Internet Explorer.
In a follow-up to his post, Resig quotes Mozilla's Mike Shaver and Brendan Eich about why Mozilla chose Tamarin instead of the Java VM or the Mono VMs. About the Java VM, Eich noted that:
For Mozilla at least, we absolutely cannot depend on closed source, and we require a non-copyleft BSD license, or at most MPL/GPL/LGPL. Java was not even open source until recently (I don’t remember the date; it was preannounced one too many times :-/), well after we had to make our own plans and commitments.
Finally, in spite of the prospects with JRuby, the JVM really is about Java first and last. Tamarin is about an ECMAScript variant, so it’s a better target now, and more likely to evolve to support JS1 and JS2 in a first class way, than the JVM.
Compilation heroics can help, but the browser will remain an environment where compilation must be very fast. Wherefore our forthcoming work on a trace-based JIT.
What do you think of these projects and of the choice of the Tamarin VM?