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?
“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.
You're right, it's not, and this is what happens when one company thinks they have a monopoly (whether they do or not ... Apple doesn't, and iPhone's marketshare will continually diminish in favor of Android devices).
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.
Yep...I got my Nexus one almost entirely because Apple blocked the Google Voice app. That pissed me off.
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.
I'm inclined to disagree with you. This may slow or impede the growth of the App Store, but Apple still has plenty of partners producing amazing apps (have you seen the Marvel and ABC apps? Stunning, functional, and downright great to use, which probably has something to do with both of them being owned by Disney where Jobs has major influence). They may lose a lot of individual devs, but they'll still have big players, who are increasingly learning how to make good software.
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.
IIRC fight club had the same rules, and that stopped noone from joining it :D ( infact, now that I have rechecked, they have 2 rules to that effect ! )
Maybe apple dev club will be the next fight club !
I guess the trick here is to complain about the new agreement before you've accepted it (while you're still only prohibited from complaining about the old agreement). Then once you accept the new one to get work done, you stop complaining.
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.
Apple is clearly in the wrong here. I hate to say it but they seem to be turning into the new "Empire".
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.
As a result, by 1940 the Bell System effectively owned most telephone service in the United States, from local and long-distance service to the telephones themselves. This allowed Bell to prohibit their customers from connecting phones not made or sold by Bell to the system without paying fees. For example, if a customer desired a type of phone not leased by the local Bell monopoly, he or she had to purchase the phone at cost, give it to the phone company, then pay a 're-wiring' charge and a monthly lease fee in order to use it.
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"...
When I worked for Apple, we once had a discussion about how things might have been different if Apple and Microsoft's market positions were reversed. I said that's kind of like those historical fiction stories asking what would have happened had the Nazis won World War II.
I think now with the iPhone, we're getting to see what it might have been like if Apple had dominated the PC market.
Stuff like this is probably why they didn't. You only have to piss off a couple of the right developers and the next big thing ends up with your competition.
All of them. When the Mac first came out, long long ago, Dearly Beloved, they had a development package you had to buy if you wanted to develop for the Mac. The IBM PC, as inferior as its UI was, had free tools, and soon had actual compilers (!).
As a result, the Mac's toolset essentially consisted of whatever Apple had written, for a couple of years, while development for the PC exploded instantaneously and you could do anything at all with it -- even if it looked like crap, you could actually do what you wanted, and soon enough, Windows came out and it looked less like crap.
Jobs has just barely learned the lesson of 1983. There are lots of apps available for the iPhone and iPad. What he hasn't learned is the larger lesson, which is that owning an entire market might be lucrative in the short term, but in the longer term it won't work.
What I wonder is how much abuse can Adobe take from Apple. First they developed a version of Flash for the iPhone. I'm sure that cost them a pretty penny. Next they developed the CS5 iPhone packager thing and I'm sure that cost even more. Each time they do this and Apple rejects their product, they simply lose money. Google did the same thing with Latitude and Google Voice. Anybody else developed something for the iPhone that got completely rejected?
It might be interesting if Adobe were to discontinue selling their CS software on the Mac platform. Sure, it would hurt them short-term, but long-term Apple would lose the mindshare that Macs are for artists, as Photoshop is the primary program that maintains that reputation.
"but long-term Apple would lose the mindshare that Macs are for artists"
That already happened in CG/3D space, mainly thanks to Autodesk. Mac is starting to lose ground on editing as well due to AVID getting better for smaller shops. I can see it happen in graphics design area soon also.
The thing is Adobe is a corporate with standard management that would never be able to "think" of something like this.
They have no "soul" (corporate culture) nor anybody with sufficient power and vision to at least try something like this.
What would be smart of them would be to increase the prices on Mac products as to make them much less desirable compared to the PC variant. This would slowly drive users towards PCs. I know a lot of designers that bought Macs precisely to run Adobe software. So if they make it even more expensive perhaps designers will start using Windows variants some more.
Then again, once you get used to the Apple way of pricing things, Adobe's move might seem natural and business will go on as usual.
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.
Yes that has worked so well for mobile phones so far...
"Today, we celebrate the first glorious anniversary of the Information Purification Directives. We have created for the first time in all history, a garden of pure ideology. Where each worker may bloom secure from the pests of contradictory and confusing truths. Our Unification of Thoughts is more powerful a weapon than any fleet or army on earth. We are one people, with one will, one resolve, one cause. Our enemies shall talk themselves to death and we will bury them with their own confusion. We shall prevail!"
It's an amusing take, but in practice I think "originally written" is intended to be interpreted just like the GPL's definition of source code:
"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.
That's a good definition. And one that actually matters for open source - where, after all, the goal is for other people to be able to modify your source code.
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?
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...
My guess is they will clarify to include XML content generated by official Apple XCode tools like IB. I really only see IB content when I have Git merge conflicts, and I can't imagine anyone sane enough to generate that manually, without the tool.
That being said, just by asking someone to agree doesn't mean they will enforce it against small players (RhoMobile, Titanium).
True, but do you want to base your business on a platform that can be pulled from under you at any minute? That was already the case (since they have full control of the store), but now you'd actually be in open violation of a rule, which seems like playing with fire in a house made of matches
I'm kinda surprised that nobody here so far has noticed that the author is consistently confusing "written" with "imagined".
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.
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."
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.
Yes, but how do you answer his thought experiment?
"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?
Thought experiment. Good choice of words, I think the post was intended to take it to the extreme just to provoke some interesting thoughts on the new language.
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.
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.
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.
it seems silly for a company like Apple to take a definite position on exactly what “originally written” and “intermediary translation” means
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.
a mistaken belief that consistent developer tooling means a consistent user experience
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!
Then reject apps with crappy user experiences. If this takes out all Flash derived apps, why the superfluous language specifically banning apps written in anything other than Objective C?
"UX is subjective, they can't reject apps on that basis."
This is the Apple App Store. All apps require Apple approval before they can be sold. They can reject apps on whatever criteria they like. They have also demonstrated this is not a theoretical concern, either, by rejecting things for all sort of reasons that can't be said to be "objective". Apple graciously gives developers some guidelines on how they may make their arbitrary decisions, but, well, while I concede I have not read the developer agreement it is only because I'm about 98% confident without looking that Apple never actually agrees to do anything w.r.t. releasing your app.
Ultimately, "we don't want our vision compromised" is a smokescreen. It is absolutely true that if this is what they wanted, they could accomplish it simply by holding all apps to the same standard regardless of implementation techniques. This is all about lockin.
Now, if an open platform mandated certain libraries, but allowed you to distribute arbitrary executables, the UX argument would at least hold water, as lacking the strong enforcement mechanism of having absolute say over what you can run on your device means that falling back to the weaker enforcement mechanism of code would arguably mean something. (Something stupid, but something.) But Apple already has total control. Arguing about how their already-total control can only be augmented by this technical thingie over here is a smokeshow; taking control from "total" to "total" is a no-op, technically.
It's not ridiculous. If the finished app meets Apple's standards, why should they care how it's made? Whether something is written in Objective-C or compiled to it is irrelevant if the finished product is indistinguishable.
It's like saying "I need the original copy of that file." What, you want me to ship you the hard drive? All you really need are identical bits of information.
Oh, crap, I defragged my hard drive. Guess I don't have the "original copy" anymore after all.
Do you have any examples? And we're not talking about apps which replicate core functionality, call private APIs, or do a bunch of stuff that is forbidden by the developer agreement ...
Yup. Allowing Flash-written apps is just encouraging even more shovelware to get into the App Store. You can argue about the benefits of having an open market, but that is categorically not what the App Store is. If you want an open market, you can write for Android.
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.
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".
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...
>> 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?
Apple doesn't want 3rd party "compilers". That's what those lines in section 3.3.1 means...
“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.