Flash on iPhone OS: two extra reality checks

Unless you live in a remote and far away place you will have heard of the media impact of Apple’s decision to ban the Adobe Flash to iPhone solution and the various discussions that have ensued. I won’t bother with providing more links. I love John Gruber’s take and Louis Gerbarg’s as well.

Both J.G. and L.G. have brought up many valid points: Adobe dragged their heels on Flash for mobile for a looooong time. There have been countless detabes and blog posts.

I’ll bring two further arguments, one logical and one historical, the latter being one that I believe hasn’t been brought up yet.

Logical argument: the fallacy of Flash being cross-platform

Moreover, why should we choose to lock ourselves onto Adobe’s propietary API instead of Apple’s propietary API? Why is Adobe’s API, specs and runtime superior to any others? Many would say the main reason (the only?) is that it’s crossplatform?

Wikipedia says that cross-platform means:

“an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms”.

Oh, okay, so multiple means Windows, Mac and Linux desktops. Hello?!? Anyone there?!? This is 2010 and the 90’s called because they want their meaning of “platform” back. Nowadays, multiple means desktop and mobile. Therefore:

  • Flash Lite is a joke. Where are the multiplicity of mobile devices supporting proper Flash 10.1 today?
  • Where is the pervasive Android support today? HTC Hero buyers are screwed, a phone bought as little as less than a year ago won’t be supported.
  • Where is the support for Windows Mobile devices? Not there until WinMo7. You mean it will be supported on a OS that it’s not even there yet?

Well, you could say that the Open Screen Project and the releasing of the FLV, SWF and the lot specs are true multiplatformness… Well, so far so good but where is the real market traction? Where are the tried-and-true implementations? Adobe has released this technology but until it gains traction it’s no more than a glorified press release. Apple can play this game too, with tech such as WebKit which is used in a zillion places including Adobe’s own Air platform. Press releases and freeing technologies are irrelevant until adopted. A good initiative which I applaud, but still not widely used.

No, Flash is not cross-platform anymore. What is the marketshare of the mobile devices capable of running Flash 10.1? Nowhere big enough for Adobe to be pulling muscle and demanding anything. It seems Adobe is using Flash devs and aficionados as cannon fodder or -as Gerbarg more aptly puts it-, “Adobe used its userbase and their livelihood as a bargaining chip”. Adobe dragged its feet for years in the mobile arena and now is paying for its mistakes.

Historical argument: Macromedia Adobe has screwed its own developers like this before

In the nineties Macromedia had a great product already. It was cross-platform (as per 90’s definition), had powerful scripting capabilities, an powerful extension architecture, a great browser plug-in runtime that was also cross-platform, video capabilities, awesome rapid development tools, stellar graphics integration, built-in debugger, great performance, etc. It was called Director and it was really cool.

Then Macromedia bought FutureSplash in 1996 which would be later renamed to Flash. It had far less capabilities that Director at the time (no real scripting at the beginning, etc.) and would remain technically inferior for sometime, having no debugging and many other features being missing for a long while. However, it had three distinct advantages. Strike one: having less features and being a newer codebase meant it could have a more lightweight runtime than the Director one. Strike two: it had support for vector graphics, which desktop CPUs at the time were just capable of displaying and animating adequately. Director came from a less CPU-intensive bitmap background, faster but consuming more space than vector definitions and looking less sleek in many cases.

One “advantage” remained. So what did Macromedia do? Take advantage of the FutureSplash technology acquisition and the Director established developer base? It could have easily added the vector drawing technology into Director (it supported many types of media already). Refactoring the code and runtime would be no trivial feat but doable. Any Director developer would have been OK with a new restriction being put into place that meant only vector-graphics resources being allowed any new Director web runtime, would have welcomed and embraced such a change.

Strike three: Macromedia realised that with the maturity and feature-complete of Director no long-winded upgrade path was in sight. Just adding vector graphics and a streamlined runtime would do for one or two Director upgrades, no more. They thoroughly screwed the existing loyal developer base royally and released a sleek new 1.0 Flash product. Then they spent years releasing upgrades that added features that had already been present in Director for some time. They created another cash cow, a cow that would ride the wave of the Web explosion of the .com era. Director out. And no, I’m not buying any of the “official” reasons for its languishing and Flash emergence. It was all about money.

I am not crying for Director’s demise -or rather, being put into life-support mode. It was a good platform and many (myself included) made good money using it. This doesn’t mean Adobe didn’t screw up many of its own developers and went in for the next cash cow.

