19 May 2010

The web of the future may be free from Flash!

Today was day 1 of Google I/O 2010. It’s basically a conference where Google show’s all their new tech to the world.

But first, some background.

All of us use HTML every single day, yet take it for granted. In reality HTML has become so successful because of a man called Sir Tim Berners-Lee. He insured that HTML stayed open. This meant that it was free. It also meant that anyone could implement it in a browser. Because of this, there are many browsers on many different operating systems. The purpose of the HTML standard is that it’s documentation. Anyone can can write a website that they know will show up correctly on any browser. Conversely, any developer can create a web browser that should read any website. No proprietary hidden stuff, no reverse engineering, no guessing. All common browsers (except IE) conform to HTML standard, so that you know (in theory) a webpage should look the same whether viewed in Firefox of Google Chrome. Imagine if HTML have been invented by Microsoft. You’d have proprietary websites. Different browsers for different sets of websites, that were different variations of HTML. To get a better idea, just imagine how things are in the video game industry.  Obviously a Playstation game isn’t going to work in an Xbox. But a Windows PC game will work on any Windows PC that has a certain base level of performance. It’s sort of like that.

Adobe Flash, however, is very different. It’s available for most operating systems, but what if Adobe doesn’t release Flash for your Operating System of choice? In the case of the iPhone, they’re not allowed to release Flash support, users can’t access content in that format. If there were an Operating System that Adobe chose not to support (like BSD), then you cannot (without hacks) get access to the content. We live in an age where so much content is in flash, you’re sort of stuck at the mercy of Adobe. They decide whether an Operating System can view 70% of the web. This doesn’t mean that Adobe is evil, it just means that they have too much control. Of course, in a perfect world content would be in such a format that it is universally viewable on any device. This is what HTML is. The problem is that most webpages contain Flash. This is a huge problem. Despite my personal opinions on flash (I hate it), it’s not good to leave a huge portion of the web in the hands of one company. If Adobe doesn’t release Flash for my device, I’m stuck only able to view a small subset of the web.

Luckily there’s a perfect solution. Replace Flash with HTML5. Sounds simple, right?

Wrong. Unfortunately, because there was disagreement among the Web browser developers, no video codec was chosen for HTML5, thus leaving the choice of codec up to each browser. This basically makes the HTML5 video tag worthless. Firefox and Opera only support Theora videos, Safari only supports h264, and Google Chrome supports both. IE, unsurprisingly currently supports neither.

The reason for the argument was simple. Firefox and Opera want a video codec that is completely free. Google prefer the higher performance of h264, and Apple (as usual) has their private agenda.

Google’s reason is of course extremely valid. Is h264 compresses better, it would save them a fortune in bandwidth costs by using it on Youtube. Firefox and Opera simply don’t want to be paying out money to use h264. So, while they all have valid reasons, the end result sucks for the web. Imagine you are a website developer. You want to put up a video on your website. What technology will you use to do it? Obviously Flash. You can’t use HTML5 for the above reasons (1. Internet Explorer is run by 60% of all users, and doesn’t support it. You can’t have a website that can only be viewed by 40% of the world! and 2, even with the remaining 40%, they each support different video codecs.)

What the world really needs is a video codec that is both FREE and EFFICIENT.

Here comes Google to the rescue!

Recently Google purchased On2. A company that makes video codecs supposedly close in quality to h264. People immediately suspected that Google would open source On2’s best codec, VP8, to save the web. Today they did just that!

VP8 solves Google’s issues with efficiency, yet would still be free for Firefox and Opera to implement. Perfect, right?

Firefox and Opera both also announced their support of the codec. But a video codec alone isn’t enough. What about the audio. Google is using the extremely good open source audio codec Vorbis, used the Matroska container and named it webm It is actually quite clever.

The logos above are for (respectively) Xiph (Vorbis audio codec), Matroska (container), Google (VP8 video codec), and the combination, webm.

Seems pretty good to me! Support is available in Chrome, Firefox and Opera in developer versions starting today, and will be available in Android’s Gingerbread release in Q4 2010.

Microsoft has publicy said it will support webm, but not natively (only if a codec is installed). While this isn’t terrible, it would be much better if there was native support. Still, this does allow Youtube to switch over completely, as the only notably omission is Safari, which doesn’t have that much market share anyway. If Internet Explorer, Firefox, Chrome, Opera (and probably all the OSS browsers like Konqueror and Epiphany) support it, that should be enough. It’s anyone’s guess if Apple will support it. I’d love it if everyone would just dump flash and use webm for video. This is an interesting move for Google. On the one hand, they’ve just announced that they’re including Flash on Android, and it’s built into developer versions of Google Chrome. So, what are they thinking? Actually, I’m pretty sure I know. Google made a deal with Adobe. First, they wanted to take advantage of Adobe’s desire to entire mobile (as they can’t get on the iPhone). Second, for webm to become truly successful people have to use it. For many websites it’s not going to be an option to have a webm video AND a Flash video (as backup). But, Adobe has announced that upcoming versions of Flash will support vp8. This means that you could have one video file, and send it to the browser through either Flash or webcm. I’m actually shocked that more sites have not picked up on this. This is actually quite vital. If Adobe didn’t do this, and people had to choose just ONE format, they’d undoubtedly choose Flash. This now gives people one codec that can be sent to the browser through either Flash or webm.

Another thing of note is that there is currently no hardware acceleration. AMD, ARM, NVIDIA, Qualcom etc.. are working on it.