Bubble Foundry


From the Laboratory: Closed Standards

by Peter.

Closed standards are an oxymoron and any standard that is closed is moronic.

This is going to be a rant, so bear with me….

How can you call anything a standard when you don’t make the standard readily available? What is the point of a standard that no one can implement? Unfortunately, many ‘standardized’ audio and video codecs are encumbered by patents, trademarks, and obscenely expensive reference documents. Surprise, surprise, but many of the telco standards bodies are the worst offenders! (As an aside, the movie people, thanks to MPEG, seem to be somewhat more sensible).

Let’s take 3GPP, the industry standards body for 3G mobile phone services. We won’t even go into their website, though needless to say it isn’t helping things. For one, it’s basically impossible to find anything, such as the all important reference libraries for their standards. As part of my work developing the new MobyPicture site, I need to implement support for common mobile phone audio and video formats, including AMR audio and 3GPP video container files.

Like many others, I am using FFMPEG, a fantastic video and audio transcoder. Various codecs and formats are enabled by compiling the relevant libraries and then compiling FFMPEG with reference to them. Great, so let’s enable AMR support! Oh, wait, where’s an AMR library we can use? Unfortunately the only real option seems to still be the reference implementation, perhaps from no fault of 3GPP, though I don’t think they’ve made things easy. Fine, so let’s download it and we’re golden! But where is it? I dare you to find it just browsing the 3GPP site. So you resort to Google and you find various whisperings of the secret URLs. But wouldn’t it be better if projects like FFMPEG just bundled the library source code or, even better, the compiled binary files?

Of course it would, so of course we can’t have that. For instance, the Word document file included with the reference implementation has a legal license prohibiting ALL reproduction without written authorization. For fraks sakes, it’s a document just saying what the code is doing, it’s not top secret or even trade secrets! You make the files freely (though invisibly) available on your servers! But wait, they do contain trade secrets: the reference implementation uses patented technology which people can’t, in some countries, use without a license. That means that they’re basically saying: “This is our standard and here is the code implementing it. But it has patented technology we want you to pay for. So really, to use this reference code you need to pay us money.” It’s the look-maybe-if-we-like-you-but-don’t-touch form of open source! The next best thing to precompiled libraries? A very useful but ugly work-around: write a script without the libraries, so it can be freely distributed, that will download and then compile them, leaving the patent licensing issues to the final user or developer.

And unsurprisingly, as if a parody of viral licenses such as the GPL, this patented library infects the code that uses it. Enabling AMR support in FFMPEG requires me to pass “–enable-nonfree” to the configure script and means that the resulting compiled binary is technically, legally, nonredistributable. It’s little surprise that FFMPEG developers have been tempted to not bother maintaining support.

Why would you charge people to license a standard? That is, why would you seek to have your patented technology used in a standard when you plan (on continuing) to seek royalty payments? That’s defeating the whole point of a standard, where everyone can and should follow the standard. Instead it’s pay-to-play. Of course these patent costs are chump change to the likes of Nokia and so on who are members of 3GPP (and will all license some patent or another to each other eventually) but they aren’t, actually, the best way to encourage adoption of a standard. Remember, people like mp3 format audio not because of its audio quality but because of its small file sizes and, thanks to generally liberal licensing, its implementation on just about any sort of device you could imagine.