

Why Apple Changed Section 3.3.1 - tumult
http://daringfireball.net/2010/04/why_apple_changed_section_331

======
tumult
Gruber gets this mostly right, especially about vendor lock-in and abstracting
on top of the platform as a whole (i.e. multiplatform, write-once apps.)

Where he gets it wrong is here:

 _IPHONE DEVELOPERS: No change. If you’re a developer and you’ve been
following Apple’s advice, you will never even notice this rule. You’re already
using Xcode, Objective-C, and WebKit. If you’re an iPhone developer and you
are not following Apple’s advice, you’re going to get screwed eventually. If
you are constitutionally opposed to developing for a platform where you’re
expected to follow the advice of the platform vendor, the iPhone OS is not the
platform for you. It never was. It never will be._

There are many good applications written in something other than C,
Objective-C, C++ or JavaScript available for iPhone. In Apple's hubris to
strike down Adobe and other opponents, they've caught many well-meaning
developers in the crossfire. Especially in regards to independent and startup
developers, being able to choose your tools -- tools that otherwise obey every
other rule in the developer program -- is hugely important. I think most HN
readers will resonate with this claim.

I can't stand Flash. I also don't much like plain JavaScript. I prefer to
write applications in a mix of C, Scheme/Lisp, or Haskell. I can probably
write faster and more stable iPhone apps with these tools than a 10-man-strong
team can with C and Objective-C. I definitely cannot write faster and more
stable iPhone apps with C and Objective-C than a 10-man-strong team can with C
and Objective-C.

Apple's banning of languages other than "The Three Cs" strikes developers as
egregious because we know how much the language you use affects how you think.
Apple is telling us, now, how we should be thinking when we solve problems.
They are asking us to agree to use only an approved set of thoughts.

They have a right to, it's their platform. We also have the right to walk away
from this self-imposed kiddie pool, and go back to the ocean to ride the big
waves.

~~~
mrduncan
_There are many good applications written in something other than C,
Objective-C, C++ or JavaScript available for iPhone._

Any examples? I'm genuinely curious since I've heard that a few times already
today but haven't heard of any specific examples.

~~~
tumult
Anything with a parser. Anything that uses Quartz 2D (a drawing library that
uses the C preprocessor, in Cocoa/UIKit.) Anything with C preprocessor macros
above a certain unknown threshold (hey, Objective-C was originally just a
bunch of macros!) Anything that implements its own memory management scheme.
Probably 90% of non-trivial games, and 100% of the good ones. (Almost all good
games utilize their own runtime implemented in either C++ or other fast
language, abstracted into a higher level set of primitives for the game
designers to work with.)

~~~
joubert
And you think Apple will institute a policy that kills off 100% of the good
games on their platform?

~~~
barrkel
It appears that the lawyers want to, yes.

~~~
doki_pen
And why have you concluded that the clause is made by evil lawyers (who Apple
hires) and not by the business? Can I really do anything I want in life, and
if I'm criticized, I can just claim, "my lawyers made me do it"?

------
pg
_iPhone developers: No change. If you’re a developer and you’ve been following
Apple’s advice, you will never even notice this rule._

This is where he goes wrong. Using multiple layers of abstraction has always
been a win for programmers, and not just for compatibility across platforms.

This move by Apple is equivalent to IBM saying in 1970 that programmers
couldn't use high level languages-- that they had to write programs only in
IBM 360 machine language. The loss would not have been only in portability.

~~~
elblanco
> The loss would not have been only in portability.

I think their loss is about to be in the form of an exodus of developers.

~~~
jackowayed
Is that true? I sure hope it is, but I wouldn't count on it. The vast majority
of developers have been working in straight Objective-C anyway.

Plus, they have so many apps, even if they lose a lot of their high-quality
developers, that'll probably just be a tiny blip when it comes to total apps
being submitted. It might take a long time to notice that the quality of apps
has gone down, since it's so hard to quantify, and there no doubt will still
be some quality apps. And them noticing quickly is what we need so that
they'll reverse this rule.

~~~
plinkplonk
"Plus, they have so many apps, even if they lose a lot of their high-quality
developers, that'll probably just be a tiny blip when it comes to total apps
being submitted. "

This was true when an exodus from Windows started. Windows _still_ has a lot
of committed talented developers, but it is also true that a lot of developers
moved away from Windows and it hurt them _long term_.

