Skip to main content

Flash Is a Right

Posted by opinali on May 8, 2010 at 12:31 PM PDT

Ian Bogost's recent article Flash is Not a Right highlights some new aspects of the debate about Apple's iPhoneOS development restrictions. I have a different opinion.

I understand Ian's pain as a teacher. Programmers who aren't curious, don't like to explore varied languages and paradigms, are doomed to rank-and-file roles. But this is secondary. The purpose of computing is to serve the needs of end users. But for this to happen, computing has to be a healthy industry: one that allows fair competition, rewards efficiency and quality - these are core values of our economic regime, and the reason behind many consumer protection laws.

Granted, not all platforms are like the PC; many require you to pay a developer fee, sign NDAs, adopt DRM technologies, abide to the vendor's certification and distribution channels, etc. These restrictions have been around since the dawn of computing, and developers generally don't have issues with reasonable terms. But I have no knowledge of a previous computing platform that would enforce the kinds of non-reasonable restrictions that Apple wants to enforce now.

I'm not saying that Apple should help people to use their preferred tools. I'm not asking Apple to OEM-install Adobe Flash Player; it's their product and they deal the deck. But if that deck seems to have some deuces to me, I should be free to use my aces - as long as I put up with the effort and cost, and do it within the behavioral rules imposed by the platform (i.e., only install unprivileged userland code; follow standards of security, reliability, UI guidelines, etc.).

Blocking high-level tools opens a huge can of worms that nobody is talking about: it creates artificial, unfair disadvantage for smaller developers. It's a plutocratic move, that favors huge companies and screws with small shops and indie developers. High-level programming languages and frameworks that create a layer over the raw platform are popular for several reasons. Portability is not the only reason; productivity is another huge reason too and it's even more important - Steve Jobs's Thoughts on Flash smartly avoids this issue. Multiplatform was never Flash's primary selling point; its popularity boomed even when the Mac was down (so Windows was the single desktop to matter). The major reason for Flash's adoption was, by far, features and productivity. Pure web browsers are now catching up with the features, but Flash still benefits from a powerful suite of design tools; simple validation & deployment; and trivial hosting.

Tools like Flash bring power and productivity for the masses. Apple can stop Flash; but they cannot stop all similar tools. Take any huge software company (e.g. Electronic Arts - a big iPhone game provider), and they have their own high-level platform that they rely on: frameworks, design tools, code generators. Even embedded languages and compilers like Lua. (The latter violates even the previous iPhoneOS terms, but Apple pretends to not see it.) They often use game engines too - very big components that actually become the real platform; most "application code" is written to the game engine's API, not to native APIs. Apple's new terms would certainly forbid that. Even if Apple wanted, they couldn't block the likes of EA to use high-level tools, because these may be in-house and not public, and cannot be detected without expensive reverse-engineering of the binaries.

Ian Bogost mentions game engines in a purely negative way - "same plain-vanilla experience (...) lowest-common denominator". Jobs complained that cross-platform tools may not provide full access to system. This is not necessarily true. MonoTouch enables full access to the OS APIs, and it's updated to new iPhoneOS SDKs within days. Others may just need extra work, e.g. a JVM supporting JNI. There's also "right tool for the job" - not all applications need every iPhoneOS feature; if Flash is good enough for your app, why not use it? And when it is not, it's your choice to either create a mediocre product, or use another tool. (If you make the first choice, Apple might reject your app because it's Trash - not because it's Flash. But they probably won't reject it for the former reason, as the absolute majority of mediocre apps in the AppStore shows; and that' fine too, we should just let the free market push bad products to the bottom of the heap.)

