7 ms·
Why Apple Changed Section 3.3.1
- tumult 17y agoGruber 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 17y agoThere 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 17y agoAnything 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 17y agoAnd you think Apple will institute a policy that kills off 100% of the good games on their platform?
- tumult 17y agoThey already did. Now they get to choose when to apply it, arbitrarily.
- barrkel 17y agoIt appears that the lawyers want to, yes.
- doki_pen 17y agoAnd 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"?
- flyosity 17y agoQuartz 2D is Apple's C-based graphics drawing framework, mentioning that is irrelevant here. I still haven't seen anything specifically mentioned that's not written in C. You mentioned using Lisp & Haskell to write iPhone apps, which ones are those? Who else is doing this and which apps have they published?
- jrockway 17y agoIf Microsoft said "No Windows 7 Mobile apps that aren't C++ or C#" we'd just shrug, and say, "well, that's Microsoft for you." Microsoft would never do this. They are the "developers, developers, developers" company, after all. They even invest money in programming language research and actually make the academic stuff production capable. Apple just adds half-baked features to dead languages. "Yay."
- tumult 17y agoYou're right, but I had already removed that paragraph before you commented.
- joubert 17y agoI 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. Have you?
- tumult 17y agoYes.
- patgarner 17y agoWe should just take your word for it?
- tumult 17y agoIf you don't want to, you can just ignore my comment.
- joubert 17y agoCan you probably, or have you actually build in shorter time (or did you really mean apps that run faster) apps that are more stable than that created by a 10-man strong Obj-C team for the iPhone? If so, would you say it was a function of the quality of the other programmers, or could it be distilled to purely tools? Genuine interest (since I love languages for their own sake and the expressiveness they allow): what tools + languages did you use?
- potatolicious 17y ago> "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 17y ago"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?
- acdha 17y agoThere are enough ugly apps on the app store that I find this argument unconvincing even if you accept the premise that this is reasonably Apple's job rather than customers choosing what to buy.
- Zak 17y agoSo 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 17y agoNot 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.
- epochwolf 17y agoDidn't flash become a defacto standard?
- greendestiny 17y agoThat's a pretty big stretch. Its a standard because it allows people to do things in web browsers that they can't do otherwise. Any cross platform framework can only offer a subset of features to the developer through native toolkits. And any non-cross platform framework will always be at the hardware developers mercy. Apple is completely mistaken to be threatened by frameworks.
- sofal 17y agoIf 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.
- viraptor 17y agoIsn'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 17y agoThose were my thoughts as well, how can they know if you cross-compiled?
- wvenable 17y agoIt'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 17y agoAnd there's a possibility that you as a developer might be banned by Apple.
- deleted 17y ago[deleted]
- tumult 17y agoYeah, but you agreed to a contract, and their license, which says not to do it.
- ttrashh 17y ago> "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 17y agoThe 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-announcement-and-our-commitment-to-you.html/comment-page-1#comment-1251 http://developer.appcelerator.com/blog/2010/04/iphone-os-4-0...
- wvenable 17y agoThis 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 17y agoThat's Objective C and C++. You can't program in those for Windows, they are pretty much Apple languages despite things like gnustep.
- techsupporter 17y agoYou can't program in C++ for Windows? What in the world am I doing with all these Visual C++ books, then?
- blub 17y ago"Objective C and C++" is "Objective C and Objective C++".
- pg 17y agoiPhone 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 17y ago> 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 17y agoIs 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.
- elblanco 17y agoI'm not sure that the "quality" of the majority of the apps in the app store is very high anyway. There are certainly high quality apps, and I'd bet dollars to donuts that they are written in one of the approved languages. But the reason the iPhone became popular is not because there was a very high quality app version of wolfram alpha or a gold game, but because there were reasonably good quality apps (at a good price) that scratched relatively small, (dare I say it?) long tail, itches. You can be relatively sure as a new iPhone owner that you'll be able to find your fishing lure guide app, or your app to order emergency socks or whatever. I'm willing to bet that lots of those apps were not written in one of the approved national languages of the Union of Soviet Apple Orchards.
- jrockway 17y agoIs 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 17y agoYes, he wrote Markdown. http://daringfireball.net/projects/markdown/ http://daringfireball.net/projects/markdown/
- jrockway 17y agoOh 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 17y agoHas 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 17y agoHe'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.
- smackfu 17y agoRight. Sometimes I get very annoyed at his posts for being one-sided, but it's only me to blame: it's his blog and I'm just visiting it.
- aufreak3 17y agoPeople - 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 17y agoRead again -- it says you must write the application, originally, in Objective-C, C, C++, or JavaScript.
- aufreak3 17y agoBut 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 17y agoThere 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 17y agoI 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 :)
- thought_alarm 17y agoI'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.
- kungfooey 17y agoAs 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 17y agoOnce you have fans, they'll instinctively defend you. That doesn't mean you can't lose your fans.
- shawndrost 17y ago"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.
- mcantelon 17y agoGruber's a pretty good apologist.
- sjs 17y agoHe completely failed to acknowledge a big issue for developers and users of other mobile platforms. They miss out on apps in a world where there is a leading platform in a monopoly position, and nobody can use cross-platform toolkits to develop for that platform. (I don't know why Gruber was compelled to invent the term "meta-platform", but oh well.) Ask any Linux or OS X user - except Gruber apparently; non-native apps might suck, but they are better than nothing if they're the only one of their class on your platform. Most people prefer native apps on any platform, that's why Apple had to change Safari on Windows to better match the Windows look & feel. But if Safari were the only web browser for your platform you would use it no matter what. Even with cross-platform toolkits we Linux & OS X folks don't get quite the # of apps there are for Windows (unix software doesn't count for most people ;-). I'm apologise in advance as I strongly dislike the term, but Gruber is a fanboy. You have to keep that in mind and know to bring a sack of salt to daringfireball.net. That said he gets enough right on the money to keep reading. Just don't forget the salt!
- neonfunk 17y ago"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 17y agoWho 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 17y agoI 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.
- greendestiny 17y agoGruber 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.
- joegaudet 17y agoLet'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 17y agoI sincerely hope that's not the case, but I fear it might be.
- peperg 17y agoWhy 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.
- doki_pen 17y agoWhy 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.
- zppx 17y agoHere: http://news.ycombinator.com/item?id=1252428 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.