"It might take a long time to notice that the quality of apps has gone down,
since it's so hard to quantify, and there no doubt will still be some quality
apps. And them noticing quickly is what we need so that they'll reverse this
rule."

I personally would hope that Apple does _not_ change this rule for years (and
add _more_ dickhead rules) till a more open/dev friendly competitor has sucked
up all the devs who move away and achieves critical mass.

Don't distract your opponents (and evil people in general) when they are doing
something stupid.

------
Zak
_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._

And that makes Apple evil. At least, it does in the sense that Google uses the
term in "don't be evil" - I believe pg translated "evil" as something along
the lines of "trying to compete by means other than making the best product
and marketing it honestly".

~~~
greendestiny
Not to mention stupid - has a cross platform framework ever become a de facto
standard?

And the point about the quality of apps generated is complete bullshit and he
should be ashamed of saying it. The quality of Unity3D and other frameworks is
probably above the average for the App Store. In fact the whole point of these
frameworks is making generating higher quality programs easier.

What really pisses me off with Gruber's post is in defending the indefensible
he's making it harder for Apple to realise that this is a mistake and correct
it.

Apple should really just have said what they really want - you can't put
anything in the App Store if its available for another platform. The problem
being they don't want to exclude the big players, so they just make it hard
and unpleasant for the little developers, yet again.

Edit: I mean cross platform application frameworks. Of course there are cross
platform things have become de facto standards.

~~~
s3graham
> has a cross platform framework ever become a de facto standard?

Does html count? Posix? It could definitely happen.

~~~
joubert
I wouldn't consider HTML, a presentation markup language, a (programming)
_framework_.

~~~
s3graham
Yeah, I was typing on a phone. I meant HTML + JS + browser DOM + CSS + etc.

------
wvenable
This reads like an apology for posting his previous blog entry about Section
3.3.1.

He's wrong about MonoTouch; It lets you code in the .NET language, yes, but it
still targets the iPhone APIs. By the same logic, they should ban C and C++
because you can write iPhone applications and Windows applications in it.

He says "Adobe’s goal isn’t to help developers write iPhone apps" which is
just silly. Adobe's customers are developers and it's in their best interest
to help their customers make iPhone apps. Their technology is Flash so that's
how they do it. It's really Apple that doesn't want to help developers by
restricting their choices.

~~~
blub
That's Objective C and C++. You can't program in those for Windows, they are
pretty much Apple languages despite things like gnustep.

~~~
techsupporter
You can't program in C++ for Windows? What in the world am I doing with all
these Visual C++ books, then?

~~~
blub
"Objective C and C++" is "Objective C and Objective C++".

------
sofal
_If you are constitutionally opposed to developing for a platform where you’re
expected to follow the advice of the platform vendor, the iPhone OS is not the
platform for you. It never was. It never will be._

Good lord, advice? He's making it sound as if it were some conventional
programming suggestions on how to avoid buffer overflows.

------
ttrashh
> "On the one side, this rule should be good for quality. Cross-platform
> software toolkits have never ever produced top-notch native apps for Apple
> platforms. Not for the classic Mac OS, not for Mac OS X, and not for iPhone
> OS."

This is a silly thing to say. From what I've seen of MonoTouch the UI looks
like the same Apple chrome to me. Unity seems like a good choice for gaming
and most of the games look great.

~~~
mortenjorck
The best counter to the quality argument I've seen is a comment on the
Appcelerator blog:

 _The irony here is that Titanium apps are fully native and make use of
iPhone-only features, and they’ll be rejected. Alternatively, you could open
up a web view in Objective-C, and pop whatever slow, non-native crap you
wanted in there, and not be in contravention of the rules!_

[http://developer.appcelerator.com/blog/2010/04/iphone-
os-4-0...](http://developer.appcelerator.com/blog/2010/04/iphone-
os-4-0-announcement-and-our-commitment-to-you.html/comment-
page-1#comment-1251)

------
jrockway
Is Gruber a programmer?

I don't see how the user experience would be different for an app written in
Haskell versus an app written in Objective-C, except that the Haskell app will
run faster and crash less (in general). "Platforms" have nothing to do with
it; programming languages are just a way to convince the CPU to do stuff for
you without telling it about every memory load.

~~~
ZitchDog
Yes, he wrote Markdown. <http://daringfireball.net/projects/markdown/>

~~~
jrockway
Oh yeah. Good choice of programming language, too :)

