Challenges to Flash Video
Flash rapidly took over the market for embedding videos into web pages and popularized the proprietary FLV video container format. However, as the industry has moved to support the more advanced and open H.264 video codec, Adobe has been forced to drop its obsolete old FLV container and migrate toward H.264 itself, both as a codec and as a container file.
Since nearly all modern mobile devices now play back H.264 content in hardware, any advantage to using the Flash software player is now waning outside of the feeble web environment on PC desktops. Even there, Adobe only owns the playback of largely non-commercial content. Nearly all purchased video content is being distributed by Apple through iTunes, and most streaming content is being delivered by Windows Media, Real, or QuickTime. That reduces Adobe's ability to make enough money on Flash to entrench it as a necessary tool for web video.
Apple's ability to disrupt the status quo in video playback is evident in its deal with Google to vend YouTube videos to the iPhone, iPod Touch, and Apple TV as straight H.264 rather than Google's existing mix of a Flash-based player and its archaic GVI file format based upon AVI. The BBC similarly moved to support Apple's products by serving up standard H.264 video to them.
That rapid erosion of Flash's significance in presenting web videos is a key reason why Adobe is scrambling to create the appearance that Flash is critical infrastructure to the web and mobile devices, even though there is little evidence of any need for Flash outside of the PC browser. As Apple's hardware-based H.264 playback in mobile devices begins to define how to reach affluent customers with content, Flash will increasingly lose any allure on the PC desktop as well, as developers won't want to target PCs and mobiles using two different systems. Apple has already published specifications on how to vend straight H.264 video without relying on Flash, and is itself leading the way with a web presence that is heavy with Flash-free video clips.
Flash Fights for AIR in Rich Internet Applications
Adobe's backup plan is to push Flash as the basis for AIR, the Adobe Integrated Runtime, which allows for the development of standalone applications using Flash tools. But Adobe has a tough fight in that market as well.
Again, Microsoft is pushing Silverlight to do the same thing, and Sun has long been working to do this with Java. Google offers its own Google Web Toolkit for building standards based applications using JavaScript-based Ajax, and there are a variety of other products designed around building Ajax web applications without any dependance upon Flash. In the mobile arena, Google is pushing its Android platform, which essentially uses an open, independent version of the Java VM called Dalvik, without actually using Java bytecode.
The W3C, in conjunction with Apple, Mozilla, and Opera, is working to develop HMTL 5 as a more ideal basis for rich Internet applications, with support for immediate mode drawing, offline data, inline editing, and drag and drop interaction baked right into the web rather than layered on top with a plugin runtime like Flash.
If You Can't Sell It, Make It "Open"
These pressures have forced Adobe to crack open its licensing terms for Flash. While the company has published Flash specifications before, it has done so under NDA and explicitly forbid the creation of alternative Flash content players. The reason for this was likely to prevent Microsoft from creating its own Flash-compatible player, forking it, and hijacking Flash development in the same manner it ripped Java from Sun. Now that Microsoft has created its own Flash replacement; that strategy makes little sense.
Adobe has now begun touting the Open Screen Project, which aspires to partner with a consortium of companies to push Flash as a platform for rich Internet applications. In order to make this happen, Adobe had announced plans to begin working on efforts to:
- remove the restrictions on use of the Flash file format specifications
- publish device porting layer APIs for Flash Player
- publish its proprietary protocols for transmitting data between Flash apps and servers
- remove device licensing fees for the next major releases of Flash Player and AIR
Will the Open Screen Project Matter?
Adobe lists a variety of phone makers and chip manufacturers as its partners in the Open Screen Project, but notably excludes any mention of Microsoft, Apple, and Google. How will ARM, Intel, and Cisco have any relevant impact on pushing Flash on Microsoft's desktop, Apple's mobiles and the Mac, or Google's web apps and Android platform?
And how are the existing licensees of Adobe's Flash Lite on mobile phones (LG, Nokia, NTT DoCoMo, Qualcomm, Samsung, Sony Ericsson, Toshiba, and Verizon Wireless) going to do anything to promote Flash-based rich Internet apps when their devices can't even run the full version of Flash?
Adobe seems to be hoping that nobody notices these problems and that its vigilant marketing efforts can entrance the public into thinking that a drawing app extended into an animation tool and then retrofitted into a monstrous hack of a development platform is a superior technology basis for building web apps compared to the use of modern open standards created expressly to promote true interoperability by design rather than retroactively.
Given the existing problems of Adobe's Flash Player, will things get any better once we have a handful of different implementations of the Flash platform runtime? And will developers and vendors manage to avoid facing any patent risks after investing heavily to build on top of Adobe's sort-of-open version of Flash? These questions might have interesting answers, but in a world dominated by Microsoft, Google, and Apple, they won't matter.
Earlier segments in this series:
63 Comments
AIR is interesting because, like Java, it works on pretty much all platforms. And yes, the idea of standardizing the UI across different platforms is interesting.
That said, Adobe's plans won't work. I am currently building an AIR app using Flex Builder and besides the fact that it's easy to work with, the APIs are buggy and Flash is just generally effin' slow for anything other than the simple Flash animations of yesteryear.
The app I'm building isn't particularly complex but requires that I make use of Lists/HorizontalLists/TileLists...and let me tell you, the UI becomes stuttery if the list contains more than 50 items (often time using basic item renderers.)
The rendering of UI objects in Flash is just way too slow even on a 3 year old computer. Ideas of having a halfblown OS on top of a fullblown OS will never works. Java and Flash are in essence a mini OS on top of a real OS. They'll always be slower and they'll always have trouble doing things that require intricate links to the real OS.
Although I have made some good money in flash development in the past, I'm quite happy to see it die, now someone needs to make a decent SVG timelined WYSIWYG IDE, apple...
What I would really like would be for apple to stick a layer ontop of SVG so we dont have to write code that looks like this...
<svg width="225" height="250">
eughh horrible.[svg width: 225 height :250]
thats better
or [svg initWithRect:rect]
the objective c would be parsed and converted to SVG out of sight. Can anyone think of a decent reason why this would be a silly idea?
PS: im sure there may be decent reason, i havent given the idea more than 5 minutes of thought.
The app I'm building isn't particularly complex but requires that I make use of Lists/HorizontalLists/TileLists...and let me tell you, the UI becomes stuttery if the list contains more than 50 items (often time using basic item renderers.)
The rendering of UI objects in Flash is just way too slow even on a 3 year old computer. Ideas of having a halfblown OS on top of a fullblown OS will never works. Java and Flash are in essence a mini OS on top of a real OS. They'll always be slower and they'll always have trouble doing things that require intricate links to the real OS.
I have created several enterprise level Flex and Air applications that easily handle 5,000 or more objects in a single data grid. If you find that the application is too slow, you need to re-factor your code. Like all frameworks, there are right and wrong implementations.
Generally, itemRenders should extend UIComponent (not Canvas, or Panel) and should provide 3 or fewer pieces of information. Each of which should be the direct display of an Objects properties; not requiring computation.
I constantly recieve complements on how quick, easy to use and stylish my Adobe Flex applications are. Because the Flex framework and components are so rubust, I can easily create applications that present gigantic data sets in an easy to understand manner.
Thing is, the so called web standards cannot to this day garantee that a web application will work on all browsers in the same fashion and with the same looks. I am getting tired of having to debug an application using standards that works in one browser and not the next.
The only real standard of the web is Flash. 99% penetration is a standard whether one likes it or not. period.
These articles are very critical of Flash but offer little in terms of solutions to the Flash's alleged shortcomings. Flash is still the most powerful tool on the net. I've invested a lot of money and time into Flash but I would switch in a heartbeat if there was something else that worked as well. But just saying Flash is a crappy product doesn't make it so. That is one person's opinion. Flash is so much more than a ubiquitous video container. The bottom line is always "I hate the ads' therefore Flash is evil.