I am not buying Flash developers and supporters taking offense and the moral high ground, the company (now Adobe) you support has done a much worse thing to its own developers. Why should Apple even care for developers of other platforms? Just because you learned a framework and are scared of it fading away doesn’t mean anything… Some of us have done this many times before and moved on…

Final word: put your code where your mouth is

Okay. Time to recap, folks. If Flash is such a great platform -it’s actually not bad but not that good either- go ahead and develop these killer apps on Android or WinMo7 whenever that comes out. With killer apps being available on competing platforms making a huge difference Apple will simply change the clause and allow you in. They’re not stupid.

Now stop crying and start coding. Myself, will try to put this out of my mind.

Firefox for N900 with Flash disabled. Ah, the irony…

From the Firefox for Nokia N900 1.0 release notes themselves, stumbled upon this little gem:

Initially, Firefox for N900 does not support browser plug-ins. Due to performance problems using Adobe Flash within Firefox on many websites, especially those with multiple plug-ins on them, we have disabled plugins for Firefox for Maemo 1.0. We plan to provide a browser add-on that will enable you to selectively enable plugins on certain sites, because some sites, like YouTube, work well.

So the good folks of the Mozilla Foundation have gone and released the thing. Given the recent turn of events, it’s interesting to see the reality brick hitting the Adobe head, so to speak. Couldn’t think of a more appropriate support for the Apple iPad, really.

Even if the eventually release it with plug-in support enabled, they will probably stick with letting users enable Flash selectively… This is yet another nail in the Flash coffin.

Flash: the Wider Picture of an identy crisis

In this post I try to paint a bigger picture on the sneaky attack directed by major industry players to Adobe. Namely Apple, Google and Microsoft. There have been a number of seemingly unrelated news that will affect the status of Flash player as the prevalent media platform. Reasons for the upcoming struggle are varied but there are no bits of the overall Flash media platform left untargeted.

I will then get together some of the latest news and try to get the “Wider Picture”.

So, what makes an Internet media player an Internet Media Player Platform then?
In other words, a successful platform needs to establish itself on the Internet and WWW and be useful to distribute and enjoy multimedia content.

Nowadays, the most prevalent player is of course, Flash. But it did not used to be that way. Previously Windows Media Player was quite prevalent, fighting a war with QuickTime and Real Player, the later now pretty much being a thing of the past. Rhapsody notwithstanding.

But on what is Flash standing, really? In fact, it is standing on the pillars any other media playing architecture needs.

Media Player Architecture

These pillars can be listed as:

– An encoder, capable of live encoding
– A physical media container
– Support for at least one audio and video codec
– A live transmission system protocol
– For on-demand transmission we can assume HTTP is used for sanity
– A player runtime that can be distributed
– A container “plugin” or system to display the runtime on Web pages or on native apps
– Some kind of DRM system
– And finally, an established user base (or the whole thing is moot)

In the case of Adobe Flash, we can examine them:

– Encoder: check, Flash Media Encoder and others
– Physical format: .flv container format
– Video codec: On2 VP6 and lately H.264

Audio codec: MP3 and lately HE-AAC
– Live transmission: RTMP
– Player Runtime: the Flash runtime itself, capable of running ActionScript-generated bytecode
– Container: Flash Player Plugin
– DRM: indeed
– Established user base: near-ubiquity

All dots connect -and very well- in the case of Flash. In fact, some argue, myself included that lately Flash is just a glorified media player. There are a number of reasons of why this might be. My pet one is the following:

Take into consideration the enormous complexity of HTML+JS based Web App development, and that is the case even if you factor in the seemingly endless list of limitations and constraints imposed by the system. Let’s name some: poor support for local data storage, session-less basic protocol, slow character-based at that, massive rendering and composition constraints, limited animation support and a big etc. I do not need to continue.

Yeah, these are massive constraints. Bad as they are, they actually force on developers a set of paradigms that can be bent but not broken. A working set of variables that can be changed but not drastically. Constraints are sometimes design decisions, in fact, they are actually features if read from “outside the box”: rendering speed, readable, simple, reliable. Ah, the beauty of good design.

Flash, on the other hand, imposes far less of these constraints. Paradoxically, this enables hobbyist wannabe User Interface goons to go ahead and design fantastic-looking apps that look great but can’t be used. The demos look great and apps are demoed, sold, developed, deployed, suffered and quietly replaced by a faster, more serviceable JS-enabled app. I have seen this happening quite a few times myself. There you go. Read the lack of constraints from “outside the box” and you can get: slow, opaque, complex, crash-prone. Obviously if the UI goons are still in charge the simpler JS-enabled application will still be awful, but they can do less damage. But I digress.