Anyway, it's scary to watch the Reality Distortion Field affect otherwise
rational people, like Gruber. Perhaps I just misread.

~~~
cemerick
Has he ever been rational w.r.t. Apple? Maybe it's a recent thing and I have a
poor memory, but I seem to recall him always being a fanboy (not that there's
anything wrong with that).

~~~
ZeroGravitas
He's never been rational, but that irrationality generally expressed itself as
biting critiques of minor aesthetic and usability issues that Apple was
mucking up.

He's let himself be thoroughly trolled by all the gadget blogs that alternate
between calling the iPhone the best/worst thing that's ever happened in search
of pageviews and as a result became very defensive and self-righteous lately.
The world has been divided into those who "get" and those who don't "get" the
iPad.

------
shawndrost
"Web Developers: No change." Not so. I'm a web developer, and I was just
getting into iPhone development via Appcelerator, which has no future under
this developer agreement.

------
potatolicious
> _"Not Adobe’s Flash. Not .NET (through MonoTouch). If that were to happen,
> there’s no lock-in advantage."_

That is true, but not all of it - if Apple allowed code generators there would
be a glut of cross-platform apps being written in this middleware as
developers try to write-once for multiple platforms (Android, BB, etc).

With this you will also see apps that do not follow Apple's HCI guidelines,
eschewing Apple's aesthetic and workflow standards for lowest-common-
denominator cross-platform UI. This would be a death blow to Apple's platform,
since its primary advantage is having better UI than everyone else (this
includes 3rd party apps).

IMHO this is more frightening to Apple's continued dominance than simple
tools/language lock-in. If you didn't like Obj-C, Apple is not terribly pained
to see you use something else... but if you bring Android-calibre UI onto
Apple's platform Steve will be very sad.

~~~
plinkplonk
"if Apple allowed code generators there would be a glut of cross-platform apps
being written in this middleware as developers try to write-once for multiple
platforms (Android, BB, etc).

With this you will also see apps that do not follow Apple's HCI guidelines, "

Good points but do they really matter as long as Apple controls the AppleStore
? It is not as if anyone can sell or deploy these without Apple's approval. I
am not disputing your larger point (which is a good one), but how would an app
that broke the HCI guidelines (say) get approved? Do such apps get approved
today?

------
greendestiny
Gruber is very wrong in thinking that languages other than Objective-C, C and
C++ inherently generate non-native apps. Other languages can simply link to
the native libraries and still use native widgets - that is if this wasn't
specifically forbidden by these changes. So clearly this is about something
else.

Apple could simply use its approval process to block apps if they started
using non-native widgets anyway, and that wouldn't be contrary to its current
HIG.

------
thought_alarm
I'll wait for Apple to provide their own explanation.

But it goes without saying that Cocoa and Objective-C are still small potatoes
compared to Flash and C#/.NET, despite the iPhone's recent popularity with
developers. Platforms are always competing for developers, so it shouldn't
surprise anyone that Apple would take steps to protect the viability of their
development platform.

------
mcantelon
Gruber's a pretty good apologist.

~~~
neonfunk
"I’m not arguing that it’s anything other than ruthless competitiveness."

Seems more like an explanation of their motivations rather than a defense.

Not to be a Gruber apologist.

~~~
ZeroGravitas
Who exactly required an explanation? We all know it was intended to mess with
the competition.

And if your _explanation_ includes claiming, falsely, that all those affected
were producing shitty apps then that's not an being an explainer, it's being
an apologist.

~~~
neonfunk
I am very confused with all of the rhetoric going around. His post was one of
the more substantial explanations I've seen on HN. (And of course, the
resulting comment thread here is usually very helpful in parsing this kind of
debate.) "We all know it was intended to mess with the competition" -- sure;
but you wouldn't be here if you didn't want to go more in depth.

------
kungfooey
As I read this I get the strong feeling that Apple can do no wrong - whatever
they do, they'll be a strong apologetic exegesis from the Apple-ites to
justify it somehow, even if it requires some pretty awkward contortions.

~~~
netcan
Once you have fans, they'll instinctively defend you. That doesn't mean you
can't lose your fans.