Some of the greatest games of all time were built on a reusable, portable game engine (Maniac Mansion anyone?). Yes, the most innovative games are often those that introduce a new engine - or at least a major revision (e.g., The Day of the Tentacle for SCUMM v4). But this happens mostly because there are only few opportunities for breakthrough innovations: a new smart algorithm or game concept; next-gen CPU or GPU - some lucky game will be first, and will be famous mostly because it was first. Also, games that use a common engine often step outside it, or customize the engine, for incremental innovation. The engine provides the 80% of common features for some game category and platform generation, stuff that's just stupid to rewrite for each title. While ancient games would access the video hardware directly, all current games will instead rely on a thick stack, from GPU microcode to low-level drivers to relatively high-level APIs like D3D and OpenGL. Yet Apple is not telling people to skip these layers and program the iPhone's PowerVR hardware directly. This illustrates the idiocy of opposing higher-level stacks. Multi-layer architectures and increasing abstraction are among the core foundations of Computer Science. Steve Jobs is basically asking us to ignore some of the most important best-practices of our profession, and this is Wrong. (Of course he wouldn't know better - Jobs has never written a "10 GOTO 10" program in his life - that's why I'm being a bit scholar here, just in case he reads me.)

(Just wrapping up on games, don't forget design and content; these play a major role to provide a unique experience. The majority of all good games don't have innovative coding, and don't milk the platform's utmost capacity. Tetris had amateur graphics even for 1984. To paraphrase Bill Clinton: It's the creativity, stupid.)

Apple's contempt for developers is way too blatant to not deserve revolt. Apple is a successful company because they have a strong, competent focus on end-users; this can only be lauded. But they have crossed the line when they handle developers with fascist manners - authoritarianism, interventionism, indoctrination. For Apple, developers are servile sharecroppers who should be grateful for profiting from the landlord's properties. Apple is ruling over factors that have no objective impact on application quality, such as programming language choice. They are manipulating their developer base, for their exclusive benefit - pushing Apple's agenda against Adobe and other competitors. This is ultimately dangerous even for Apple, that's losing its famed customer focus; end-users will not benefit from this business.

Programming to any platform in Flash - or C#, Java, whatever you like - is your right.


Do not underestimate Apple...

Beside the very troubled history between Apple and Adobe and several other political reasonings we do not know about, have you ever considered that Apple has very good technical reasons to block Flash.
They are not plain stupid I think.
Flash (and other rich web technologies) do not make much sense in near future. See what Apple and Google do with HTML5. By the way even Microsoft promotes the HTML5 way in their future Internet Explorer. This is good for us (mainly serverside) Java programmers by the way. Graphics will be done using WebGL and appropriate JavaScript frameworks. Use for example Safari (won't work in Firefox yet, don't know about Chrome) to look at the examples at:
I for my part, as a long time opponent of the proprietary Flash, already look regularly YouTube using HTML5 with Safari. And I really hope that the open HTML5 standard will catch on. Once all main browsers have a solid HTML5 implementation the battle is battered. This is good for the openness of the web. Remember, WebKit, the HTML engine Apple (and Android by the way) uses is open source. Someone at Sun/Oracle should get his act together and finally integrate WebKit in Swing via JWebPane.
Why is everyone suddenly for Flash, its a thing of the past? Do you really want to go on to buy exclusively the Adobe tools and fight for a closed, clumsy technology?
You can think about Steve Jobs what you want, but concerning Flash he is definitively right.

You are totally missing the point

I'm not a Flash enthusiast; in fact i've never written a "HelloWorld"-class Flash app. From my past posts you will notice that I have a generally negative opinion about Flash (most remarkably due to the AS3 language - it's dynamic-typed and JavaScript-like so that's enough for me to not like it). In fact I would be pretty happy if Flash disappeared next morning, that would leave more opportunity for alternatives I prefer such as JavaFX.

But I am not standing behind Flash or Adobe, but rather, against Apple's restrictions that have nothing to do with technical aspects of Flash or their pretentious love for open web standards. On the technical side, remember that what Apple is blocking is not the Flash browser plugin - this is not supported in mobile Safari, it's not the reason why people oppose the new terms. What Apple is declaring illegal, is Adobe's new CS5 "Packager for iPhone" tool that is able to export Flash AIR apps to a native iPhoneOS application that would be installed in a traditional way though the AppStore. Such apps would be certified by the standard AppStore validation, so any technical issue could mean its rejection (just like for other apps built with Xcode/Obj-C or other tools). The packaged apps are pure native (compiled) code, not using any interpretation - so they are compliant with the current SDK/AppStore terms. They run standalone, not inside Safari, which avoids most critcism to Flash-inside-browser (like security bugs, or abusive ads that make sites slow to load and heavyweight). Apple has no technical ground to oppose Adobe's new solution. Steve Jobs cites other issues, like high resource usage / bad battery life, but that's IMHO mostly a problem in the OSX Flash port and it's a problem mostly caused by Apple itself, that until recently didn't provide documented APIs that Flash needed for video acceleration (now tht they did, Adobe is planning a Flash update that will have that acceleration - it's already in beta). Besides that, Flash also failed to use GPU acceleration for its rendering on any platform, but Flash 10.1 fixes that. I don't know anything about the iPhoneOS Flash port's CPU/battery story, but that's besides the point.

Apple's actions rule illegal not only the Flash Packager, but also (potentially) many other languages, frameworks, VMs, code generation tools, etc. some of which are provably absent of any kind of disadvantage compared to the official Xcode/Obj-C SDK. Remarkably MonoTouch, that is just a C# compiler that targets the iPhoneOS. It doesn't impose its own libraries - the library is a straight binding of the entire SDK native libs. It doesn't impose VM overheads like interpretation or JIT compilation - it's a ahead-of-time native code generator, that produces a standard native binary. The only difference is that you get to use a modern, safe, powerful language like C#, instead of the pig-with-lipstick that is Objective-C. Still this is very clearly forbidden by the new SDK terms - although it's not impossible that Apple may allow it, but that would be an arbitrary exemption.

Finally, don't be so naive to think that Apple's new rules will do much to favor the open web platform (HTML5). These terms have no impact on web applications, they are specific to the iPhoneOS's native applications, which are currently written with Apple's full-proprietary SDK (programming language and APIs) and deployed through Apple's AppStore, likewise a non-open, monopolistic  distribution channel. In fact, if somebody offers a tool that allow you to write an app with HTML5 technology and package it as a native iPhoneOS binary, Apple's terms will make this illegal. Apple invests in projects like WebKit because on the web, openness favors Apple as they are a very minor player. They day Apple becomes a major web player (e.g. like Google or even like Yahoo!), they won't even blink to start pushing proprietary web stuff - they would teach even Microsoft how to play that game.

Why are you so angry?

Was your App rejected by the App-Store?
1. I really don't think that the bad Flash implementation on OSX is the fault of Apple. Flash on Windows is bad too in my observations and Flash on Linux... oh, maybe we could agree that HTML5 would be better.
2. The overwhelming, main problem of smartphones is the limited battery life. Be it an Android, Apple-smartphone or whatever. And this will be the major parameter to optimize in foreseeable future. And I totally buy the notion that Flash is burning CPU cycles like crazy. So they do not want it, because the consumer would blame the manufacturer of the phone for the short battery life
3. The Apple smartphone is a closed device. They never said something different. This has nothing in common with your PC. More with your XBox, PS2, Nintendo. So why are you not cursing Microsoft because their XBox is closed and you have no Flash on it?
4. Apple is build on fancy, consistent GUIs. Thats their most important point. Therefore it is not that hard to understand, that they don't want to become dependent on another company on this point. Especially not Adobe, after all Adobe did to them when they tried to introduce OSX. To program the Carbon library costs them many, many years of innovation.
5. When you look at the hundreds of thousands of applications for the Apple devices you do not get the impression that they have not enough developers. Maybe they do not need those scripting kiddies clicking together a Flash flop that has to be reviewed then. Maybe they prefer dedicated developers that are more likely to produce apps with some quality.
6. I for my part see Objective-C as relatively well designed. Its close to the metal. I use it from time to time beside Java. The only big disadvantage of Objective-C in my opinion are the missing diverse and rich libraries that are available for Java. But the Cocoa Framework is very good because it is very consistent.

Perhaps, but check yourself in the mirror (anti-Flash angry)

I've never had an AppStore rejection, because I never wrote an iPhoneOS application, and I'm not needing or planning to do it any time soon. But I have played a bit with the SDK (at work - I don't have a Mac at home), just enough to be sure I don't like it, at least not with Apple's mandated toolkit.

1. Flash on Windows is certainly much better than on Mac. In fact I've only started to use a Flash blocker very recently, and that was only due to the annoyance of Flash ads, not because of CPU usage or crashes or anything else. YMMV, debating this is just wasting time unless we do something serious like performance benchmarking of Flash implementations for each platform.

2. Did you actually see Flash running on iPhoneOS, or are you just pre-judging it? Once again: if that port of Flash sucks and it creates applications that perform poorly, Apple could just reject these apps. I suppose they put all apps under some standard test of efficiency, e.g. to detect unreasonably CPU/power usage while idle or when performing tasks that seem to be simple. OTOH, Apple can't just reject any power-hungry app because that would rule illegal any app that maxes out the platform, e.g. a top-notch 3D action game. Finally, Flash 10.1 is just about to ship preinstalled in Android (and that's the conventional, Flash-inside-browser thing), so it's certainly good enough for Google.

3. Have you actually RTFA? I can program Xbox applications with alternative languages, frameworks etc. if I want. I (and half the internet) am complaining of a very specific restriction, one that's not reasonably justified by "it's a closed device".

4. You are just parroting Apple's spin. Adobe lagged many years to move to newer OSX APIs, simply because they had enormous legacy of existing code and this conversion would be difficult and expensive. Apple itself lagged way too much to rewrite even their core, OS-included stuff (Quicktime, Safari, Finder etc.) to the modern, 64-bit, Cocoa APIs; I think the transition was only complete in Snow Leopard. Apple's Final Cut is still a 32bit Carbon app, what do you say about that as hypocrisy?

5. Yeah, whatever. I didn't claim they don't have enough developers or apps, this is irrelevant to the discussion.

6. To each his own. If you like it, I'm happy for you. The whole point is freedom of choice, remarkably on issues that have no objective impact on app quality. I hope you won't ever learn some language and/or framework that you conclude to be much better, because Apple won't let you use it and that would suck.

Do you get a photoshop for free from Adobe?

1. So Apple should beg Adobe to provide a proprietary tool that runs well enough on their stylish device? You would, as Steve Jobs, lay this responsibility in the hands of a company that is not your best friend? No. I am no fan of S. Jobs but this I can understand very much. Especially when there is an emerging open standard HTML5
2. Is there any Flash version on smartphones that is equivalent to the PC version? Last time I checked, no. The smartphone version of Flash can not play most of the content on the internet. So what is the effect to have this?
3. I really never heard that you can legally program XBox with anything other than the Microsoft XNA tools? How do you do this? Or take PS2 as an example of a closed device or any cell phone that you have to program in a certain JavaME version not anything else or.... Or try to program a Plugin for Adobe Illustrator. Also a closed system. You have to use their SDK for that. Have you ever complained about that? Beside: There is more flimflam to read on the internet than good information. Its really no serious argument that half of the internet says something.
4. You are parroting Adobes spin. Adobe has their own cross platform GUI Library they use. Only this lib had to be ported. No, Microsoft and Adobe had Apple by their balls. Now it seems to be time for a revenge. Apple lagged so much in many fields because they needed huge resources to port the old Mac APIs to the UNIX system. Or what do you expect more than a thousand high class system developers have done all the time? Admired Steve Jobs?
5. The iDevices are no computers. They are not remotely comparable to PCs. They are tools. You should not implement an algorithm on them, this should be done on your PC. You should telephone with them or look for the next bank, play a small game, or ... but not program. So this is very relevant for the discussion. There are far more than enough apps for those devices. Why then should you need to be able to program your cell phone in Flash?
6. Apple provides a SDK for their iDevices. If I would like to program those devices I would have to use their SDK, yes. But I do not have to program an iDevice. I can program my computer happily in Java and use the iDevice to call a friend or play a game. Apple is not even market leader in smartphones. So there is not even a monopoly problem as with Microsoft and PCs

"Apple is not even market

"Apple is not even market leader in smartphones."

I won't add anything to Osvaldo's points, that I largely agree on. I'd only point out - pardon me, I don't want to be rude, but frank - that I'm sick and bored of hearing that "Apple is not even market leader" (a refrain that is being repeated, when it's convenient, by many Apple advocates). Apple is the second manufacturer in the USA and the leading game is between RIM, Apple and Android. I think that Android could kick Apple in the ass, but the game is open and, in any case, when we say Android we say multiple vendors; so I doubt any single Android-endorsing manufacturer will surpass Apple, even in the case Android wins.

