Steve Jobs’ Thoughts on Flash
Besides the fact that Flash is closed and proprietary, has major technical drawbacks, and doesn’t support touch based devices, there is an even more important reason we do not allow Flash on iPhones, iPods and iPads. We have discussed the downsides of using Flash to play video and interactive content from websites, but Adobe also wants developers to adopt Flash to create apps that run on our mobile devices.
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. 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.
This becomes even worse if the third party is supplying a cross platform development tool. The third party may not adopt enhancements from one platform unless they are available on all of their supported platforms. Hence developers only have access to the lowest common denominator set of features. Again, we cannot accept an outcome where developers are blocked from using our innovations and enhancements because they are not available on our competitor’s platforms.
Flash is a cross platform development tool. It is not Adobe’s goal to help developers write the best iPhone, iPod and iPad apps. It is their goal to help developers write cross platform apps. And Adobe has been painfully slow to adopt enhancements to Apple’s platforms. For example, although Mac OS X has been shipping for almost 10 years now, Adobe just adopted it fully (Cocoa) two weeks ago when they shipped CS5. Adobe was the last major third party developer to fully adopt Mac OS X.
This cuts to the core of not only why Flash won't be a permitted dev tool for the iPhone OS, but also why tools such as MonoTouch shouldn't be allowed either.
Don’t listen to Le Corbusier—or Jakob Nielsen : Cheerful
Cheerful software, above all, honors the truth about humanity:
Humans are not rational beings.
A human is a walking sack of squishy meat and liquids, awash in chemicals
This is a concept that I've found myself subscribing to more and more lately. The point is developers and even a lot of designers are so focused on what can be measured quantitatively and prescribed in a recipe-like set of standards, they forget that they're supposed to be designing their interfaces for humans, not spec-sheets and overly-analytical requirements documents. Trying to rationalize the inherently irrational will not only frustrate ourselves, but the humans that are our users.
Follow the link above for the full message.
After I shared the link with some peers, I got a terse response, "Form follows function." However, the near religious following of that mantra is why we have so many highly "functional" websites with no soul. They're just data and link dumps that fail to make any positive emotional connection with the user.
Another Reasoned Take On the New iPhone Developer Rules
But the reason isn’t technical. It’s partly business (Apple doesn’t want another company to control any important part of the iPhone platform), but it’s also in no small part grounded in aesthetics and the progress of the platform. Apple wants developers to do things the iPhone and iPad Way because they believe it will result in a better user experience and better designed apps. That’s an aesthetic, design-centered argument about how touch apps should be done. Apple has created tools customized to the iPhone and iPad; hell, they built a whole new touch-based operating system. They created a whole set of user interface metaphors that are supposed to be standard and system-wide, and they want developers to do things the new way not because Apple just loves power, but because they believe it’s necessary to force developers to think about the new world of touch-based computing correctly. All of this in service of giving users who are taking their first steps into touch-based computing a great experience.
...
Developers who want to write software for the iPhone have to write iPhone-like software. To do otherwise will hinder the progress of the platform.
I would be surprised if many of the people who want to use the cross-platform frameworks even read the iPhone Human Interface Guidelines (http://developer.apple.com/iphone/library/documentation/UserExperience/Concep.... This focus on a standardized user experience is alien to people accustomed to developing for the web, Flash, or even Windows. They don't understand it, it frustrates them, and they end up screaming "freedom" or "innovation."
Rarely is doing it right easy or cheap. Suck it up.
Too Many iPhone “Developers”
Yesterday, I came across this gem on Daring Fireball where John Gruber discusses the change in the rules for developers:
My reading of this new language is that cross-compilers, such as theFlash-to-iPhone compiler in Adobe’s upcoming Flash Professional CS5 release, are prohibited. This also bans apps compiled using MonoTouch — a tool that compiles C# and .NET apps to the iPhone. It’s unclear what this means for tools like Titanium and PhoneGap, which let developers write JavaScript code that runs in WebKit inside a native iPhone app wrapper. They might be OK. This tweet from the PhoneGap Twitter accountsuggests they’re not worried. The folks at Appcelerator realize, though, that they might be out of bounds with Titanium. Ansca’s Corona SDK, which lets you write iPhone apps using Lua, strikes me as out of bounds.
Now, anyone who knows me is probably thinking I'm loving this because I'm some sort of mindless Apple fanboi. If you're one of these people, I'm sorry to disappoint you. This makes me happy because this rights a wrong.
With the advent of the iPhone, you all of a sudden had a great deal of people, even those who don't own a Mac adopting this hand-held computer from Apple. This is a good thing. Competition is good. No one company should own any market, whether it's RIM, Google, Microsoft, or Apple.
Where it went right and wrong at the same time was the massive influx of developers and "developers." Having 180,000 applications is a good thing for a platform. However, with the good comes the bad and you don't even have to look far to find the tripe. Just look at all the fart and flashlight apps that landed in the App Store.
Now, when I put developers in quotes, I'm calling out the script-kiddie equivalents in the developer community that have no skills and/or are unwilling to obtain the required skills to develop quality applications. To see these "developers" and their rage in their full "glory," check out this fine example from TechCrunch.
Developers have nothing to lose from the recent changes to Apple's Developer License Agreement. It's the "developers" that have everything to lose. Sadly, though, it appears as though many "developers" are still safe...for now. Under the new rules, you have a few options for developing your iPhone OS apps: Objective-C, C, and C++. As I understand it, even if you're developing for the latter two, there's no avoiding Objective-C if you utilize iPhone OS UI elements. If you try to "develop" an iPhone app using Flash CS5, MonoTouch, or some of the other frameworks that allow a "developer" to create an app without using the iPhone SDK, you're out of luck.
The people most affected by this are those Microsoft-centric developers who are upset that they need a Mac to develop for the iPhone. No complaints, however, about needing Windows to develop for Windows. If you don't test your app in the operating environment on which it would run, you're not a developer. You're a hack. Some may still cry for the iPhone/iPad emulator for Windows, but consider this: the Mac runs OS X. The iPhone OS is OS X. If a "developer" still doesn't understand this important point, then they need to give up their dream of being an honest to goodness developer.
Now, the loophole that lets some "developers" stay in the game is that it still allows "JavaScript as executed by the iPhone OS WebKit engine." That's too general. What this does is allow drek like PhoneGap to produce "apps." The people who use this tool are lazy "developers" who don't want to put the time and effort into building great applications for the mobile platforms, those with no sense whatsoever about user experience, and just generally dishonest people.
What PhoneGap does is basically wraps a web application in WebKit and packages it as though it's a native application. First of all, this is completely and utterly dishonest. When people download an app, they are expecting an app that was built FOR their device and not some repackaged web site. It's fundamentally dishonest, no matter how the "developer" tortures logic or the English language to justify their deceit. These "developers" are merely hacks and haters seeking to reap the rewards from the gold mine without doing any of the mining themselves while bragging to anyone who would listen about how great a miner they are.
PhoneGap and tools like it let "developers" (again, the white-hat equivalent of script-kiddies) who know nothing more than basic web technologies to pretend they can develop "desktop" applications. John Gruber hinted indirectly at the danger this poses to not just Apple, but in my opinion the "developers" and iPhone consumers as well.
I don’t think Apple even dreams of a Windows-like share of the mobile market. Microsoft’s mantra was (and remains) “Windows everywhere”. Apple doesn’t want everywhere, they just want everywhere good. The idea though, is to establish the Cocoa Touch APIs and the App Store as a de facto standard for mobile apps — huge share of both developers and users.
So what Apple does not want is for some other company to establish a de facto standard software platform on top of Cocoa Touch. Not Adobe’s Flash. Not .NET (through MonoTouch). If that were to happen, there’s no lock-in advantage. If, say, a mobile Flash software platform — which encompassed multiple lower-level platforms, running on iPhone, Android, Windows Phone 7, and BlackBerry — were established, that app market would not give people a reason to prefer the iPhone.
And, obviously, such a meta-platform would be out of Apple’s control. Consider a world where some other company’s cross-platform toolkit proved wildly popular. Then Apple releases major new features to iPhone OS, and that other company’s toolkit is slow to adopt them. At that point, it’s the other company that controls when third-party apps can make use of these features.
So from Apple’s perspective, changing the iPhone Developer Program License Agreement to prohibit the use of things like Flash CS5 and MonoTouch to create iPhone apps makes complete sense. I’m not saying you have to like this. I’m not arguing that it’s anything other than ruthless competitiveness. I’m not arguing (up to this point) that it benefits anyone other than Apple itself. I’m just arguing that it makes sense from Apple’s perspective — and it was Apple’s decision to make.
There's the rub, basically. If a "developer" uses a tool like PhoneGap and Apple updates the OS, adding or tweaking APIs, there's no guarantee whether or when that "developer" can make use of these changes in their "app." This hurts not only the "developers," but also the consumers who miss out on using an app that takes advantage of these features. If you take short cuts to try to cheat the system, you or your customers will get burned. Dishonesty and laziness, in the end, does not pay.
Finally, the "developers" who use any of these tools to avoid learning Objective C or any of the other permitted languages are arguably the reason why the applications on Windows tend to be rubbish from a design and user experience point of view. The reason why there appears to be an utter lack of UI standards on Windows is that there's no enforcement. Even Microsoft rarely plays by its own rules. On the Mac side of the fence, even though Apple doesn't enforce the UI guidelines on third-party applications, the Macintosh developer community has been very good at policing itself. The userbase has also been quite effective at rewarding developers that create products that are "Mac-like." Care is put into the user experience to ensure that the user is using an application that looks, feels, and behaves like it belongs on that computer.
It's this culture of do whatever the damn hell you want and screw the UI guidelines that threatens the iPhone OS platform with this huge influx of "developers." It's also why these "developers" are so frustrated. Apple cares. They give a damn about the user experience. They know that people pay what they pay for Apple products because of the user experience. People are buying the iPad because of what it offers in the way of user experience. They're not targeting the crowd that shops based on a laundry list of tech specs. They're targeting people who care about ease of use and fit & finish and are willing to pay a small premium for it. To quote John Gruber, "Apple doesn’t want everywhere, they just want everywhere good."




