A rare and unexpected open letter from Steve Jobs was published today on apple.com outlining (at great length) why Apple refuses to allow the Flash player and Flash-developed apps onto the iPhone and iPad. After reading the letter, I decided to share a few of my thoughts and ask for yours.
My critical eye first had a problem with this sentence at the beginning of the letter: "Adobe claims that we are a closed system, and that Flash is open, but in fact the opposite is true. --Steve Jobs" I wouldn't say the opposite is true. I'd say that both Flash and the iPhone are largely proprietary platforms. Once again, Jobs is trying to change this into a debate about open standards, which has nothing to do with the real issue here - choice. If HTML5 and other web languages meet all of a developer's needs, then they should definitely use it if they know how.
If a team of developers and designers know how to use the Flash platform really well, and if they have requirements that web standards can't meet, then they should use Flash. There doesn't have to be a competition between web standards and Flash (but if you want one). People have a choice between Flash or web languages, Adobe doesn't force you to choose Flash. For a lot of businesses, Flash is their best option. .NET developers can still take a C# app they made in Visual Studio (proprietary) and port it to the iPhone using MonoTouch (hasn't been banned yet), why not let people use their Flash skills?
Jobs does make a good point that iPhone and iPad users can see a lot more video than Adobe leads us to believe. The plugin has caused some problems over the years, but most browsers are fixing a lot of its problems. Chrome, Safari, and Firefox have developed a feature that isolates plugin crashes to a single tab (no need to restart the browser). Jobs' comment about Flash being the number one reason why Macs crash might be a problem caused by Apple themselves. Flash doesn't run well on Mac OS X because Apple doesn't let it access APIs that would allow hardware acceleration -although Apple is secretly changing this behind the scenes.
Jobs also seems to be basing a lot of his technical arguments against Flash on older and current Flash player technology, but he should know that Flash 10.1 is going to be much different. It will be optimized for mobile devices and will support multitouch. Which of his complaints aren't addressed in Flash 10.1? We'll have to wait and see how it performs when it ships on phones this year. We do know that it will require some of the latest hardware.
The fact still remains that Flash apps converted to Objective-C can run on the iPhone, and there have been numerous instances where this is proven. Do those apps work well? Apparently they worked well enough that Adobe got over 100 of them approved and into the App Store. Jobs however, claims 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." Developers build apps with third-party layers all the time, and to use a blanket statement and say that all applications developed with an intermediary layer are "sub-standard" is short-sighted. The apps created by the Flash CS5 compiler are not really Flash apps anymore - they are Objective-C apps, and they were good enough to get into the App Store.
Just to clarify, there is a distinction between not supporting the Flash Player and not supporting applications originally developed in Flash and compiled into the iPhone format. I don't know enough to argue against all of the claims Jobs makes against the Flash Player. Security is a big concern, and it's understandable that Apple wouldn't want to deal with the unique risks associated with Flash Player. It's just hard to believe that Objective-C apps originally designed in Flash could ruin Apple's holy grail. This is the only argument that might hold water:
"If developers grow dependent on third party development libraries and tools, they can only take advantage of platform enhancements if and when the third party chooses to adopt the new features. We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers." --Steve Jobs
So if we imagine a future where Apple allows the transformed Flash apps onto the iPhone/iPad, and then we imagine that all of the developers currently writing apps in Objective-C start developing in Flash instead - then yes, Apple has a valid concern. If nearly every developer for the iPhone started developing in Flash, then Apple would be at the mercy of Adobe. Would that actually happen? It's hard for me to believe.
I think this has more to do with the money Apple makes in training developers to work with the only tools that they can use for iPhone development. It sucks for developers (except web language developers), but most of the non-developer world doesn't understand or care about this policy. They just like iPhones, and developers have to go where the money is, and every time a person buys an iPhone, it is a vote for Apple's system.
If the iPhone does continue to be the most lucrative mobile platform, I see a future where Objective-C is the only language that matters in mobile development besides web languages. The Web as a platform would have to improve significantly for any interoperable development to be possible.
What did you think about Jobs' arguments?