Anyone else note the parting observation that if you have accepted the developer agreement you are forbidden from even discussing it in public without Apple's written permission?<p><i>“10.4 Press Releases and Other Publicity. You may not issue any press releases or make any other public statements regarding this Agreement, its terms and conditions, or the relationship of the parties without Apple’s express prior written approval, which may be withheld at Apple’s discretion.”</i><p>As I said yesterday, Apple appears to be pursuing policies that will create a chilling effect on developers. No talk about what tools you used for your app development - anything other than C, C++ or objective C might kill your app. And also, no talk about the license conditions...presumably to include talk about the app store approval process, insofar as it is described in the license agreement. Sure, they won't sue you; but there goes your app store presence if they feel offended by your remarks.<p>That's not a very attractive deal if you ask me.
Apple is clearly in the wrong here. I hate to say it but they seem to be turning into the new "Empire".<p>It is as if AT&T said you could only use a certain phone to make phone calls. Or ConEd said you could only use certain appliances with their electricity. Or Intel said you could only use their compiler to write programs that run on their processors. The list is endless.<p>This is an exercise in futility. Apple really needs to give this a rest and relax. Let the market place determine which application experiences are better than others.
Apple lately has been reminding me of what they were supposedly railing about in that 1984 commercial.<p><a href="http://www.youtube.com/watch?v=OYecfV3ubP8" rel="nofollow">http://www.youtube.com/watch?v=OYecfV3ubP8</a>
It's an amusing take, but in practice I think "originally written" is intended to be interpreted just like the GPL's definition of <i>source code</i>:<p><i>"The source code for a work means the preferred form of the work for making modifications to it."</i><p>Just like Apple's SDK agreement, the GPL is written this way to prevent developers from claiming an intermediate representation is actually the "source code" when it's actually compiled or generated from the true source.
A major portion of almost all iPhone apps is "originally written" in XML -- specifically, the Interface Builder files for the UI and the Core Data schemas. I anticipate a flood of clarification requests to dev support from obsessively detail-oriented programmer/lawyers...
I'm kinda surprised that nobody here so far has noticed that the author is consistently confusing "written" with "imagined".<p>You might <i>imagine</i> code in your head in some way, but when you <i>write</i> it, you're probably doing so with a specific syntax and structure, in a particular language.
From the article- "programs aren’t originally written in any definite language, or in any definite location. Programs are encoded information that is contiguous and continuous with the information in our heads, and in the world."<p>I certainly can't speak for how anyone else codes, but there is a significant difference between the representation in my head before I sit down to code and the structures and algorithms of the compilable implementation.
The act of coming up with a solidified idea and typing with syntax are not discrete passes, so I don't think it's inaccurate to say that I've "originally" implemented the program on a computer.
It seems, as others have pointed out, that a big motivator for this change was to prevent, or at least slow down, cross-platform app development.<p>However a loophole exists: if right now you code in Generic Intermediate Language A which translates to an iPhone project in ObjC as well as an Android app project, there is nothing Apple can do (right now(1)) to stop someone writing a program which translates an iPhone project directly to a project for another platform like Android.<p>1) They can obfuscate the project data to make it harder/impossible to parse via some security mechanism, but this leads to a ridiculous arms race.
<i>it seems silly for a company like Apple to take a definite position on exactly what “originally written” and “intermediary translation” means</i><p>irregardless of one's opinion about section 3.3.1, there's actually nothing silly at all about apple taking a stance on the interpretation of a legal term. definitions are what makes law and legal agreements work, and you can define things however you please---the important thing is making yourself understood. obviously apple does not intend to outlaw thinking before coding. therefore they have implicitly defined their terms accordingly.
<i>a mistaken belief that consistent developer tooling means a consistent user experience</i><p>Not necessarily, but inconsistent developer tools rarely lead to better UXs than consistent ones. I don't know about you, but I haven't tried a single Flash-written app on the iPhone which didn't suck. And Apple's recent deletion of below-standards apps shows that they take app quality very seriously and want to set a high standard for the platform.<p>As for the author's stance, it's simply ridiculous!
I completely disagree with whole idea of intellectual property, so from my perspective Apple maybe wrong, but the argument given here against their actions is even "wronger".<p>Apple's actions here can at least be viewed as quality control, and since its their product and their app store etc. its their choice. This is no different to how games console manufacturers refuse to support third party hardware/software, and if you do want to produce software for them you need to most often use their tools and comply with their requirements. Historically this has worked for them very well.<p>The writer also negates to consider the real world difficulty of implementation - having a set of ideas about how something should work is a totally different concept from having a working implementation of a concept - except for that one case where the ideas are sufficiently concrete to describe an implementation in a single language. Translating ideas into C++ or whatever is not trivial so the implementation and the original concept can not realistically be considered the same thing unless it includes all of the implementation considerations as well. In which case there is no valid way to distinguish that set of ideas from the source code - mathematically they are identical descriptions of an algorithm, if they were not then one or other would lack sufficient information. The program would not produce the intended results or the idea would be missing information required to produce the implementation.<p>As a simple example consider the difference between the usual form of the Pythagoras theorem ( h^2 = a^2 + b^2 .: h = sqrt( a^2 + b^2 ) ) and some code to find the hypotenuse of a right triangle from the other two sides - there are lots of issues there that the original theorem has no need to consider, like whether to use floating point representation or fixed point, what square root algorithm to use and what order the operations should be performed in. All of these decisions can have a dramatic impact on the performance and accuracy of the implementation (i.e. produce detectably different results) and some of them may be language dependent, e.g. your language might provide a black box square root function but not specify how it must work, which could be left to the implementation to decide.<p>Even so, do I have ownership of my particular C++ implementation of this? No. Anyone else could have done the same without prior knowledge of my solution - because its already there encoded in the laws of nature waiting to be re-/discovered/ (not /invented/). Invention is a convenient label like "artificial" - it has no counterpart in reality but is a useful abstraction in daily life. But I digress...
>> What if Ben writes a Flash app, shows it to Amy, who codes it up in Objective-C, compiles it and submits it to Apple? Should it be rejected since it was not “originally written” in Objective-C?<p>Apple doesn't want 3rd party "compilers". That's what those lines in section 3.3.1 means...