------
viraptor
Isn't that point completely meaningless? You're not submitting the source
code, but the binary to the store. They cannot know what language you used
without doing some fuzzy binary-fingerprint matching to detect parts of
runtime etc. If you're clever enough and think that "time to hide the fact I'm
writing in C#" << "time needed to rewrite the software in obj-c", you can just
scramble the binary and hope they won't ask why you did it. They cannot prove
what compiler or language you used.

~~~
bshep
Those were my thoughts as well, how can they know if you cross-compiled?

~~~
wvenable
It's trivially easy to tell. If it doesn't look like right, they can simply
hold your app in the queue until you prove otherwise. Being sneaky in this
scenario probably isn't a good idea -- Apple holds all the cards.

~~~
dannyr
And there's a possibility that you as a developer might be banned by Apple.

------
joegaudet
Let's get real, developers aren't going to flee from iPhone because of some
draconian framework / compatibility measure.

Just like they didn't flee because of restrictions on which Apps got into the
app store. Certainly no one liked it, but they kept writing apps just the
same.

The iPhone has sexiness and installs on it's side, that will keep the vast
majority of programmers chugging away at C / C++ / Objective-C despite their
misgivings.

~~~
zacharypinter
I sincerely hope that's not the case, but I fear it might be.

------
peperg
Why not write a native Obsessive-C application which is a Java, AS, Python or
whatever Virtual Machine ?

On the other hand, when I develop with Flash CS5 I don't download iPhone SDK
and read no License.

------
zppx
Here: <http://news.ycombinator.com/item?id=1252428>

Could the same legal argument, in some way, be applied to the new section
3.3.1 of the iPhone Developer Program License Agreement(iDPLA)? Someone with a
legal expertise could say something about the matter? If I'm not wrong the
iDPLA is a American contract, and also it's not an electronic device, so I'm
confused.

This is a real question, I do not want to criticize or praise Apple or the
iPhone or whatever else.

------
doki_pen
Why should we, as developers, be happy that Apple is creating lock in? Sure, I
understand why, but does that mean we should all just accept it? Was the
Microsoft era something we all look back fondly on? I think you'd have to be a
complete fan boy to have that much vested interest in Apple's success, without
actual equity in the company. Clearly it is better to release your apps on all
platforms with as little effort as possible.

------
aufreak3
People - relax. The cross-compiler vendors will simply change their target
language from machine instructions to .... Objective-C. It's probably a much
easier target anyway.

~~~
tumult
Read again -- it says you must _write_ the application, originally, in
Objective-C, C, C++, or JavaScript.

~~~
aufreak3
But if the compiler generates "readable code", there is no way to counter my
claim that I "wrote" my program in Objective-C.

If that is indeed Apple's instruction and what developers need to abide by,
lets lobby the processor manufacturers to mandate that apps for their
processor must be "written" in their assembly.

~~~
tumult
There is probably no good technical way for them to counter your claim that
you wrote it, but you would be lying, and you agreed to their contract+license
which says you won't do it.

~~~
aufreak3
I absolutely don't think I'm lying when I say "I wrote program B" (from my
second argument). It hinges on what "write" means. It no longer means "put pen
to paper". If that's true, then nobody "writes" software any more and all
developers are liars when they say "they write code". Then what does it mean?
"Create" is closer to it.

Also if "you" as a company hire someone to "write" an iPhone app which you
submit to Apple, then technically _you_ didn't "write" it either.

 _Any_ physical interpretation of "write" doesn't work. Even if they changed
it to "type", I can generate program B and literally retype it into the
computer to satisfy the legality.

In simpler words, the requirement seems just plain stupid and invalid to me.
Fire the lawyers who "wrote" that :)

~~~
barrkel
I believe the appropriate term that would come into a proper definition would
involve mechanical translation. Those parts that are input into a process of
mechanical translation, but are not themselves a product of mechanical
translation but rather in substance the product of human agency, are original
source files.

But the contract term as it currently reads certainly seems sloppy.

~~~
aufreak3
Not sure if even your "mechanical translation" condition works, though
certainly tighter.

What if I hire a human to do the translation? If even that would violate the
agreement, then the "original written language" of every program is the plain
language specification document (that is, if you write one).

Heck, XCode has project templates that "write" starter code for you. So,
technically, no iPhone developer "wrote" every single line of copyrighted
code.

.. and (someone else mentioned) copy pasted public domain code, apps ported
from other platforms, are all ruled out.

Basically, it seems that this clause reeks of a lack of understanding of the
nature of software.

