Steve Jobs Weighs In On iPhone Programming Language Mandate
Dotnaught writes "Greg Slepak, founder of software company Tao Effect, wrote Apple CEO Steve Jobs to complain about Apple's mandate that iPhone applications be originally written in C/C++/Objective-C. Job's response was to endorse a post by John Gruber on the Daring Fireball blog. Jobs called it 'very insightful,' suggesting Gruber's prediction that third-party iPhone development tools are out might be right. Jobs sent a second reply that also doesn't bode well for third-party iPhone development tools: 'We've been there before, and intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform.'"
By restricting the use of abstraction layers, they want to make devs choose between writing their app for the iPhone or for Android, it would seem (or, of course, writing it twice).
Of course, the real choice is "write for iPhone, or write for every other platform". I hope developers are bright enough to see where this is going.
# cat
Damn, my RAM is full of llamas.
As if the Microsoft monopoly wasn't bad enough in the 90's, now we get a modern-day Apple one that makes Microsoft pale in comparison. As Apple gains market share (and they are), this type of attitude is 180 degrees away from where development should be heading.
Just like the kid in the neighborhood who owns the ball determines the rules of the game.
You don't like it that way? The solution is simple:
Don't play in that game, and . . .
. . . find a different ball and game that has rules that you like.
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
I read you post three times but I could see no facts, examples, anecdotes, anything. Just words.
Flash supports multitouch and has access to accelerometer data, GPS info and so on, so what "new features" don't fit well with the medium?
Semicomplex games not good? There are so many games in flash, some of them excellent, that isn't even funny. Quake has been ported to Flash, as well as Prince of Persia, just to name two classics, I could give many more examples.
HD Fullscreen video works great in Flash 10.1 RC
Compile to C is banned. The policy is not a technical requirement, it's a contract. You can't get access to the Apple App Store without agreeing not to use intermediate layers. If your code is created in something other than Objective C, C or C++, you're in violation of that agreement, even if at some point all of it is represented in C code. Steve Jobs is a benevolent dictator and he has just extended his reach into your toolkit. (Captcha: soviet, how fitting)
Most geeks don't, at least when it comes to the iphone. However, for most of the population, the requirements are different. They are not worried about "openness" (or Linux would have a much larger market share) but want something with a slick UI and is easy to use.
Speaking as someone who has to deal with 64 bit flash on linux and has had to deal with all manner of MS enforced formats on the the mac, I completely and utterly agree with this part. Apps running using native platform tools do fairly well, cross-platform apps suck a lot of the time. You windows users have seen this too -- itunes, quicktime and safari are dogs on windows because they had to import all their own libraries. On Apple machines these are lighweight apps that are fast. On windows it just doesn't work as well. And let's face it, as nice as open software is, working well is what sells units, ideology is secondary.
Gentlemen! You can't fight in here, this is the war room!
intermediate layers between the platform and the developer ultimately produces sub-standard apps
Right. That's why all those games built with engines and level editors and scripting tools always suck. C'mon apple. You have to allow unity. You can't want games but require everyone to make them from scratch.
Afraid that cool unity game will show up on pc, wii, xbox, android, Mac, myspace? It'll be just like the 90's when the pc was gaming heaven and mac users got to play marathon for 11 years.
Keep in mind that actual Flash apps written by CS5 beta testers have been approved in Apple's app store in the past as well as many games written with Unity3D, so it's not like performance is a problem.
Since every app is checked against objective (and subjective) criterias, it would have been OK to just reject poorly written applications.
Forcing me to use a specific programming language is insane. Imagine Microsoft demanding all windows apps to be written only in C# and compiled only with Visual Studio. It would be an outrage. But hey, it's Steve Jobs, the Big Brother himself, and he knows what's best for us, right?
Also, the timing was devious - on Friday, just before the Monday's official release of Adobe's CS5, effectively giving them no time to react. I was never a big fan of Adobe (especially before the Macromedia acquisition - their corporate culture started to change afterwards) but this is simply Steve Jobs being a big dick.
Finally, I know that many /.-ers are against Flash. Keep in mind however that this move goes well beyond Flash, affecting other tools and frameworks. If successful, this move will lead to more and more closed ecosystems (from other vendors as well). Today's Apple makes Microsoft look like saints.
It's horrible. I'd like my framework methods to b less than 30 characters long, please. Sorry to promote MS here, but I happen to like method names like OnInit and OnLoad.
So those reasons (and the MVC pattern) are the strongest you have to think that Cocoa is "god-awful"?
And none of that was meant for flash. It was meant to be a way to provide animated effects to a website. It wasn't meant to be the entire website (many, many issues there to include no ability to deep link). Just because you can do something doesn't mean you should. Phones aren't gaming consoles. Yet they are used as one now. Does that make games a good fit for phones? No, it just means you can do it. I didn't say the games weren't good. I said they aren't a good fit for the medium (which is poorly supported on any non-Windows platform).
All I see is you making my point for me. "Flash supports this and flash supports that." Big whoop. That's like my above example of the phone as a gaming platform. Sure you can play games on it, but seriously. Why would you? Controls are a pain (and really not any better with full qwerty keyboards) and the screen size, even for something like the iPhone or Android, is TINY. What is a phone good for? Making phone calls and storing numbers. Period. Just because phones have tried to expand past that doesn't make that a good decision, just a popular one.
I'm all about expanding and moving beyond limitations, but Flash, at it's base, is an over-glorified animation program just like the modern cell phone is at it's base an over-glorified communications device.
You want HD video? Use a proper video codec. You want to play games? Use a proper platform (PC or dedicated console). You want some cute animations that turn into viral memes? Use Flash all you want. Want to make phone calls from anywhere? Get a cell phone.
"There is a way that seems right to a man, but its end is the way of death." Proverbs 16:25 (NKJV)
Don't Blink. Blink and you're dead. Don't turn your back. Don't look away. And don't Blink. Good Luck.
iPhone developers are up in arms at Apple requiring them to use only Apple toolkits, sacrifice a Windows developer at their local Apple Shop every Sunday and maintain an altar to Steve Jobs in their homes. And eat a bug.
Apple is famous for its rigid control over its devices, in its quest to maintain user quality. Developers have worked under increasing restrictions in their attempts to provide quality applications for the iPhone such as I Am Rich, Magic 8 Ball and iFart.
"Not a big deal," said Mr Jobs in a personal email. "Cross-platform development leads to a worse user experience every time. Also, the video of you eating the bug has to be H.264 QuickTime or your app is out. Extra points for cockroaches."
"This clause shows a fundamental lack of understanding of the creative freedom developers need," said iPhone developer Greg Slepak. "Software is an infinitely malleable creation of pure thought. Toolkits, languages and frameworks are only a way to develop something people will want. It's like telling Rembrandt what brand of brushes he's allowed to use."
He paused to chow down on a palmetto bug for his MacBook's camera. "I'll tell you, a lot of iPhone developers are seriously considering Android, just as soon as Google develops a suitably exploitable stream of mindless thralls that will generate us a gushing torrent of money."
"Thanks for the video, Greg," said Mr Jobs, "but we've just added section 3.3.1.a: 'In particular, when Greg Slepak submits an application, the bucket of cockroaches in the video have to be Apple-branded and genetically assembled in Cupertino.' So we've rejected your application, cancelled your membership and zeroed your account.
"Of course, you're free to apply again. Or not, if you don't want a goddamn dumptruck full of money backed up to your house. It's a free country."
http://rocknerd.co.uk
I don't understand why they keep sticking those damn intermediate layers in there. Real programmers write write in assembly language. If you want real performance that is what you need to be doing instead of using foofy object-oriented programming tools and junk like that. In my experience those other things just add more bugs and no real value. If you want information an old-fashioned text-only display can provide it. Remove all the layers please.
Coding Blog
From http://theflashblog.com/?p=1641
Its all fun and games until someone loses an eye... then its just fun.
1. Syntax is something subjective, and actually the way methods are invoked through messages is one of the key strengths of Obj-C that makes it so flexible without requiring all the complexity and pitfalls of of C++
2. What do you not like about the way you have to define methods? You basically declare the method name and its signature and that's it. Which is like every other programming language
3. How is XCode 'primitive'. It's actually the only graphical IDE that I've ever used and found to be somewhat tolerable. In my day-to-day job I use strictly gvim and the CLI, because no IDE I know of has enough positives to counter the many negatives that any IDE will have compared to having a powerful editor like gvim. But XCode comes pretty close, closer than anything I've used before. Calling it primitive makes no sense to me whatsoever
4. There is no garbage collection in iPhone OS because it would be a bad choice for memory-constrained applications. You use the retain/release memory model, optionally with user-defined autorelease pools to mimic garbage collection while still having full control over object lifetime. Much like using smart pointers in C++.
5. What is 'weird' about the way properties are defined? Just like your 'the way methods are defined is weird'-argument, your statement is basically void. Declaring a property basically involves declaring its name, type, its attributes and optionally any accessor methods. How is this weird and how would you expect this to work without sacrificing features like atomicity and automatic retain/release semantics?
6. What di you mean 'the IDE is not integrated'? Integrated with what? The debugger is integrated, the editor is integrated, the build control is integrated, the interface builder is integrated, the instruments tools are integrated, I really don't get what you're talking about?
The problem with console to PC ports is that consoles are designed with the limitations of game controllers in mind and so therefore are often "simplified" compared to native PC titles. That isn't what this is about. This is about porting between the different touch based smart phones which are all so similar in capability that it is like porting between Windows, Linux, or OSX (which works fine if you don't target a propriety platform to begin with). This is solely about Steve Jobs trying to turn his beachhead in the mobile market into an occupation.
========
CINC, 4th Penguin Legion
We’ve been there before, and intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform.” -- Apple
Is Apple actually calling iTunes for Windows for a sub-standard app? That perhaps should be banned from the platform? Apple themselves are using non-native API intermediate layers such as CoreFoundation and CoreGraphics in their implementation of iTunes for Windows.
And feel free to use your freedom of speech to argue against a policy you don't agree with, that you don't want to catch on more widely, and that you hope will be changed if enough outcry is raised.
Isn't Apple being a hypocrite here? Apple allows apps written in C/C++ but those, when designed correctly, can be ported to/from another supporting platform (ie: Android) in a matter of days. Furthermore Apple has a web browser and has been touting support for web apps and HTML5, yet the web is a definition of cross-platform content. There are plenty of tools and frameworks in web development (ie: Dreamweaver) that allow you to make websites easily. Apple allows those websites.
It seems it comes down to a screw Adobe move.
Except that Apple ships a highly optimised H.264 CODEC as part of OS X. If they used that, instead of shipping their own, then it would be much faster. If you grab an H.264 movie and play it in QuickTime on a Mac, the CPU load is under half that of playing it in Flash. It's not that Apple doesn't provide APIs for doing it, it's that Apple doesn't provide APIs for doing it the way Adobe wants to do it, which is an entirely different complaint.
I am TheRaven on Soylent News
Basically, hogwash. Having one language and one tool chain leads to fewer methods of being able to solve problems, and reduces the utility of your computer system. Now instead of being able to use a .5mm slot head screwdriver, all I have a big ol' sledge hammer. There really is no "computer science" basis for Apple's decision. There is a marketing reason or two, though:
1. Eliminate cross platform development tools and lock in developers and users to your platform.
2. Ensure you can always put out better stuff than independent software vendors by pulling a Microsoft and adding new (undocumented or unreleased) libraries to the OS and then using the libraries to produce more functional, better integrated software than ISVs can.
3. It's easy to kill off competition or those doing things you don't like with the platform by introducing incompatibilities in system libraries.
The rest of your post, while interesting is basically speculating that Apple will create some whiz-bang complier that will solve all of the remaining big problems in computer science. I wish Apple luck, and I hope they solve at least two or three of the big challenges.
A note on languages: Objective-C does not make for instant parallelism as you still have to fix the giant game of whack-a-mole that goes on with shared memory and have a more effective way of communication between processes/threads/whatever you want to call 'em. Providing some metadata might help, but it's no magic bullet.
-- $G
The Gruber blog highlights the Mac Kindle app built with the QT toolkit as an example of problems of cross platform libraries causing bad user experiences. He seems quite rankled by the OK button being not quite the right size and text ever so slightly clipped. This would appear to be the fault of a lazy programmer rather than "evil QT".
I don't remember having looked closely at the OSX style guidelines but my few QT applications have the approved order of "OK" and "Cancel" and all of my elements are properly aligned and not clipped. I would hazard a guess that the native design tools do not make it impossible to make a badly designed or non-conformant GUI.
I think Jobs has erred in highlighting 3rd party programming tools as the source of problems based on Gruber's pedanticism. The only great apps that are native have been written by the big companies that can afford to spend the extra effort on a single platform.
We all know that in the future Adobe will give in, Flash will be "enhanced" especially for Apple products and it will immediately become absolutely vital for web browsing according to the Job's reality distortion field.
Does a single thing you said explain why they won't allow frameworks which compile to Objective-C?
That's where I'm having trouble. I can see a technical reason to force people to use a single language, or at least a single runtime representation, in the same way that, say, the new Windows Mobile forces you to use .NET. I don't see any technical reason for them to care what language you originally use to produce it.
Don't thank God, thank a doctor!
So how long until Apple creates an App Store for OS X, and forces Developers to only write Apps in Objective C, under NDA?
I've worked for a company that produced a fully automated Java-to-Obj-C and Java-to-Brew translator and we've place app in the AppStore's top ten several times.
We take the Java bytecode and generate and intermediate representation that can then be used to re-create, say, Objective-C or C++ (BREW) code (once again: we've put several apps in the top ten on the AppStore). Of course we were also shipping on BREW and Android.
How can they detect the process is automated?
I mean, heck... We generate frakking Objective-c SOURCE CODE.
What can they dew? Ask us to hand over the source code and see that it hasn't been typed by a thousand monkeys?
Having one language, so long as it's turing-complete, shouldn't give you fewer methods to solve a problem. Now, if you're locked into a single language it would probably make it difficult to find a pre-existing library that might assist you.
I agree that there's no computer science basis for Apple's decision, but then again, Apple doesn't make their decisions based on computer science, they base them on business.
Learn something new.
Now what might be the resource use case improvement here? I'll start the speculation with this thought and leave it to others to fill in more.
No offence, but this does smack being the thin end of a typical wedge of rationalisation that ends up justifying and "explaining" Apple's behaviour in the absense of any explanation from them.
While I'm not accusing you (specifically) of being a fanboy necessarily, Apple's secretive nature generally benefits them when combined with their rather partisan fanbase. Say nothing concrete that can be seized upon, and let people speculate, rationalise and justify your marketing decisions.
It's up to Apple to explain- or not- the reasoning behind what they do; if the latter, that's their choice, but we're not obliged to give them the benefit of the doubt. Sorry, but I don't believe the reasons behind the decision were technical, and I'm not going to buy a third-party's speculation masquerading as explanation.
"Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
And what's more, the way Adobe wants to do it is "in Flash". They could just use Apple's decoder, but the whole point is to keep all web video playing in Flash so that developers need to keep buying new versions of Flash.
What's more, if you read Adobe's on statements on the issue, you eventually realize that a lot of their performance problems come down to this: Apple has two APIs, Carbon and Cocoa. Carbon is basically a depreciated legacy API that exists in OSX to make it easier to allow developers to port OS9 applications to OSX, but Adobe didn't want to rewrite their applications so they kept using the depreciated API. Apple wasn't adding new features to Carbon and so it never got hardware acceleration support for video decoding, which meant that Adobe's applications didn't have access to hardware acceleration support.
Adobe is trying to blame Apple, but their real complaint against Apple is, "In the 10 years that OSX has been out, we never bothered to rewrite their plugin to stop using the depreciate OS9 APIs.
Yes, I don't need Cider.
But I really should have it!
Apps inside Cider wrappers were so awesome!
*please note sarcasm, and please someone go outside and find whoever thought Cider was acceptable performance on OS X and beat them with a sock full of oranges.
You have been able to deep link into Flash for years. And honestly, if you think touchscreen phones are over glorified, I'm not sure why you're involving yourself in this debate at all.
It's like you brought a big swath of your lawn up in here, laid it down, and asked everyone to get off of it.
meep
Mac users had to settle for being locked out, shit on, and ignored for many, many years. Suddenly the servant is the master and everyone's whining about how Adobe isn't allowed to continue to foist their buggy plug in and dev tools on us anymore. Grow up. Compete. Make a decent HTML 5 animation editor that doesn't suck like all the other Mac software you've put out in the last 10 years.
"The world is a construct of forceful imagination. Those who don't know walk around in the reailties of those who do"
I trust you do all of your programming in BrainFuck right?
Face it, even if any Turing complete language can do what any other Turing complete language can do, sometimes there are write languages for the job, and sometimes there are wrong languages for the job.
"linux is just DOS with a UNIX like syntax" -- Galactic Dominator (944134)