Home > Posts in English > Section 3.3.1 and Steve Jobs’ “Thoughts on Flash”

Section 3.3.1 and Steve Jobs’ “Thoughts on Flash”

No one that follows tech-news can possibly have missed that Apple have whipped up a shitstorm of sorts with it’s changes in Section 3.3.1 of the iPhone Developer Program License Agreement resulting in the prohibition of the use of third-party tools for developing iPhone apps. This is what Section 3.3.1 used to look like:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.

And this is what Section 3.3.1 looks like now:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

Clearly this is a move that Apple has made in order to even further increase their control and hold over the development done for their mobile platform and shut out any and all apps that are not developed in a manner blessed by Apple. This includes 3D-games developed with Unity3D, all apps that could be built with Flash CS5 and many more.

As a developer I take great offense to this and I consider it to be a real dick-move by Apple. Further, I believe it to be a move that clearly demonstrates that the people making the decisions have completely lost any understanding of what it is to be a software developer and how we developers think and operate.

Some people seem to believe that it’s a good thing that all iPhone OS development is being streamlined into a single set of tools all under the control of the platform-owner (i.e. Apple). Anyone believing this doesn’t get it either and is clearly not a developer themselves. Let me explain.

Developers don’t like being told exactly how to operate and what roads to travel on when on the path to solving a problem or task. There’s always multiple solutions to any given software development issue. There is no such thing as the ultimate tool-set or the IDE to end all IDEs. This is why we like having the freedom to chose what tools to use and how to use them to build software. By putting restrictions on what tools are “allowed” for iPhone OS development Apple is pulling a move with multiple bad consequences.

Firstly, it pisses developers off. Like I said, we don’t like being told how to work and think. In fact, there’s no group of creative people that enjoy that. Can you imagine if MOMA said to all artists that if you want your art displayed in our facilities you have to buy all your supplies in a specific store and hold your brush/chisel/whatever in a specific way? Same thing here. And yes, I’m saying that software development in many ways is an artform. If I want to use a third-party set of tools or some other exotic methods not previously imagined by Apple in order to create an awesome iPhone-app I should be able to do that. If the way my brain works makes this, to me, the most natural path of development, why restrict me and forbid me to do it? It’s ludicrous and any real developer will tell you the same thing.

Sure, I can get behind the idea that Apple want to set up some rules for what apps are allowed into their AppStore (even if the AppStore acceptance process is utterly broken…). Telling developers what to build is sort of OK, but telling them how to build is definitely not OK. It’s bullshit, plain and simple.

Secondly, this dick-move of Apples is ruining business for the companies/people developing these third-party tools as well. Sure, Apple has no responsibility to ensure the business of any other company but this is none the less a really bad side-effect of the changes to Section 3.3.1. People may lose their jobs and companies may possibly go out of business thanks to a really moronic and completely unnecessary change in the iPhone Developer Program License Agreement

The main target here, however a company not very likely to go out of business, is obviously Adobe and their product Flash which currently dominates when it comes to video and other multimedia content on the web. The changes to Section 3.3.1 followed swiftly after Adobe announced that the next version of Adobe Creative Suite would include tools that enabled Flash-developers to build Flash-apps that would run on the iPhone and iPad. That means that developers could use CS5 to create apps that were truly multi-platform and with very little hassle. They wouldn’t have to maintain different simultaneous versions for multiple devices, just one version that they could then deploy on iPhone OS, Android or whatever OS they wanted. One version of the app but multiple markets for it to exist in, which consequently means more business for the developers and, once again, all without having to deal with the mess of having multiple versions of the code. Now imagine how happy that would’ve made all of the world’s Flash-developers! Naturally, Apple couldn’t have that.

So that’s the third reason Section 3.3.1 bites, it causes unnecessary problems for developers that don’t want their apps to be exclusive to the iPhone OS, and what developer really wants that? Even if Apple may have the goal that 100% of the smartphones of the world are iPhones, it is never going to be a reality. Naturally software developers want a shot at pushing their apps and consequently make money in more markets than one, and, if at all possible, with minimal hassle. Clearly that’s not something that Apple wants.

What Apple wants for all the apps running on the iPhone OS is for them to be exclusive for their platform. They don’t want multi-platform development anywhere near their products and this was made even more clear by the open letter from Steve Jobs entitled “Thoughts on Flash” that was published on Apples website a couple of days ago.

In his letter The Steve lists six reasons why Apple hates Flash and wants it to die rather than run on the iPhone OS. Some of these reasons are actually somewhat valid, however most of them are complete and utter hypocritical nonsense. Let’s run through them quickly:

