Wednesday, March 30, 2011

Flash

One of the major controversies throughout the industry has been the desirability of Adobe Flash as a way to put rich media content on websites. Many people consider it proprietary kludge that isn't well integrated with the web, is a resource hog, and is frequently misused, while others don't like it at all.

Yet websites keep using it. Why?

Well, in fairness, while the need to use Flash for, say, ads, has receded, Flash has been, for a while, pretty much the easiest way to embed sound and/or video on webpages for a very long time now.

To deal with the fact so many people want to embed movies on webpages, the standards organizations have tried a variety of solutions over the last few years but for the most part, these standards haven't actually provided enough functionality to allow web developers to completely replace Flash.

HTML5 introduces the "video" tag (and a related audio tag) which is supposed to deal with many of the issues that the OBJECT tag before it had. Unfortunately, this tag only partially deals with the issues.

Here's why Flash is going to continue to be used for some years now, and the Video tag is likely to see the same fate as "Object":


1. It doesn't standardize everything

There's a major hole in the Video tag's specification - it doesn't actually even attempt to define the format of the video. Web developers are supposed to encode their videos in every format they think might be used and hope the target web browser and operating system support it.

To be fair, there are efforts to standardize on one of three formats (H.264/AAC, WebM/Vorbis, and Theora/Vorbis), but none has attracted enough support to be fairly described as a standard yet, largely due to arguments about software patents.


2. You can copy sound and video

While YouTube may be one of the most popular video sites out there, there are also a number of other sites that use Flash to deliver video, sites like Hulu and Amazon, that use it for quite another reason. These sites have business models that rely upon you only having temporary access to the video you're watching. They can't let you download the videos.

To that end, Flash implements something called DRM (Digital Restrictions Management) that has the videos encrypted while being transmitted over the Internet so that the Flash system is the only system that can decode them.

It's very hard to implement DRM in an "open" way, and the Video tag doesn't even try. So you're going to continue to see Flash used for sites that deliver non-free video for some time.


3. It can only play sound and video

The Video and Audio tags provide quite a bit of functionality over the older OBJECT tag, including the ability to be controlled using Javascript, go full screen, display buttons, etc. However, like Object, when it comes to audio or video, the system is strictly one way. Flash is used in some environments to provide two way voice, and even two way video. The audio and video tags simply aren't spec'd to do that.


All of these mean that while HTML5's Video and Audio tags have done a lot to reduce dependence on Flash, you're going to see the need for Flash for a while.

A question that commonly comes up is: if Flash is necessary, why is Steve Jobs convinced otherwise? Why does he refuse to allow iPhone/iPad users to install it, for example?

One thing to bear in mind is that Apple has a competing framework to Flash, called Quicktime. Quicktime is often thought of as just a way to display movies, but like Flash, it's actually a complete, self-contained, scriptable multimedia framework. Like Flash, it implements specific file formats, and supports DRM, although I don't believe it's capable of being used in a two way form (but am open to being corrected on this.)

There is a pseudo-open alternative to Flash, called Silverlight. Microsoft has published the specification of Silverlight, with the aim that third parties be able to implement the technology for platforms they don't wish to support directly. Unfortunately, major components of Silverlight, notably the DRM system, are closed, and not available to non-Microsoft implementations.

Before its collapse into the Oracle black hole, Sun also attempted to create an open multimedia framework with Flash like functionality called JavaFX, but the system is currently suffering from industry mistrust of Java's current owners: while in theory the technology works on any platform that supports Java, and therefore could be used as a drop-in replacement for Flash that works virtually everywhere Flash does, in practice nobody wants to touch the technology right now.

Is there a way forward? Could Flash eventually be rendered obsolete and unnecessary?

The standards communities keep chipping away at the "need" for Flash without really addressing what it does and why it's so popular, so the way I see it, we're a while away from seeing it replaced. It shouldn't be necessary to design a "plug in" to provide the functionality Flash does, but for now, it is.

What may drive things forward in the medium term is the mobile web. Companies like Apple and Google are keen to allow web applications to access features of their devices, such as the camera and GPS system, and I suspect in the medium term, we'll see that philosophy expanded to encompass the rest of the hardware. As far as DRM goes, that's going to be more difficult to do in a standardized, open, way, but it may be that "good enough" solutions become possible with some minor fixes to the HTML5 specification.

But for now, don't be surprised that Flash is still necessary to access much of the web. It's not always the web developer's fault, we don't like Flash either, we're just using the only tools available to us!

No comments:

Post a Comment

Post a Comment