Regardless of its shortcomings, Flash is today quite prevalent for video, “glorified media player” or not.

I would bet Google is not that happy that its YouTube video platform is Flash-based. I mean, one of your most strategic company assets relies completely on an external -and potentially competing- company???

This is okay for small fry, value-resellers and 99% of the companies out there, lest NIH syndrome bring your company down. So please don’t go out and start building your own microprocessors yet. One does not need to drink the OSS kool-aid to go on a limb and re-invent the wheel. Just keep an eye on your options, wink, wink. Just like any sane company should do.

But Google? You gotta be kidding. Hello?!? I am the ghost of the past and my name is WordPerfect. Gotcha.
Google excels and out of the box thinking, so eyes are kept at options wide open. Big time. There can be of course other, less obvious strategic concerns such as having viable options to provide media playback capabilities for Chrome-OS enabled devices.

Take another outta-box thinker, Apple. They surely are not happy about the Flash situation either. And well, they also seem to know what they are doing.

One obvious strategic concern is iPhone media playback both in and outside Web pages. Having Flash on the iPhone Safari browser would mean the Flash runtime ubiquity stretching even farther, leveling the media playback field even further. On the other hand, in the case of the iPhone, the video playback could be seen as collateral damage. The iPhone input capabilities paired to its powerful processing capabilities are in fact a good environment to deploy Flash on. I can see the minds of the developers: “great, we develop for the iPhone in the tried and true Adobe tool suite and we can deploy on Symbian, Android and WinMo in one go”. Wham! Flood of lowest-common denominator app, designed for wide market-share and running on a old, embedded-unfriendly runtime controlled by a third agent? You have to be kidding me again. Flash on the iPhone? It will not happen.

In the case of the iPhone, Apple knew they would shoot past the red waters of the pre-iPhone smartphone era into a blue sky. They also know that sky will darken, eventually. They have pressed their advantage in this emergent market. To paraphrase a former boss of mine: “Mobile will become THE platform”.

Apple is also concerned in the video playback in the desktop browser arena, even though that is perhaps less threatening to its plans. Ironically, in the case of Snow Leopard and its 64-bit Safari browser, Flash is running on a separate process so if you check it’s CPU usage it makes the plugin look really bad.

Microsoft is the uncle that has blown his family’s rich inheritance from a distant relative and then set fire to the barn. Windows Media used to be the leader video platform in the Web. They were readying themselves to obliterate MP3 from the market when YouTube struck with full force, playing Flash strengths: ubiquitous, multiplatform, hassle-free. I haven’t bothered to install Windows Media Player or it’s derivatives and I think I never will. I haven’t seen a .wma file in months and I don’t bother with the odd website that embeds WM, good riddance.

Pretty much everything in the consumer space seems to be a threat to MS lately: mobile, gaming, Web entertainment, set-top boxes, portable audio and a long et-cetera. Web and Internet playback are of course capital to its continued dominance of the consumer desktop, the real platform it stands on for its enterprise cas-cows. Distracted by Apple, Sony and the like, it forgot YouTube and Flash. Oh, and the official rival Google went ahead and bought them.

The battle lines are moving, can you spot them? To make them more obvious, we could do the mental exercise of going through the pillars that a video consumer architecture make and questioning what the aforementioned companies are doing about it:

– An encoder, capable of live encoding

In this case, pretty much all the companies have their own solution, plus the usual indies. Well, Google is not but I would not put it past them to be working on it. And there are always the OSS solutions, provided any licensing issues are cleared (hint, hint). Google thrives in the OSS environment and is quite well used in taking advantage of it -and of course contributing in turn-.

Although this is an important piece, it is far less visible to the consumer than any other pillars.

– A physical media container

Viable, established alternatives exist: the .MP4 physical container format, WMV to a lesser extent and the MPEG Transport Stream which in my opinion still has a lot of potential. All of them are well understood, well supported and most if not all are royalty-free. Both Apple and Microsoft are doing their best to keep their engines polished to support them. Google is again the elephant in the room.

IP on the .FLV physical container format is what Flash has on the plate to support this pillar.

– Support for at least one audio and video codec

This is where things get more interesting. The MPEG-4 Advanced Video Codec star, H.264 is gaining traction in the mobile arena thanks to the iPhone and other high-end phones. Apple is of course pushing hard on that and MPEG-4 on the iPhone will remain a point of resistance. Microsoft, as usual is pushing Windows Media as an alternative, specially with the Zune and WinMO, but it’s not looking that good.