The IDC world-wide data Apple is referring to in their announcements say Apple is third, close to RIM which is second.

So, please stop with that nonsense about market shares.

(No title-answer to your insane title)

1. WTF? Adobe is not even trying ot install anything on the device; Adobe is providing a tool for developers who want to build iPhone software. Apple has no reason to interfere in that. Your ref to HTML5 is off-topic here.

2. Again, do you actually read stuff before replying? Yes current mobile Flash is very limited (I think it's Flash 7 feature-wise), the first "full" thing is the Flash 10.1 that will only start shipping next month. (I suppose the CS5 Flash Export is also full-featured, but that one is not meant to play any internet content so that's irrelevant.)

3. Those platforms don't forbid use of third-party languages/frameworks/tools. For example JavaME: you can write an app that doesn't use the official APIs directly (it can use a higher-level API that wraps over LCDUI etc.), you acn even avoid the Java language (you can use many other langs that generate bytecode like Groovy, JRuby etc.). Of course these langs/frameworks will ultimately produce official binaries (bytecode) that invoke the official APIs (and not, say, bypass the VM and kernel and reach straight to the hardware) - but the same is true for all those forbidden iPhone tools. The Flash Packager, MonoTouch and all others, produce normal ARM/iPhone-compatible native code; their high-level runtimes and libraries (if any) are implemented with Obj-C code that ultimately delegates all work to the official SDK APIs, it's just a layer on top of that. In fact, some of these tools are actually source-to-source translators that produce Objective-C code which final compilation/linking step must be performed with Xcode and the Apple SDK; even in that case Apple is not allowing them.

