The new iPhone Developer Program License Agreement states...<p>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).
It sounds like they are trying to prevent people from writing apps that are portable to other smartphones, since the obvious way to do that would be to make an intermediary layer.<p>Or am I misreading this? Any iPhone experts have opinions about what this means?
Interesting.<p>MonoTouch, which is the Novell/Mono team's rather fantastic port of C#/.Net to iPhone, compiles down to native code and apparently that was OK with apple to begin with. Unity3D which is a popular 3d framework for many platforms including iPhone (Where it runs a lot of games) was available before MonoTouch and is Mono based.<p>Assuming the OP is correct in the "new developer license agreement" statement (e.g. the relevant section is entirely new or changed) the "Originally written in Objective-C, C, C++ or JavaScript" is worrisome. It technically invalidates MonoTouch. Even if MonoTouch is hard translating code to One of the blessed languages before compile, you didn't write it ORIGINALLY in it.<p>And love or hate Mono, .Net, C#, etc etc. the fact is that it brings iPhone development to a larger audience which is (IMHO) overall good for the iPhone app world.<p>I seem to recall Adobe was demoing a similar system a few months back - which would compile down a Flash app to native code in more or less the same way as MonoTouch does. I guess it's entirely possible that Apple is targeting this in their change, but unlikely as this wouldn't allow you to run downloaded flash. It would simply let you download Apps from the store which were written for Flash, but since they'd been translated to native runtime probably wouldn't be the battery hogs that apple seems to fear.<p>I've been watching Apple long enough to think this may not be a case where they're targeting a specific person/company, rather ... it's future leverage. If they run up against something they don't like (there are obviously lots of things like MonoTouch and more coming along) sometime in the future they now have a clear one liner to point at for "VERBOTEN". They may still however work happily with companies like Novell to produce a grey-area inhabiting MonoTouch.<p>UPDATE: For the record, the MonoTouch FAQ (<a href="http://monotouch.net/FAQ" rel="nofollow">http://monotouch.net/FAQ</a>) states very clearly "MonoTouch is delivered as a static compiler that turns .NET executables and libraries into native applications. There is no JIT or interpreter shipped with your application, only native code. ". Obviously this distinction used to pass the test.
WTF?? I'd like to see the Apple fanboys defend this as anything other than Apple being dicks. I can think of no legitimate way in which this "preserves the user experience" or "keeps users from getting confused" or any of the other usual Apple apologies.
This is pretty bad. No more MonoTouch, nor any language innovation in software tools targeting iPhone etc. permitted.<p>To be frank, as an employee of a tools vendor which sells an IDE (Delphi) whose language is not one of Objective C, C or C++, this is pretty scummy - a low blow.<p>(I speak for myself, not for the company. of course.)
I view this also as Apple forcing developers to make a choice between Android and IPhone.<p>Let's say you have limited developer resources and can only develop an app for one platform, most would choose the IPhone due to its large install base.
It seems insane to me that companies spend tons of money creating apps only to have the rug pulled out from under them. Is there any legal action that could be taken for Apple changes the rules like this? Is there at least a grace period? Can people continue to use the older version of the API?
I'm sorta surprised they didn't wait until Tuesday (after CS5 drops) to drop this bomb after everyone bought flash CS5. But then again, that's likely why they did this show and tell today, to make sure people didn't buy flash.
Number one I think it's a pretty obvious smack at Adobe, countering their planned CS5 which was supposedly to allow you to use Flash tools to compile to an iPhone app. I don't believe there is any legitimate move for this, it's purely business, anti-competitive, "Not Being Nice".<p>Number two -- and I think this was more of a bonus not the main purpose -- is a blow against cross-platform toolkits.
I don’t see the issue here. Pretty much every company has taken to protecting themselves against everything under the sun in their license agreements. That’s (sadly) standard practice at this point.
<p>Beyond that there’s a legitimate need for this particular clause and that’s to prevent vendors who would market poorly written tools that create buggy applications. <p>
So the question isn’t “does Apple have the clause” it’s “will Apple use the clause against legitimate developer tools like Adobe Flash or monotouch”. Until they do I don’t see a need for criticism.