Reason one: Adobe Flash is 100% proprietary and Apple is a supporter of the “open web” having created WebKit and pushing HTML5, CSS, JavaScript and other open standards.
Hello pot, calling the kettle black much? This just makes me laugh. Apple is one of the most proprietary companies in the tech-industry. Their levels of secrecy and unwillingness to give away so much as an ounce of their secret sauces is legendary. Just because you’ve successfully pushed one open source project it doesn’t make you Richard M. Stallman. Get off your high horse. Flash is a well publicized standard and going by your own standards that should be good enough for you. Also, when Apple is pushing the very proprietary video standard H.264 as hard as they are (continue reading and you’ll see that they absolutely love H.264) they really shouldn’t be yapping about who is or isn’t being “open”.

Reason two: Adobe’s claim that Apple’s devices can’t deliver “the full web” since they don’t run Flash is caca because plenty of big websites have video in H.264 now and as for Flash-games there are loads of games on AppStore you can play instead.
There is some truth to this but it is still not valid in my opinion. Just because a long list of Apple-approved sites deliver video in H.264 instead of or as well as Flash it doesn’t mean every website does. It will still cause frustration when you run into that site with that video you wanna watch just have Flash - which is currently the dominant way to show video on the web. As for the games argument, it’s just laughable and shows that Steve isn’t a gamer himself. It’s like this: if I wanna play my game, I wanna play my game NOT another game. So if my game doesn’t run on the iPad it is no consolation at all that there are loads of other quality games available. I still can’t play the game that I wanted to play.

Reason three: Flash has lots of security flaws and the number one reason Macs crash.
I have no idea if the first claim is true or not so I’m not gonna argue against it. I’ve never had any of my Macs crash because of Flash but I’m not gonna argue the second claim either since I have no way to know what the truth is here. If Apple have statistics, which I assume they have, saying this, then it probably is true.

Reason four: Flash eats twice the battery life that H.264 with hardware acceleration does.
Again, whether this is true or not I don’t know but even if it is true I don’t think it’s a valid reason for shutting Flash out. Let the users themselves decide what to spend the juice of their batteries on. What’s next? Blocking games that are CPU-intense and thus eat “too much” battery. It’s just ridiculous. If customers want Flash, and they obviously do, let them have it even if it eats the batteries of their iPads and iPhones. Let people make their own choices.

Reason five: Flash was designed for PCs using mice, not for touch screens using fingers. You can’t “hover” or “rollover” on a touch screen.
This is true, but it is still an invalid reason simply because the controls of an app are up to the developer. It has nothing to do with the technology itself. Don’t you think Flash-developers targeting the iPhone would’ve thought of not to use controls that require “hovering”? Enough said.

Reason six: Apple knows from experience that all software developed using third-party tools suck and are inferior to software developed specifically for a particular device and/or operating system. Relying on third-party tools is also always a bad thing because then you’ll have to wait for the tool-developers to include new OS-features in their product and that can take a long time.
This part of Steve’s letter is so full of stupidity and claims that are in no way backed up by hard facts it’s laughable. What “experience”? Where are the statistics or surveys to prove this? Nowhere is where they are because it’s bullshit, plain and simple. It’s just a vague claim made like it’s the truth just because The Steve said so. Also, I find it amazing that Steve Jobs has taken it upon himself to save developers from using “bad tools”. I’ve said it several times already but I’ll say it one final time: Developers want freedom and choices! Let us decide for ourselves what tools we use and how we use them! We can take responsibility ourselves for our choices. We don’t need Steve Jobs to make them for us. Let us code and develop any way we want. Period.