But, hang on! Flash plays H.264 and AAC just perfectly thank you very much! The most likely reason for Adobe to adopt the codecs (and surely pay a steep fee to MPEG-LA) is that On2VP6 is showing it’s age and H.264 is really competitive. This means that big-profile clients like, erm, Google’s YouTube can optimise their video better and pay far less bandwidth costs (as they are already doing). Specially if you think big traffic like YouTube “big”. You can bet the small fry are also flocking to AVC Flash playback to save on costs. Vimeo anyone?

The blazing MPEG-4 codecs are like a double-edged sword to Adobe though. By adopting them Flash goes from a “glorified video player” to a “glorified MPEG-4 player”. The sharp edges of player interoperability are hidden within the package.

But, hang on! Google bought On2 Technologies! Uh-oh. Adobe doesn’t own the newest codecs and the old ones either. It is quite likely that the original deal between On2 and Adobe is long lived and contains many a safety blanket with a long period of exclusivity thrown in. Adobe have surely gone through the contracts inch by inch. Expiration clauses, opt-outs, etc.

Google made quite a big strategic acquisition here. Imagine, for a moment only, that they need a royalty-free codec to provide rich media playback for the Chrome OS. And imagine the exclusivity clause on the contract with Adobe expires, say, on the day of the Chrome OS release. And just go a little bit further: open up the IP of XXX with a suitable open license… There is more after the break.

But wait yet again! Isn’t VP6 old and not so competitive?!? Wouldn’t it take an army of extremely smart, dedicated and expensive researchers a lot of effort to improve it? Well, Google happens to have dozens of brilliant PhD-holding scientists who can also code that would be only too happy to take on such a challenge.

– A live transmission system protocol

We have mms:// languishing and rtsp:// not 100% successful, specially in comparison with rtmp:// and the clever workarounds found in competent Flash playback software such as Open Media Player. So that is another pillar that needs to be dealt with as no proper media playback system.

Apple has developed and proposed as a standard a streaming protocol that is pretty much HTTP. Check out the Akamai showcase. No firewall problems, no complicated delivery servers. Microsoft has also been busy on that side as well.

So Apple’s work is actually a proposed standard, ready for the taking of uh, the likes of Google. If Google were to implement http-based true streaming on YouTube, it would shave off a lot of costs on bandwith, infrastructure, etc.

Akamai gains would also be enormous benefit by simplifying its services and lowering its infrastructure costs by reducing the number of streaming architectures to support. Any other CDNs would as well, dragging the small fry with them.

– For on-demand transmission we can assume HTTP is used for sanity

A no-brainer, fully supported by pretty much anyone.

– A player runtime that can be distributed

The Flash runtime architecture and ActionScript 3 language are pretty mature now. Adobe Flash CS4 has unrivalled GUI design support and is in fact one of the company’s traditional strengths. In the meantime, Apple and Google’s efforts have concentrated on providing a viable and competitive runtime: Javascript.

Regardless of WebKit being adopted by Google on both the Chrome browser and Android, Google have gone ahead and built their own JS engine, V8. This ensures competition with SquirrelFish and will eventually drive the quality and speed of the engines forward. Add that to FireFox market share and MSIE 6 hopefully imminent demise and we have a viable playground for Javascript to become more stable and entrenched. In fact, the effect of these efforts on video playback can also be seen as “collateral” damage as a viable JS runtime environment is key to both Google and Apple strategies. This is specially true of Google and its online application strategy, key to its growth and long-term survival.

I am personally quite impressed by GWT and Google Wave, they are impressive engineering efforts. One could draw a parallel between AS3 plus the Flash Runtime and Java plus the Javascript runtime, with Javascript just being a simpler intermediate language for the different JIT JS runtimes to turn into native code. That is basically what the Adobe tech does, just pre-compiled. Pre-compiled JavaScript anyone?

The beauty of the GWT strategy is that Java coding tools are really mature and extremely powerful so we will see how that effort pays off. Isn’t it ironic that many Adobe tools are Java-based?

In the case of Google, using Java as the basis of Android and Eclipse as the basis of its development environment helps cement the Eclipse toolset as a powerful beacon. Regardless of the Java no-show on iPhone (another collateral), there is a subtle hint of renewed Java support by Apple, with the surprise appearance of the 32-bit Java 6 runtime in Snow Leopard. Ah, how IBM must be laughing at the strategic impact of its Eclipse gifts to the world.