4. You show huge ignorance about the nature, size and complexity of Adobe's apps. Saying that a monster suite like CS5 is built on top of some small cross-platform library that's easy to port is sheer ridiculous. (BTW most of these apps were written originally for the Mac, so their very design/architecture should be more inclined to the Mac up to this day.) Second, you admit your total bias: if Apple lags to port their own apps to their own updated OS (a port that's easier for Apple than for anybody - they have early internal access to all new stuff, the engineers who best know the system etc.), it's OK because poor Apple has no resources to waste. But if Adobe lags, it's just because Adobe is evil. You are failing pretty bad even as a fanboi/troll.

5, 6. You are making no sense at all. They are computing devices just like my PC, cellphone, TV, refrigerator, anything with a CPU. Apple did invite the larger software community to write stuff for their platform, under terms that were originally much less strict. Adobe's CS5 Flash packager was written abiding to the current SDK terms, and Apple told the world that the new terms would allow such tool a few days before CS5's release (so Adobe had already sinked serious money to write it). Many of the developers who are now complaining, have also made an investment (buying Mac and iPhone hardware; learning new SDK etc.) and now Apple changes the rules of the game in a way that can only negatively impact many of these developers, and cause the problems discussed in my blog (unfair competition with bigger ISVs) even for devs who don't see a problem. I didn't mention any monopoly, this is irrelevant.

One word: Android

I completely agree with everything you said. But the answer is simple: Android. Developers make or break a platform, and the openness of Android will attract more and more developers, especially Indies, to the camp of Apple's competition. Steve Jobs is repeating all the mistakes he made with the Mac platform - it seems that he is resistant to learning experiences.