Mozilla Explains Why it Doesn’t License h264

This week, both YouTube and Vimeo opened up beta offerings using HTML5 video instead of Flash to bring video content to users. Both of them chose to use the h264 codec, which meant that only Safari and Chrome can play these videos, since firefox doesn’t license the h264 codec. Mike Shaver, Mozilla’s vice president of engineering, explained on his blog why Mozilla doesn’t license the h264 codec.

Shaver explains that h64 is not a suitable codec for Mozilla, because of two main reasons: licensing cost, and the codec’s closed nature.

The h264 codec is patented up the wazoo by the MPEG-LA, and while Google, Apple, and Microsoft have paid for a license to include the codecs within their products, the Mozilla foundation has not, and will not do so. Without this license, it is illegal (in many countries) “to use or distribute software that produces or consumes H.264-encoded content. Indeed, even distributing H.264 content over the internet or broadcasting it over the airwaves requires the consent of the MPEG-LA, and the current fee exemption for free-to-the-viewer internet delivery is only in effect until the end of 2010.”

Mozilla has a number of clear and well-argued reasons for not buying the license. First, it’s very limited. Google, for instance, paid for a license that transfers to users of Chrome, but if you build Chrome from source yourself or extend the browser, the license does not apply. What’s even worse is that the license would not carry over towards, for instance, Linux distributors – not acceptable, of course, for Firefox.

“Even if we were to pay the USD 5000000 annual licensing cost for H.264, and we were to not care about the spectre of license fees for internet distribution of encoded content, or about content and tool creators, downstream projects would be no better off,” Shaver explains.

The second important reason not to license the h264 codec is a more ideological one. “We want to make sure that the Web experience is good for all users, present and future,” Shaver writes, “I want to make sure that when a child in India or Brazil or Kenya discovers the internet, there isn’t a big piece of it (video) that they can’t afford to participate in. I want to make sure that there are no toll-booth barriers to entry for someone building a whole new browser, or bringing a browser to a whole new device or OS, or making and using tools for creating standard web content.”

He adds that “the web is undeniably better for Mozilla having entered the browser market, and it would have been impossible for us to do so if there had been a multi-million-dollar licensing fee required for handling HTML, CSS, JavaScript or the like”.

It is very hard to disagree with Shaver on this one. We have seen what happens when we make the web dependant and proprietary – Flash, Internet Explorer 6 – and yet here we are, ten years down the line, ready to fall into the same trap all over again. I don’t care if h264 is better now, what matters is that in the future, we haven’t locked ourselves into yet another patent-encumbered format that alternative platforms can’t make use of.

The specification writers for HTML5 should have the guts to do what’s right. It doesn’t matter if Theora is (arguably!) worse than h264 – the standard is open, patent-free, and developing at an incredible pace. I’d rather we bite through the sour apple now, instead of having to deal with the lock-in down the line. Here we are, loaded with bad experiences with lock-in on the web, and yet we seem to be doing it all over again. I’m sure we’ll blame Microsoft eventually.

Shaver ends his post with a note about using platform-native frameworks, such as DirectShow in Windows, to handle the video format. This solution has been suggested quite often, but Mozilla doesn’t see it as an option, because of a multitude of problems.

“There are issues there related to principle (fragmentation of format under the guise of standardized HTML), to effectiveness (about 60% of our users are on Windows XP, which provides no H.264 codec), to security (exposure of arbitrary codecs to hostile content), and to user experience (mapping the full and growing capabilities of [the video tag] to the system APIs provided),” Shaver explains.