Microsoft here is doing its copy-cat tactic, developing and then releasing Silverlight. Arguably, Silverlight’s implementation is more modern and neater than Flash and C# is probably a slightly better language. But it seems a “me-too” strategy and is simmetrically opposed to the Apple and Google strategies, which look more forward thinking to me.

In short, all players are coming up with powerful and viable alternatives to the AS3-Flash Runtime combo, supported on the shoulders of giants.

– A container “plugin” or system to be displayed on Web pages or on native apps

The ride gets bumpier here. It is no secret that both Apple and Google are champions of the upcoming HTML5 standard, helped in no small way by FireFox.

Enter the <VIDEO> tag in HTML5. There is little doubt that in the mobile browser arena the de-facto standard of video embedding will be through that harmless-looking tag, iPhone-thank-you very much. Apple is putting its money where its mouth is and has dozens of developers on WebKit, they will undoubtedly add support for <VIDEO> and this uniform single-source support will make it much more stable. Let’s go one vendor at a time: Google’s Android: no-brainer check, Symbian WebKit toting vendors: check, Opera: will have to follow suit, Symbian non-webkit browser vendors: going out of business anyway, Apple’s iPhone: check. Windows Mobile will either have to follow suit or be forced in a dark corner: either go on its own actively support its direct competitor Adobe with seamless Flash embedding. Microsoft is the underdog here, they will have to follow suit.

But wait, on mobile browsing Flash is already available as an alternative!

Yes, but it will never be available on the iPhone. With delicate irony the same pervasive multiplatform embedding support that made Flash-based video the king on desktop will be what hands it over to HTML5 on the mobile arena.

On the desktop things are slightly more complicated as Microsoft holds far more power with its large MSIE installed base, it’s not absolute power as it used to be but it can still stall and influence progress. The choices for MS are interesting: denying support for <VIDEO> completely would gain it time, defend WMV and stall Apple and Google’s advance, however, it would never be able to claim standards compliance. Microsoft has never cared for standards and has sometimes actively worked against them sometimes. However, forestalling <VIDEO> on the desktop would mean Flash is still king there, which doesn’t help Silverlight in any way. Would a weakened Flash pave the way for more Silverlight apps? Maybe, but it would be the final nail in WMV’s coffin, wouldn’t it? In any case, HTML5 is the standard and MS should at least feel some pressure and Flash continued dominance is not a rosy alternative either.

Another choice would be to grudginly support <VIDEO>, that would probably kill WMV off, inconvenience Adobe and hand the market to the other players.

More irony. It seems much hangs in the balance of Microsoft strategy here. But, besides mobile, there are two potential agent of pressure here, one is Firefox’s market-share growth which might continue and continue until MS is under 50%, difficult but not impossible. The other one is YouTube, Google needs to walk a fine line here, but as they have hinted to in the past, they are wiling to play hardball. A potential scenario would be to detect <VIDEO> enabled browsers and serve them the Flash-less video experience, perhaps add some better quality incentive or something. The immediately benefit for the user would be a better performing and smoother experience as there is no complex runtime to load that in the case of video playback doesn’t really add anything of value. This would help Firefox and other competing browsers grow even more marketshare.

Interesting conundrum: don’t support <VIDEO> to see MSIE drop it’s “standards support” badge and market share further eroded. Support <VIDEO> and see WMV weakened plus the general market browser interoperability increased. Or encourage Flash support and see Silverlight wither.

It seems MS is choosing option b) and supporting <VIDEO> as they seem to consider that option the least damaging to its plans. We’ll see.

– And finally, an established user base (or the whole thing is moot)

That is an interesting one, as Flash is well established in the desktop. However, also consider the combined Firefox, Safari and Chrome marketshare if they were to offer viable <VIDEO> implementations you would get an instant sizeable chunk of the market. Interesting.

In the mobile arena we have WebKit as the looming defacto standard. Again, instant market share.

Media Player Flash facing competition
In conclusion, powerful and determined players are preparing to fight the dominance of Adobe Flash in the Internet video market. The attack seems uncoordinated but all facets of Internet media playback are targeted from several directions, there are so many that I am having trouble drawing them all in one diagram. Powerful determined players like Google are entering the scene while established ones like Apple and Microsoft are re-entering the fray with renewed strength. Their strategies vary from conservative to novel thinking and blue sky reinvention. Adobe needs to start thinking alike or face a big identity crisis. Time to dump the stock?