So in closing all of this is just another scheme of Apple’s to lock people to their platforms attempting to create a sense of exclusiveness for their products in the process. The very same things they’ve in the past scolded Microsoft for. But what differs from previous ploys of theirs is that this is a tremendously nasty move that really benefits nobody, not even Apple themselves in my opinion. I think it is really sad and I don’t like the way Apple has been developing since releasing the iPhone - I think that’s where it all started to go downhill. I love Apple’s products - the hardware, OS X, iLife, all of that good stuff - but the company policies are pissing me off more often than not these days. Steve and his underlings need to step back and take a good look at themselves, the company’s past and the path their currently marching onwards on before it’s too late and Apple really becomes the new Microsoft or IBM. Nobody wants that, least of all me.

  1. Emmanuel
    May 1st, 2010 at 21:35 | #1

    I beg to differ.

    Flash is a security menace. If you have it installed, you cannot have missed the frequent security “fixes”. (Almost twice a week!)
    And flash is a battery drain. Flash is built as a highlevel interpreter. You KNOW what this means. Multiple layers of interpreters => poor performance!
    This is ofcourse unnoticed on a regular/laptop pc, but on a mobile device it spells TROUBLE.
    Ever wondered why adobe introduced “Flash lite” ? Because Flash sucked, battery that is…

    And no, I dont think Apple has made the wrong decision.
    Look at Java. Not even Google believes its good enough to use out of the box.
    Look at .NET. The only people not using MS Visual Studio are retards or individiuals with a anal set of mind (or not physically capable of using a bittorrent client).

    Apple owns their platform. They are not obliged to open it up so all kinds of dickwads are able to implement their own interpretation of what is and whats not. Again, look at Java and J2ME. Have you ever tried writing an application for J2ME? Probably not. J2ME is an “open” standard. Do you know how many different implementations there are? Not just one per phone manufacturer, there is atleast one per firmware version of each and every handset! Hows that for open?

    The AppStore and the community around apps were clearly not Apples intention from the start.
    If you would have bothered to look at the lengths Apple have gone to implement and push the open web standards, you would be amazed!
    Have a look at web applications. Apple have built a comprehensive, complete, SDK that allows you to build state of the art web applications that run locally on the phone. You can build high performance applications with only HTML and javascript, that run as a native application - with nothing but standard code! That is open.

    If Apple would have unleashed the open public on the internal SDK and skipped the App Store approval process. What would have happened? Besides shitloads of fart-apps, there would be viruses capable of sending themselves to others phones. Making calls to expensive pay-per-call hotlines etc. Ever heard of the Symbian platform and all the bluetooth viruses?

  2. May 1st, 2010 at 23:58 | #2

    @Emmanuel
    Aaaaand, queue the fanbois…

    All joking aside though, you’re entitled to your opinion but I still stand behind mine completely.

    Actually, I have completely missed “the frequent security fixes” and I’ve never had a problem. This may be simply because I don’t use an operating system that is inherently insecure (i.e. Windows) or I may just have been lucky if Flash really is such a “security menace”. In any case I never refuted this. There may or may not be loads of security flaws in Flash. If it is such a menace though I’m surprised I haven’t heard more about exploits and such enabled by Flash, especially since I read plenty of security- and general tech-news every single day.

    I didn’t say Flash doesn’t drain batteries either. I said to let the user choose if he wants his battery drained or not. Big difference.

    I still think Apple has made the wrong decision.
    Concerning Java, I don’t see what Google’s choice to write their own VM for Android has to do with anything. Java is Sun’s product and speaking from experience Java is a very capable platform that powers an enormous amount of business critical applications all over the world.
    And don’t even get me started on .Net. It is in my experience such a jumbled mess of a platform that only someone that is at least partially insane or simply brainwashed would choose to develop in it voluntarily.

    I never said Apple should open source the iPhone OS or anything to that effect (although I’m not against the idea at least on a theoretical level). My beef is the way restrictions are now being applied to its developers. I don’t give a damn about the actual licensing details of the platform itself.
    I do however completely agree with your statements about J2ME. Sun really dropped the ball with that one. It’s such a mess that it’s not even a little bit funny. However, that J2ME is fragmented and mess of differing implementations has nothing to with it being open source. It was like that way before Sun opened it up.

    I’m very aware of all the good work Apple is doing concerning open web standards and web applications and I aplaud them for that. But I still think it is the pot calling the kettle black when Steve Jobs has the audacity to criticize Adobe for Flash being proprietary. How open is Quicktime for example? Or iTunes? Or any of Apple’s other flagship products? Not so much.

    Like I said already, I have no problem with the internals of the iPhone OS being closed. My problems are with Section 3.3.1 and the bullshit it introduces to developers that have already spent years working with the platform and now possibly have to change everything around. Sure, it’s not a problem for someone that’s just starting putting out iPhone-apps in the past couple of months. But for someone that’s been developing an app and relies on this app for his/her living having the app suddenly excluded and their living taken away simply because The Steve has beef with Adobe it’s a big deal. It’s not fair to completely change the rules on the developers this late in the game. This doesn’t just hit Flash-developers. What about all those games that use Unity3D and already are high in the charts on the AppStore? Will they suddenly be excluded? Most likely yes. Is it fair? No it isn’t. Is it a dick-move that will possibly destroy or at least needlessly complicate peoples lives? Yes, it is.

    And there are already shitloads of fart-apps in the AppStore. I’d go as far as to say that at least 60% of everything in the AppStore today is useless crap. How many notepad-apps are there? Flashlights? The list goes on and on. But still really cool apps are being stopped because the acceptance-process is broken and unreliable. It’s a joke. If Apple should change anything about things concerning the iPhone OS it is certainly the AppStore. Trying to find something useful in the AppStore is like wading through an ocean of shit looking for a piece of dark chocolate.

  3. Emmanuel
    May 2nd, 2010 at 00:51 | #3

    Im not a fanboy. Ive been around the block with most platforms.
    Mostly PC & .NET, but also Java & *nix.

    Java & .NET are both two piles of shit.
    Its just that when you get used to them, you dont find the smell to be so annoying.

    Flash is, to be kind, a trojan horse in sheeps clothing:
    http://lmgtfy.com/?q=flash+exploit
    ..although its nice to look at and powers alot of cool sites.
    We, the users, have been able to download Flash Lite to our phones for years.
    Have you tried installing it? If not. Please do.
    It will be really fun to see flash on the Android.
    Its like watching a plane fly, knowing its going to crash.

    I think that developers that are serious about a platform should take time to learn the platform. Hell, I know Actionscript. Ive actually coded alot of Actionscript. Its easy to learn. Even if I could, I would never write enterprise Java applications with it! I know that there would always be stuff that I would not be able to do.

    Unity3D. Thats a different ball. I completely agree.
    I would be surprised if Apple dropped the ball on them.

    App Store. Nja.
    I believe there needs to be an approval process.
    It raises the bar. And I like high bars.
    Some people dont like bars and some people just like to get high.

    I totally agree with the whole ocean of shit thing.
    I find that metaphor useful for alot of cases, the internet for example.

    :-P

  4. May 2nd, 2010 at 13:13 | #4

    @Emmanuel
    I think we’ll have to agree to disagree on Java. I still find it very enjoyable both as a language and as a platform, for back-end and server-stuff at least (which is what I mostly use it for) but JSP and all that isn’t all that bad either. Certainly not if compared to ASP.NET at least ;-)

    Sure, there have been plenty of security holes in Flash but the same goes for Safari:
    http://lmgtfy.com/?q=safari+exploit
    and many other pieces of software that are still free to roam on Apple’s platforms. There’s no such thing as 100% secure software. Everything can and will be exploited.
    I don’t think throwing out Flash altogether is the way to deal with this though since throwing out Flash impacts the users of the mobile device in question, which is a large part of the point I’m trying to make here. Put pressure on Adobe to fix the flaws instead. Maybe that is what this is doing already. I hope so. But if so, will we see Flash returning to Apple devices in the future? I hope so too.
    I’ve never tried installing or running Flash Lite actually. If it’s a hassle I’ll have to take your word for it. However, I’m pretty confidant that Flash on Android will be good. With all the focus that’s been on Flash on mobile devices lately, Adobe simply can’t afford to fail and I don’t think they will either.

    I don’t see what using third-party tools necessarily has to do with not taking time to learn a platform. Sure, it can be seen as trying to take a short-cut but not all short-cuts are bad, especially not if you’re trying to achieve easier cross-platform development.

    Unity3D clearly breaks the rules according to Section 3.3.1 and if they get a “free pass” from Apple, what’s 3.3.1 worth really? If they start giving out free passes that’s called “hypocrisy”. If you’re not sticking to your own rules why should anybody else have to? So no Flash-apps for the iPhone OS should mean no Unity3D-apps as well. Equal rights to all developers.

    Having an aproval process for the AppStore is OK with me. I do wish there were other ways to get apps onto an iDevice so that the users could make their own choices with the apps that are denied entry to the AppStore. And don’t think the bar is set very high with the AppStore. It’s very clear that the aproval process is just as broken and random as the US patent system is (not saying that one has anything to do with the other in any other way though).

    I agree that the ocean of shit metaphor is very true for the internet. I’d say there’s more of a 95/5 ratio of shit/chocolate there though ;-)

    One thing that I’m hoping this mess will bring though is pressuring more and more websites to move towards HTML5 instead of Flash for their multimedia content, because believe it or not that’s what I’d want in a perfect world. However, this is far from a perfect world and I don’t think we’re anywhere near the point where it is OK from a user-perspective to abandon Flash completely. I think Flash has gotten too much of a focus in this whole discussion though. My beef is mainly with the idiotic Section 3.3.1 rather than about being a cheerleader for Flash. Flash is just the most visible and well-known sacrificial lamb in all of this. I feel a lot more for the third-party tool-makers that are not backed up by a monster of a company like Adobe and all the developers that are negatively impacted by this than I do for Adobe (which I’m sure will pull through whatever happens).

  1. No trackbacks yet.