158 Comments

  1. 2010-01-24 6:30 pm
    • 2010-01-25 12:47 am
    • 2010-01-25 6:51 am
      • 2010-01-25 5:21 pm
        • 2010-01-26 2:31 am
    • 2010-01-25 3:57 pm
  2. 2010-01-24 6:32 pm
    • 2010-01-24 7:28 pm
      • 2010-01-24 7:39 pm
      • 2010-01-24 8:59 pm
        • 2010-01-24 9:48 pm
          • 2010-01-25 2:12 pm
          • 2010-01-25 3:18 pm
          • 2010-01-26 2:32 am
          • 2010-01-25 6:39 pm
          • 2010-01-25 8:37 pm
          • 2010-01-25 9:13 pm
          • 2010-01-25 10:14 pm
          • 2010-01-25 11:07 pm
          • 2010-01-26 8:55 pm
        • 2010-01-25 1:46 pm
          • 2010-01-25 6:13 pm
          • 2010-01-25 6:27 pm
          • 2010-01-25 7:17 pm
          • 2010-01-25 11:18 pm
          • 2010-01-26 9:14 am
      • 2010-01-24 11:43 pm
        • 2010-01-25 12:56 am
          • 2010-01-25 1:52 pm
          • 2010-01-26 11:00 pm
        • 2010-01-25 1:10 am
      • 2010-01-24 11:44 pm
        • 2010-01-25 1:18 am
          • 2010-01-25 7:19 am
          • 2010-01-25 9:40 am
          • 2010-01-25 10:05 am
          • 2010-01-25 10:17 am
          • 2010-01-25 10:55 am
          • 2010-01-26 1:47 am
          • 2010-01-26 1:58 am
          • 2010-01-26 1:30 pm
          • 2010-01-26 10:58 pm
        • 2010-01-25 2:09 am
          • 2010-01-25 2:02 pm
          • 2010-01-26 3:29 am
          • 2010-01-26 7:37 am
          • 2010-01-25 6:24 pm
          • 2010-01-26 3:30 am
          • 2010-01-26 3:39 am
          • 2010-01-26 5:46 am
          • 2010-01-26 1:25 pm
          • 2010-01-26 4:05 pm
      • 2010-01-25 6:56 am
        • 2010-01-25 10:56 am
          • 2010-01-25 2:10 pm
        • 2010-01-26 2:24 am
          • 2010-01-26 3:29 am
          • 2010-01-26 1:20 pm
      • 2010-01-25 12:40 pm
      • 2010-01-26 9:09 am
      • 2010-01-27 1:13 am
    • 2010-01-24 7:56 pm
      • 2010-01-25 6:28 pm
  3. 2010-01-24 7:14 pm
    • 2010-01-24 7:34 pm
    • 2010-01-24 7:35 pm
      • 2010-01-24 8:00 pm
        • 2010-01-25 6:58 am
          • 2010-01-25 9:47 am
      • 2010-01-25 1:29 am
        • 2010-01-25 1:37 am
  4. 2010-01-24 7:23 pm
  5. 2010-01-24 7:25 pm
    • 2010-01-24 8:23 pm
    • 2010-01-25 2:13 am
    • 2010-01-25 7:41 am
    • 2010-01-25 8:34 am
    • 2010-01-25 9:24 am
    • 2010-01-26 4:11 pm
  6. 2010-01-24 7:27 pm
    • 2010-01-24 8:52 pm
      • 2010-01-25 2:17 am
      • 2010-01-26 9:56 pm
    • 2010-01-26 9:15 pm
  7. 2010-01-24 7:50 pm
    • 2010-01-24 9:32 pm
      • 2010-01-25 1:31 am
        • 2010-01-25 2:55 am
          • 2010-01-25 3:17 am
          • 2010-01-25 3:53 am
          • 2010-01-25 9:03 am
          • 2010-01-26 3:32 am
    • 2010-01-25 2:54 am
  8. 2010-01-24 9:19 pm
    • 2010-01-24 9:31 pm
    • 2010-01-25 7:09 am
      • 2010-01-26 10:59 pm
  9. 2010-01-24 9:50 pm
  10. 2010-01-24 9:50 pm
    • 2010-01-24 10:09 pm
      • 2010-01-24 10:28 pm
        • 2010-01-25 12:27 am
          • 2010-01-25 12:55 am
          • 2010-01-25 2:27 am
          • 2010-01-25 7:38 am
      • 2010-01-24 11:31 pm
  • 2010-01-25 12:27 am
  • 2010-01-25 5:14 pm
  • 2010-01-25 12:06 am
    • 2010-01-25 12:39 am
      • 2010-01-25 2:25 am
        • 2010-01-25 5:23 am
          • 2010-01-25 5:54 am
          • 2010-01-25 7:17 am
          • 2010-01-25 7:22 am
          • 2010-01-25 7:08 pm
          • 2010-01-26 12:36 am
      • 2010-01-26 9:22 am
      • 2010-01-26 4:24 pm
    • 2010-01-25 5:39 am
  • 2010-01-25 12:58 am
  • 2010-01-25 2:50 am
    • 2010-01-25 3:32 am
      • 2010-01-25 3:55 am
        • 2010-01-25 4:17 am
          • 2010-01-26 3:35 am
          • 2010-01-26 3:43 am
  • 2010-01-25 5:17 am
  • 2010-01-25 12:23 pm
    • 2010-01-25 2:16 pm
      • 2010-01-26 12:52 pm
    • 2010-01-25 3:00 pm
      • 2010-01-25 3:49 pm
        • 2010-01-25 4:19 pm
          • 2010-01-26 1:00 pm
      • 2010-01-26 2:48 am
      • 2010-01-26 12:54 pm
    • 2010-01-26 4:51 pm
  • 2010-01-25 2:07 pm
    • 2010-01-26 12:49 am
      • 2010-01-26 1:46 am
        • 2010-01-26 2:48 am
      • 2010-01-26 2:38 am
        • 2010-01-26 9:16 am
        • 2010-01-26 12:31 pm
          • 2010-01-26 2:42 pm
          • 2010-01-27 12:51 am
          • 2010-01-27 2:11 am
  • 2010-01-26 5:02 pm
    • 2010-01-26 11:58 pm
      • 2010-01-27 1:50 am
        • 2010-01-27 10:21 pm
          • 2010-01-28 2:01 am
          • 2010-01-28 6:08 pm