Thursday, April 29, 2010

Thoughts on Flash, by Steve Jobs

Apple CEO Steve Jobs has published a letter entitled "Thoughts on Flash" on Apple's site today. If you've been following the "no flash on iPhone/iPad" controversy, you'll recognize all the arguments that Jobs lines up. Never a fan of Flash myself, I tend to see Apple's side of things and I think Jobs shows that Apple really has a compelling reasons to keep Flash off of the iPhone/iPad platform.

It's interesting to see Jobs openly state the "most important reason" for prohibiting Flash:
We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform.
This directly echoes what John Gruber wrote earlier this month in "Why Apple Changed Section 3.3.1". As a developer, I really understand this. And I'm not gloating because I took the time to learn Objective-C and Cocoa Touch. I've worked in enough languages, frameworks and platforms over the years to know that it's critical to understand a platform at its base level, even if you do most of your work in a higher level language or framework.

I think part of the controversy is due to how good the iPhone and iPad actually are. Most users are blissfully unaware of how limited the CPU and RAM on their iPhone are. Apple has delivered a user experience that rivals (and with iPad even exceeds) that of a fully powered PC or Mac system.

High level layers like Flash are woefully inefficient. Simple calculations in Flash can be a hundred or even a thousand times slower than in a lower level language like Objective-C. There's so much processing power available in a modern desktop or laptop machine that this inefficiency is rarely noticed. It's a much different story for your iPhone however.

Flash developers seem particularly tone deaf to performance issues. I think we've all seen web-based Flash apps that take forever to download, often showing you some annoyingly wizzy progress meter while you stare at a blank screen for two minutes. Of course, for the Flash developer loading it directly on his development machine, it appears in seconds. Now imagine this experience on your iPhone.


Kevin Bomberry said...

Don, good read. As we both know in the past we’ve had several clients that we developed for using AS2/3 (per their request) and have mentored other developers in their work using Flash and when I think back to it there was almost always an issue with Flash. Example: when developing a presentation layer for IDEO (in Flash) we hit several issues with limitation in the way long video and audio seemed to “slip” out of phase.

Granted Adobe Flash used in a vast majority of web sites but I see it mostly being an obtrusive way to deliver ads, or a container for presenting video (with commercials). Yes, there are several sites that make good use of the “plug-in” developing interactive sales tools or games but even these have one thing common that we can’t escape - they are all driven by mouse interactions and not touch.

The basic routine in the flash world is that of hover over indicators, that is to say that most interaction becomes apparent when the user moves the mouse over an object and then the object reacts to the hover - with additional actions happening once the user clicks the mouse on the object. This is not the case with touch interaction.

Most Flash programmers don’t program for a “kiosk” but rather a computer (with mouse) and in this they fail to meet a basic requirement of the iPhone OS’s presentation/interaction method. This is also the case with several web sites.

We just did a soft refresh of our site to handle the user experience of the iPhone and iPad. We had to realize that we are no longer programming for the web experience alone (via a browser) but however are developing a presentation layer for an ever-changing techno-landscape. So we present information without the mouse’s hover event (as touch devices don’t see this) and we are always learning new things, be it AJAX or HTML5.

I understand that they took the time to learn Flash and AS2 (as not all are using the power of AS3) and that they made something they want to share... but as you said, we took the time to learn Objective-C to develop for the platform, why can’t they?

Kevin Bomberry said...

I just had a good chuckle reading MG Siegler's Decoding Steve Jobs' Dressing Down Of Flash over on TechCrunch. It's worth a read.