“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.”
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.
That's not a very attractive deal if you ask me.
Apple did jump on this bandwagon pretty quickly. They're drunk with power already and only have significant share in the mobile market. It usually takes years of domination before companies do something so corrupt and evil.
Anyway, it's certain to come back and bite them. I hope it's a signal to all developers that iPhone isn't worth the trouble -- Android is on the uptake with much more openness, availability and options for consumers, and iPhones will be back down to < 10% of smart phones in a few short years.
Speaking as a user, I've never liked Android. It feels bad using it; it's not as quick or fluid, the ui animations aren't as crisp, the tapping seems less accurate, and I have serious trouble with their keyboards (on-screen and physical). I've met people who feel the same, and I've met people who make similar comments about the iPhone. In the end, people will buy what they like, and Apple makes a product of a level of quality that is easy for lots of folks to like, and they know exactly what level of quality to expect. Android is a hodgepodge of devices that range from cool to embarrassingly rough. My opinion is that until they do some serious cleaning up of their ecosystem and their OS, they've got a long hard battle for actual mindshare in the general public.
As a developer, I find myself inspired by form factor. That's my own limitation on creativity, I suppose. I don't think of an idea, and then imagine a device that would work for it. I look at a device, and imagine ways to use it. I am inspired by the iPad, and my position is that I will do whatever is necessary to make the app that I want to use. If that means learning to be proficient in Objective-C, so be it. I'm not saying what Apple did is fair, but I don't see how it would stop me.
But then again, my livelihood doesn't depend on, and I would never try to put myself in the situation where it did.
After using it for a few months it's pretty clear that the hardware is superior to the iPhone but the software is not quite as good yet (side from Google Voice native app and the GPS navigation which is outstanding). It still feels a little buggy and beta compared to iPhone OS. That being said I am seriously rooting for Google on this one and I hope they get there soon.
There is one other big advantage Google has over Apple in this race - all their data is already in the cloud. When I booted up my Nexus One for the first time, I entered one login/password and boom, it had all my contacts, email, calendar, documents, etc etc.
Android FTW!
Maybe apple dev club will be the next fight club !
The really annoying thing is the NDA for beta SDKs. The only place you can communicate with other developers about new features until an OS is released is the Apple developer forum.
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.
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.
http://en.wikipedia.org/wiki/Bell_System#Government_sanction...
In 1968, the Federal Communications Commission allowed the Carterfone and other devices to be connected directly to the AT&T network, as long as they did not cause harm to the system. This ruling (13 F.C.C.2d 420) created the possibility of selling devices that could connect to the phone system using a protective coupler, and opened the market to customer-owned equipment. The decision is often referred-to as "any lawful device"...
http://en.wikipedia.org/wiki/Carterfone
Here's to hoping this same ruling happens in the wireless space next.
I think now with the iPhone, we're getting to see what it might have been like if Apple had dominated the PC market.
Yes that has worked so well for mobile phones so far...
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.
As for the author's stance, it's simply ridiculous!
And I'm not defending Apple, here. I don't like where they're headed. But I find this whole 'the program was written in my brain' thing ridiculous.
If you write a Cocoa Touch app, you're targeting the touchscreen-based iPhone OS.
If you build with Flash, you're targeting mouse-based windowed operating systems, and, what the hell, might as well build to iPhone while you're at it!
Banning Flash apps is smart, and I'm glad they're doing it. For C# apps, that's definitely non-ideal, but I can see where they're coming from.
...one iDevice.
"The source code for a work means the preferred form of the work for making modifications to it."
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.
But it's completely irrelevant here. If nobody is going to modify your code but you, and if you can produce apps that work great on the iPhone, why should they care whether you write it by editing Objective C or by singing Hungarian love songs into an electric toothbrush?
That being said, just by asking someone to agree doesn't mean they will enforce it against small players (RhoMobile, Titanium).
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.
"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? If you think Apple’s answer would be 'no' — a good guess — then substitute Adobe’s iPhone Packager for Amy. Now should it be rejected according to the rules? What, at the end of the day, makes Amy different from a machine translation tool?"
Apple's rule creates all kinds of ambiguities. What if you mocked it up first in Ruby because that's where you're most comfortable? What if you used psuedocode? What if you just drew a diagram? What if you just thought about it? How do you determine what the app was "originally written" in?
More importantly, how does Apple determine it and why should they care?
Legal agreements will be interpreted differently and its important for them to spell out these ambiguities. For instance, I don't think "originally written" is defined anywhere in the document. If it were a really thorough legal document they'd probably define that somewhere. Right now its completely up for interpretation.
You might imagine code in your head in some way, but when you write it, you're probably doing so with a specific syntax and structure, in a particular language.
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.
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.
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.
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.
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...
FTFY
-Tom Christiansen a.k.a. thoth, Perl contributor extraordinaire
Mine too!
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.
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.
Apple doesn't want 3rd party "compilers". That's what those lines in section 3.3.1 means...