Thoughts on Steve Jobs' "Thoughts on Flash"
First, let me say that I'm thrilled that Apple finally decided to say something --anything!-- publicly about the topic. Living behind a curtain like that only leads to speculation, and that only leads to worse speculation, which leads to dissent. I know that I've personally started to feel some dissent because of the secrecy; so I'm hoping that more transparency will make things clearer, for better or worse...
Steve opens with an explanation of Apple and Adobe's history, and their working relationship both past and present. What he neglects to mention is that Apple is currently an $8 billion per year company, and Adobe is about a $900 million per year company. By comparison, Apple has "F You Money" [strong language]. They can, and in my opinion are, swatting Adobe like a fly on their neck. That's their privilege. I'm not saying it's right or wrong, I'm just saying it's happening.
Steve is obviously deluded about what defines Openness -- specifically, an Open Platform:
In software and web-based architectures, an Open Platform describes a software system which has published external programming interfaces that allow using the software to function in other ways than the original programmer intended, without requiring modification of the source code. Using these interfaces, typically known as an Application Programming Interface (API), a 3rd party could integrate with the platform to add functionality. An Open Platform does not mean it is Open Source. An Open Platform can consist of software components or modules that are either commercial or open source or both. [Emphasis my own]
So, by Steve's description, Flash is a "closed" platform because Adobe aren't giving out the source code to the runtime. But the iPlatform (iPhone, iPod, iPad) isn't an open source platform either, sooooo where were you going with that, Steve?
On top of that, iPlatform requires you to buy a $100 SDK license and absolute-minimum of $600 in hardware (a Mac Mini, but you'll likely want to spend more than that for something more powerful) -- just for the privilege of developing on it. I guess the price gouging just to get in the door doesn't make it closed, but I see it as underhanded.
By contrast, I am under the impression (but not positive) that Adobe doesn't even require you to use their tools (i.e. Flash Professional), let alone force you to buy their expensive hardware, to create flash movies and applications. I don't think there's anything stopping you from using another IDE to write a flash application and compile it to SWF. Adobe sells lots of copies of Creative Suite not because the rules say that Flash developers have to use it, but on the merit of the software -- that is, their authoring tools are the best available. If Apple wants you to use XCode to write iPlatform apps, in my opinion, they should make XCode the best possible option. Win, but do it the right way.
With recent developments, Apple is now taking steps to shut out tools that enable cross-platform development; namely the Flash CS5 iPhone compiler. I'd say that alone --by definition!-- makes iPlatform a closed platform. But Steve says it's the other way around. Right, ok... Sure, Steve.
He says that Webkit is open, but he's wrong. What he's confusing here is that Webkit is open source, it is not an open platform. If it were an open platform, there would be a rich ecosystem of plugins that enrich the user experience, like Firefox. Heck, Google took that open source platform and made an open platform out of it. They called it Chrome (have you seen the extensions?), and in my opinion it kicks the crap out of Safari.
Apple's OSX is an open platform. The iPlatform is not. There is no gatekeeper for OSX, yet it thrives. Good software floats to the top, crappy software fades into obscurity. The same can not be said for the App Store, though I wish it could.
I openly concede on the point of video. Flash may not be the future of online video, but it deserves some respect for making the last few years of web video possible.
We also know first hand that Flash is the number one reason Macs crash.
I don't work for Adobe, and I don't have any inside information, but I can make what I think is a pretty safe guess that a big part of the reason Flash crashes (air-quotes) "so much" on Macs is that things that are better done by graphics hardware than software have been off-limits. If those APIs had been open, then the software wouldn't have to work so hard, wouldn't need so much power and memory (and all of this applies to video playback as well), and --to your point, Steve-- it would have been more stable, and more time could have been spent making it more secure. In my opinion, the finger pointing on this issue should be directed at yourself.
Flash is not without its blemishes; and security is a big one. I wish it were better. But it is not alone in this regard. Java, ActiveX, and so on have had just as severe weaknesses; they just aren't as vocalized because Flash is more popular, at least recently, because of all of the good it does. It is less important to be perfect out of the gate, and more important to be proactive as well as reactive, and aggressively patch security holes. Nobody is perfect, but I think Adobe does a very respectable job at it.
The battery life argument is also mitigated by opening up the hardware API's. Make the software do less and it will consume less power. That's a pretty simple conclusion, right? This is a pretty dumb point for Steve to harp on, so I won't spend any more time on it.
iPlatform is a touch-based platform, but doesn't support roll-over. (In exchange, we get shake! What a croc!) That said, it is simply not difficult at all to switch some code from listening for a hover event to a click event. If a menu was displayed on hover before, it will be displayed on click now. So the whole argument that "you have to rewrite your apps anyway, you might as well switch the platform and start from scratch!" makes absolutely no sense. When faced with the decision between starting from scratch with a new language, on a new platform, and new tooling, versus changing a few lines of code, the cost-effective and time-effective decision should be obvious. (Hint: Change the few lines of code)
Lastly, Steve argues that any layers between the developer and the iPlatform SDK are bound to have some drawbacks, and he's got a point. When writing applications one time that will work on multiple platforms, trade-offs will be made. But what I don't agree with is him deciding for me. I'm a grown man, and it should be up to me to decide what tools to use. If my choice in tooling results in a lower quality application, so be it! If Apple releases some awesome new features in the SDK that my middle-layer doesn't support for 6 months, so be it! Those are the consequences of my choices. He is ignoring the fact that it is possible to write awful, slow, buggy code in any language, including Objective C; so forcing a language down someone's throat does not solve that problem.
He goes on to say that Creative Suite took a very long time to convert over to Cocoa, and he's right about that. But can you name a single application for OSX that's larger and more complex than just 1 of the 15 applications included in Creative Suite? Maybe you can, I can't think of any right now; and even if you could, would it come close to all 15 combined? I think not. There was a lot of work involved in that conversion. Give credit where credit is due.
He also conveniently neglects to mention that those lazy developers over at Adobe managed to get a public beta of Flash 10.1 online with H.264 hardware decoding support about a week after the APIs were opened up. How's that for lag time, Mr. Jobs?
Posted in Adobe | Apple | Flash | 16 Responses
Camtasia, a non-Adobe technology, will create SWF output for their screencasts.
There is also a product called Flash Builder that created SWF files. ( http://www.a4desk.com/ ).
There are also a handful of 3rd party tools for creating Flex Applications including two Visual Studio plug ins and one Flash Builder alternative whose name escapes me. OF course, these products most likely bundle a version of the Flex Framework so they may not be good examples of "non Adobe SWF creation"
Your Point: "Steve is obviously deluded about what defines Openness"
See quote in bold: "that allow using the software to function in other ways than the original programmer intended, without requiring modification of the source code"
Flash is not open, in fact you cannot edit flash except inside the flash editor software. SWF files cannot even be decompiled or extended and offer not API's at all. By ALL accounts this is closed. Apple is not saying that the iphone / pad os is "OPEN" in fact Steve says just the opposite. Steve writes "Apple has many proprietary products too. Though the operating system for the iPhone, iPod and iPad is proprietary…" Steve is revering to the web being open, and how Webkit is open, in fact it's open source. HTML5 is open, and should replace flash for video playback. It's far superior in every way. It's faster. It requires less battery, less likely to cause crashes or open security holes. That to me is a win-win-win-win!
Your point: Entry into iphone development costs at least $700. $100 for the SDK, and $600 for a mac.
So to develop an iphone app, assuming you do not own a computer, you will need to spend $700 for a computer and the SDK? Compare that to flash, you will need to pen $700 just for the application, and $XXX on a computer. So the cost of entry is utter bullshit.
You claim that you can use other editors to write flash, and compile to a swf. I am curious to know what is? Are you talking flex? or what? I am not aware of any application that can create flash except Adobe Flash, or Adobe products like flex builder. Then again, I am not a flash developer and do not stay current with flash technologies.
Your Point: "I can make what I think is a pretty safe guess that a big part of the reason Flash crashes (air-quotes) "so much" on Macs is that things that are better done by graphics hardware than software have been off-limits. If those APIs had been open, then the software wouldn't have to work so hard, wouldn't need so much power and memory"
Again I call bullshit. Your guess is totally speculative and totally wrong. The APi's have been available all along. Adobe never cared, nor did it's developer, how flash rendered on the mac or what api's were available. They were only fixated on creating an application that could be written once and used everywhere. (Sounds familiar right… Sounds like Java) We all know how well that works. The Problem I have, being a long time mac user, is that flash apps were written to work good on a windows machine and ported to a mac with little care as to how it actually performed. After all Mac's were only 4% of the population.
Now the tables have turned, the iPlatform is the dominant platform and new PC converts are confused by the lack of flash. Well All I have to say to that is Tough titty! mac users have put up with crappy flash websites for too long. If you want flash on a phone then go get one that supports it. And don't come complaining that your phone sucks and crashes all the time.
Your Point: "When faced with the decision between starting from scratch with a new language, on a new platform, and new tooling, versus changing a few lines of code, the cost-effective and time-effective decision should be obvious. (Hint: Change the few lines of code)"
You and I know both know this is BS. Changing a few lines of code is not going to happen, and will likely require much more than a line change. Changing a hover event to a click event is not that straight forward. Sure you can change the one line to handle the click event, but what about closing the item? What about hover intent? how long should something stay open until it closes it's self? Can you still click the tiny close box with your finger if the developer left the tiny 8x8 pixel close button designed for a mouse instead of a finger?
I understand, your feelings towards openness. But you sound like your more more willing to cut your nose off to spite your face. And I guarantee that if flash was allowed on the iPlatform and your experience sucked so bad with it, you would be one of the first to jump up on your soapbox and bitch and moan about apple's iPlatform pointing the fingers in the wrong direction, justifying your emotions with ridiculous claims about openness.
Were still friend right? Hope you can take me mean spirited mac fanatic defense in the spirit in which it was intended.
So yes, you are correct, Flash is not any more open than the iPlatform. Nor is Webkit (I spent a whole paragraph on that). What tips the scales in Flash's favor is that there is nobody that gets to decide, after you spend months of your time and money developing something, whether or not it can be released.
Take the recent case where Apple pulled a slew of apps for being "too racy," yet left apps by Playboy and Sports Illustrated. Moves like that are heavy handed and immature. What would have been appropriate would be to institute a rating system, like movies and video games, and a way for parents to lock down the device to prevent their children from finding and buying content that their parents deem inappropriate for them.
You are absolutely right that HTML5 is open and should replace Flash for video playback. That's why I said, "I openly concede on the point of video." But that doesn't mean that HTML5 is a silver bullet -- that's like answering every single JavaScript question with "Use jQuery!".
Your next point: CS costs as much as a Mac. First of all, who on earth wants to write a mobile application and doesn't already have a computer? Seriously! But, hypothetically speaking, let's assume you're right... a reasonable development environment: a 15" MacbookPro base model + the RAM upgrade (who can work with only 4gb any more?!) is $2,200; whereas Adobe CS5 Web Premium is $1,800. If you're on a tight budget, you can order just Flash Professional for $700. Winner? Adobe.
Also, while we're on the topic, see Jeffry's comment RE: a few 3rd party tools that create SWF files. The SWF spec is published, so there's nothing stopping anyone from creating their own SWF files, with or without Adobe tools.
"Your guess is totally speculative and totally wrong. The APi's have been available all along." I'm sure you're a Mac user, and I'm sure you've wondered why watching Flash Video on a Mac causes the fan to go into high gear after a minute or two, but watching the same video on a PC doesn't. The reason is that Apple never exposed access to the graphics hardware via an API, so the software has to do all of the work. This causes the CPU to get crazy-hot, requiring the CPU fan to go nuts, and, in a lot of cases, video stuttering.
Now, we're not talking about lazy Adobe, here. The capability physically didn't exist, so there was nothing for Adobe to make use of. http://developer.apple.com/mac/library/technotes/tn2010/tn2267.html -- (from the bottom of the document) "2010-03-29 - New document that describes the Video Decode Acceleration Framework APIs available on Mac OS 10.6.3+ on certain Mac models." See also: http://www.macrumors.com/2010/04/22/apple-opens-door-to-hardware-accelerated-decoding-of-h-264-in-flash-and-other-platforms/
RE: Switching to a phone that supports flash. Believe me, I am! (http://tuttletree.com/post.cfm/the-lust) Enjoy your blue legos. ;P
Now, I think we both need to compromise on the bit about changing hover events to click events. In my mind, I was thinking about a menu UI. I don't know know exactly what you were thinking about. If well designed (especially if targeting mobile!) then there will be plenty of room for stubby fingers to click and open/close menus (click once to open, click again to close). There should be no auto-closing after a delay; that doesn't make much sense on a small screen and a touch UI... but these are DESIGN issues, not TECHNOLOGY issues. They're not limitations of Flash, they're bad (hypothetical) design. That's the fault of the designer. And again, you can have bad design in any language.
I think that covers everything...
Yes, the Flash Builder product I refer to is different than Adobe's Flash Builder. It pre-dates it by many years and has nothing to do w/ Flex.
You can see my previous comment for examples of non-Adobe software that allows you to create Flash applications.
The Flex SDK is also open source and you can use it's a command line compiler to create SWF applications at no cost.
Regarding APIs available on Mac, read this text for Flash Player "Gala" which is available for pre-release on Adobe Labs:
http://labs.adobe.com/technologies/flashplayer10/gala/
The related text:
"Many video professionals point out that access to hardware video decoding is the single most important factor in overall CPU load when playing video. Mac OS X 10.6.3, which became available on March 29, 2010, is the first Mac OS X release to expose APIs that support H.264 hardware video decoding in the browser."
As for Gala, I mentioned that in the original post (the last paragraph). I guess I didn't link deep enough, but that's exactly what I was referring to.
My last post should have been directed as a response to Mark; not at you. Oops
As for HTML5, it isn't a standard. At best it's a proposal. It's not done yet. And if it was a full fledged "flash-killer" I wonder why Google the HTML5 backer with all the fancy web dev toolkits just paid lots of cash for little Picnik, the online image editor. You know, the Flash based one. Oh wait, they all are... (Aviary, Splashup, Photoshop Online, etc)
That's just one example of the lies in the document. But I guess it doesn't matter to the intended audience.
Only this won't happen. Let's stipulate that Apple is evil and it's no coincidence that no one has ever seen Steve Jobs and Satan together in the same place at the same time. Still...Apple has managed to do what few have: tie its best interests with the users' experience. If Adobe -- or anyone -- understood that point, we wouldn't need to be descrying evil Apple and poor Adobe.
The cocoa argument is very funny, iTunes doesn't use it and I bet a spot poll of CS users about this would always prefer functionality over a underlying framework change.
sure Cocoa is great to program in so i hear, but lets look at some Apple technologies we don't use anymore, Firewire, SCSI, AppleTalk the list goes on...
It's amazing to see Apple replacing Microsoft in terms of developer love.. Steve Balmer is correct when he says developers, developers, developers
I'm not a huge flash fan myself, but it has a place and when it's missing, it damn annoying..
All said I love my Nexus One and can't wait for Google I/O and the public preview of mobile flash
Hal, I don't think anyone here is calling Apple evil. Certainly not me. I'm just trying to keep him honest by pointing out the lies and the mis-truths. I just don't appreciate bold-faced lies, and immature, heavy-handed crap that affects my own experience on the platform.
Zac, good point about iTunes. That pretty much blows the whole CS-Cocoa argument out of the water. Eat your own dogfood, then we'll talk!
Public opinion certainly carries weight. But most of the complaining about the lack of Flash on Apple's mobile platform is coming from developers with skillsets rooted in Flash. Sure, I hear a stray complaint from my dad about not being able to play a video or see all the content of a site on his iPhone. But his complaints tend towards "Why don't these people get rid of Flash on their web site?"
The outrage from the Flash community comes off like fear of retooling. Apple is the most popular mobile platform out there right now. Love it or hate it, they're blocking Flash. It's popularity is trumped by Apple's corporate stance. If you believe Flash on an open platform will win out in the end, then Android is your area of concern going forward. But you're going to be working in the fringes until Android (or another platform supportive of Flash) takes over.
There's a way onto all devices right now: HTML, JavaScript, and CSS. Apple seems to be warmer towards cross platform systems built on HTML, JavaScript, and CSS if I absolutely *need* to go native with an app. The need for native mobile are few and far between. I don't see how we can go wrong in the long term by aligning our skills with the toolbox of the mobile web.
Deep down inside, I hope that some open platform (be it Android or something else) that supports flash and is essentially community-driven wins in the end, because I've spent some time getting up to speed with Flex. I also hope to see a lot of the common concerns people have about Flash/Flex addressed, improving the platform.
But the current state of things is what it is... And anything I develop targeting mobile will definitely be HTML(5), CSS, and JavaScript; despite any predilection I have for Flash.
What I'm angry at is immaturity, lies (probably bold-faced), and intentional skewing of the truth to appear to favor something it doesn't. To be sure, I'm voting with my feet and my money (taking my business elsewhere at the first convenience); I just happen to also be vocalizing exactly why (this blog post).