Firefox: Something fishy about Microsoft’s IE9 aquarium

Microsoft's "FishIE" demo, one of the IE9 Test Drive demos

Since its earliest previews of Internet Explorer 9, Microsoft has been pointing to its IE9 Test Drive site for demos of speed, graphics and other aspects of browser performance. IE9 performs extremely well in the demos, and in many cases the results look almost embarrassing for Firefox and Chrome.

So what’s going on behind the scenes? In my recent interview with Johnathan Nightingale, the Mozilla Firefox engineering director, I asked for his take on the situation. Perhaps not surprisingly, he said there can be more to these tests than meets the eye. His favorite example, he said, is the fish tank — a demonstration in which users can add up to 1,000 fish to a virtual aquarium. In IE9, they zip around like speed demons. In Firefox, they barely budge.

The problem, Nightingale said, is that Microsoft is not using WebGL, the 3D web standard, because IE9 doesn’t support it.

“They have to do it using Canvas 2D, which is a technology they do support, and it’s great, because it’s an open web technology, so it’s nice to see them trumpeting it. But it’s not actually what any developer would choose to use for 3D graphics,” he said. “You would use a 3D API for that. What’s funny is that if you reimplement the fish tank demo using WebGL, it screams on any browser that supports WebGL,” including Firefox.

Microsoft, of course, sees the situation differently. Asked about Nightingale’s comments, a Microsoft representative pointed to an IE Blog post from last year on performance testing, noting that the fish tank (dubbed “FishIE”) was created specifically to test HTML5 Canvas. It’s just one of about 100 different IE Test Drive demos showing different aspects of browser standard support and performance.

[Related Post: Firefox 4 Do Not Track: How it works, what it really means]

So why doesn’t IE9 support WebGL? Here is Microsoft’s response:

“Regarding WebGL, there are other browser vendors that are implementing WebGL as a way to get some kind of hardware acceleration after developers rewrite their code. With Internet Explorer 9, developers receive GPU-powered hardware acceleration without rewriting a single line of code which we feel is a better outcome. There has been great success with 3D in various arenas, like IMAX movies, but in looking at broad range of browser users we did not think this was an area that was realistic for us to focus on at this stage of browser development.”

The back-and-forth between the companies is the backdrop for a fierce competition for market share. Internet Explorer is still the dominant browser, with more than half the worldwide market, despite declines in recent years. The Firefox 4 download counter is approaching 19 million since the release of the new browser two days ago, eclipsing the numbers that Microsoft’s IE9 has seen, thanks in part to Firefox 4′s support for multiple operating systems and older Windows versions.

And Google Chrome, fresh out with a beta of its next version, has been surging, as well.

At the very least, Microsoft’s IE9 demos got the attention of the Firefox team. Nightingale said one of the Firefox developers rewrote the fish-tank demo with WebGL. In testing their alternative version, they ended up needing to increase the number of fish beyond Microsoft’s maximum of 1,000 to as many as 10,000 to start hitting the limits of Firefox 4′s capabilities.

That’s what happens, he said, “once you’re using the right standard, instead of the one you happen to have shipped.”

Just goes to show, it case it wasn’t obvious before: The browser wars are back.

Todd Bishop of GeekWire can be followed on Twitter and Facebook.

  • Dennis Hamilton

    OK, Canvas me confused. 3D rendering is different than 3D viewing (what I enjoy at IMAX).

    WebGL is a graphics language that supports the 2D presentation of 3D [animated-]image models. Whether they have something cool about putting up images in 3D-viewable form on displays, I have no idea, but that has nothing to do with the fishtank animation. According to Wikipedia, WebGL It is usable through the HTML5 canvas element as a context, so that confuses me too.

    The spokesperson’s explanation for not supporting it in IE9 is off the mark. It doesn’t invalidate using simple 2D canvas to make a fishtank, but the response doesn’t acknowledge that there are many practical situations (especially in animations) where 3D modeling is extremely valuable, even when rendered on a 2D surface like the displayed browser page. Some animations are way easier to express in terms of a 3D model, since there is accounting for depth, perspective, and lighting. Just presenting an image of a solid object that an user can rotate and shift around to explore is a common example. It also appears that t would also seem that the availability of GPU optimization can be improved as well as the result of using higher-level constructs.

    The reprogramming issue seems bogus to me. If I have something already in a 3D modeling system (whether HTML5 or not), I would really hate to have to convert it to an animated 2D myself. That’s just awful. I’d be surprised that basic 2D can’t be handled easily on the other hand. Why can’t the HTML5 author choose?

  • http://www.jrotech.com/ Jeff Rodenburg

    “…once you’re using the right standard, instead of the one you happen to have shipped.”

    It used to be that MS didn’t follow standards. Now they’re not following “the right one.”

  • Tester

    Actually Mozilla is very sneakie as ik has its own Kraken javascript benchmark made to use very large WebGL low level typed array datastructures whilest IE9 must do the Kraken benchmark with normal generic javascript arrays that translate data.
    So the Kraken benchmark is not a benchmark test but a hidden feature test optimized to show tha advantage of WebGL datastructures. Real world websites wil hardly ever need WebGL datastructures as they are main usefull for javascript manipulation of large ditital dataformats like pictures, audio and video.

  • Anonymous

    “You would use a 3D API for that.”
    No. I would revert code that used a 3D API to draw 2D fish on a 2D surface. The only reason I can think of that a developer would draw the fish tank demo in 3D is because they’ve just discovered 3D, think it’s cool, and haven’t yet discovered all the problems introduced by the complexities of 3D.
    I’ve worked at WildTangent, Microsoft Game Studios, and Playdom. At Playdom, I was **specifically** asked about 3D for social games during my interview with a founder. My basic message was that it’s always a mistake to use 3D unless you absolutely have to in order to achieve the desired effect.

    Having said that, I like that one of the Internet Explorer team’s points about browser performance is that all benchmarks are biased and that benchmarks rarely represent any real-world scenarios. Fish tank is better than most benchmarks that just run computations, but it’s still a biased/focused benchmark.

  • LarryP

    @TedHoward
    It is not so much the 3D API’s as it is the datastructures associated with WebGL.
    Those datastructures are optimized for storing digital data and manipulating that data.
    Using those datastructures for gfx or audio element has big performance advantages over conventional javascript datastructures
    That is also why Firefox does so well in their Kraken benchmark by using Webgl datastructures

  • LarryP

    @TedHoward
    It is not so much the 3D API’s as it is the datastructures associated with WebGL.
    Those datastructures are optimized for storing digital data and manipulating that data.
    Using those datastructures for gfx or audio element has big performance advantages over conventional javascript datastructures
    That is also why Firefox does so well in their Kraken benchmark by using Webgl datastructures

  • Nighthawk

    The firefox response is rubbish, in plain English they have some bugs to fix.
    see: http://weblogs.mozillazine.org/roc/archives/2011/03/investigating_p.html