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.
...if it hadn't been for Flash being such an inefficient, CPU hogging slob of software.
As Jobs can do no wrong, I suggest that he load some more requirements and restrictions on iPhone developers.. oh, and maybe someone can let me know, can Apple remotely delete apps off iPhones? If not, they should get on that. Customers *love* that.
How we know is more important than what we know.
I honestly don't understand why Geeks put up with this and fall for the marketing propaganda. If all the world were Apple we'd not be able to hack a thing.
These posts express my own personal views, not those of my employer
And how about the old trick of a meta-language that generate C source code?
How about transcompilers? They do not necessarily introduce new layers. Anyway i think its up to the users to evalute which applications are the best.
With decisions like this, I tend to give the benefit of the doubt and assume good intent. Given that, is it possible that Apple just wants the best thing for their platform? Yes, some of the AppStore policies are draconian and not so dev-friendly, so it's hard to assume that here. But, it could be said that the iPhone got so far ahead because of its intuitive interface, stable apps, and overall good quality. Given that, wouldn't ratcheting the list of app frameworks down to the native ones be the best way to start with great apps and that consistent iPhone experience?
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!
Saw some post from Miguel that monotouch can be used to develop apps for iPhone. So what happens to that now?
Objective C is so off putting that I didn't even bother looking into frameworks. I just can't see myself programming in the language that feels so 80s (smalltalk loosely glued on top of C with a bunch of macros). And the method call syntax doesn't feel natural to a C programmer.
Projects like MacRuby look promising, but honestly I would never bother developing for the platform. Especially not now.
As the island of our knowledge grows, so does the shore of our ignorance.
IMHO the existence of Firefox has significantly impacted vendor support for Safari.
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"?
Of course, nto that dev base will die. they will just code for other platforms.
Read radical news here
And the economics of a closed fully controlled platform, have been in Steve's dreams since the seventies. Luckily we all know it will ultimately utterly fail, as so many closed platforms in the past. It will take a while. It might be hard for hackers such as us, but we will prevail! Sad to see Apple go down like this, was a big fan, contributor, promotor, book writer, journalist and so on for years.
I am really disappointed in Steve. At least Google tries a little bit to 'do no evil', Steve makes beautiful things, but with a very bitter taste! Facebook group: iPad is an attack on our freedom
Don't play in that game, and . . .
. . . find a different ball and game that has rules that you like.
Exactly.
'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.'
'We've been there before, and intermediate layers between the platform and the developer ultimately produces functionality that we do not think you need, we do not want you to have, and hinders our ability to make money off of you in our official app store.'
There, fixed it for you.
I want a new quote. One that won't spill. One that don't cost too much. Or come in a pill.
intermediate layers between the platform and the developer ultimately produces sub-standard apps and hinders the progress of the platform.
I find that intermediate layers such as Python tend to produce above-standard apps due to the developers (ie. me) not having to implement every little detail manually. Number of Bugs ~ k * Amount of Code, well known fact.
I happen to like Objective-C and the Cocoa framework. It's method names are quite descriptive and don't leave much guesswork on what they do. Incidentally, there are short method names too for things that are easy to describe in short names. You don't have to use the MVC pattern if you don't want to. It's just more convenient to work with API the way it is designed to be used.
Go to hell. (note to self: change sig, no longer valid)
Don't Blink. Blink and you're dead. Don't turn your back. Don't look away. And don't Blink. Good Luck.
Since Apple reviews every app that goes into the App Store, Apple could simply rate down apps that are not up to the quality expected for the iPhone platform. This would give more incentive to the developers to improve their apps to Apple's standards.
For some reason, I feel compelled to provide following link:
http://www.armtutorial.com/
I know very little about iPhone development, but one question comes to mind when reading this article.
Are their not other languages that do, or other that could be made in the future, that compile directly to iPhone code that are not one of the 3 listed?
and do not use "intermediate layers between the platform and the developer".
If that was their only concern then when also restrict the language?
Troll is not a replacement for I disagree.
Cider and all those inefficient Windows-to-Mac converters/emulators that so-called game companies use to "port" their games to Mac OS X.
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 expect it is rather the type of programmer that needs intermediate layers that is the issue. Face it, people that can create complex applications (e.g. ones with a GUI) with C/C++/Obj C know what they are doing, because if they do not, they fail pretty quickly. With other languages, it is not so clear cut. The Java crowd, for example, has some good programmers, but a lot of terrible ones. The reason is that you can get an app with terrible structure and design working in Java, while it almost impossible in C/C++/ObjC. On an even higher layer, not admitting the Flash people is really the only sensible thing to do. Closed platform with an atrocious security history, "programmers" that are an insult to the profession and are basically web designers that do not understand the web, etc..
Now admitting only good programmers in more abstract languages would be good too, but how to recognize them? By requiring use of a tool that makes the bad ones obvious, you can actually do it with reasonable reliability and you do not need to admit what is really your agenda. Of course Apple cannot come out and insult large numbers of people, after all quite a few of them are (potential) customers. But I believe that is what is really behind this move.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Although I expect Jobs has an iPhone, I'm sure this is supposed to apply to other people's iPhones too. I doubt any one cares what rules he applies to apps on his iPhone.
It is Apple's appstore though and they can choose what they sell in it.
Hear hear!
xxxxViewController is only a suggestion... you don't really have to use it. Besides, how restrictive is "model and controller" in one class and view in another representation?
Please don't send a Word document when a text file will do the job.
No. There is also how you invoke methods, and how you define methods. And having to use header files. The IDE is primitive. There's no garbage collection for iPhone apps. The way properties are defined is weird. There are too many modifiers all over the place. The IDE isn't actually all that integrated.
I can imagine liking it if I started out using that technology and I just never saw anything else that was out there, but I didn't start with Cocoa...
Adobe should develop a Objective C to ActionScript(Flash) cross-compiler. That way, iPad/iPhone Apps can be made to run on Android, Windows etc. phone platforms.
This space for rent.
I'm an ex C++ developer, who has worked in Javaland for the last 5 years, or J2EE or whatever the fuck they call it now. I don't see any benefit from GC apart from barely educated Javaschool (http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html) graduates writing bloated, slow and misguided code, resulting from their complete misunderstanding of the JVM and basic memory allocation.
I'll take boost's shared_ptr and OBJ-C's autorelease any day.
Please don't send a Word document when a text file will do the job.
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
Do you even have the slightest clue what you are talking about? First of all, the fact that you dislike Obj-C does not make it god-awful, in fact, there's lots of people who really like it, like myself. It has a lot of the strong points from both C and C++, and if you know how to use these two, you know why Obj-C has some clear advantages over both. Second, you are not required to program in Objective-C if you don't like it. You can use C, C++ if you like that better, or even Python if that's your thing. The only requirement is that you use Cocoa for the GUI, which is actually a great API. Third: what on earth are you on about MVC? What makes you think you are forced to use MVC for anything on the iPhone? You are free to go without controllers or models, to merge views and controller, to merge controllers and models, whatever suits your application. 9 out of 10 times the MVC pattern is perfectly suited for a typical iPhone application, which is why it has such a prominent place in the iPhone developer guides.
It's sad to see that you actually got modded +3 insightful right now. I thought this was supposed to be a forum for technically-inclined people who know what the fuck they are talking about, instead of a flamebait trolling forum where you can dump your misinformed opinions just because you don't like the subject of the article or its products.
Please explain how Objective C is god-awful. I actually find it a pleasure to use and find the Cocoa API's way more intuitive then the MFC ones. Please don't bring up C# and .Net. I can't stand THAT god-awful hack of a language and framework. I don't want to include, or make my users download such a large install just to to run a 1mb application.
I've actually found the intellisense in Visual Studio fails on me way more often then in Xcode. Sure, in past versions intellisense in Xcode was horrible. But after doing a project in Visual Studio 2008 recently, I just gave up on the intellisense and kept the MFC documentation open on a second monitor. (Yes, it may be better in VS 2010, but that JUST came out. I still had issues with it occasionally and had to keep resetting it). Not to mention I find Apple's documentation and samples way better then Microsofts.
Also, because Objective-C is just straight C with object oriented extensions (message passing), I can include just about ANY C library I want. I'm able to take libraries I've written for apps on Linux/Unix and link to them for iPhone apps (statically of course, but I can still use them as is).
There are a number of emulators on the App Store such as the C64 one and IIRC some Genesis stuff (emulators that are OK under the previous rules because they don't have any way for the user to control the code being run by the emulator). Will such things be removed from the App Store by Apple?
doesnt this in some way breach antitrust laws? i mean the fact remains it is the most used platform currently available, and it keeps getting locked down more and more to keep out certain companies, i know its not exactly open source and all, but id say give it 2 or 3 years at this rate and apple will be in the same antitrust boat as M$...
-Noc
All modern games are written to game engines or game libraries that this rule would (does) exclude. The unreal engine, the PopCap engine and SDL all call the iPhone through an abstraction layer, which is not allowed. But, as has been pointed out elsewhere, in a strict interpretation, designing your game in sudo code is also not allowed.
Then use C or C++ dummy!
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 article summary misinterprets the core of what Gruber was arguing. He was speculating Apple didn't care so much about languages, it was more cross-platform frameworks they were after - so the subtle distinction is that systems that either converted other languages to objective-c or targeted the platform directly might be allowed. For instance, Mono for the iPhone lets you build applications in C#, but with bindings into the Cocoa frameworks.
Unity (popular game engine) might seem like a grey area, but if Apples motivation is quality of applications you simply cannot ban game engines, sine everyone having to write an engine from scratch would lower, not raise, overall quality. If for no other reeason than the pull of the game industry game engines should be OK.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Restricting development tools would would hinder the progress of the platform...
If Google really cared they would fix Android Chrome to reflow text, instead of discriminating
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
To develop for the iphone, you're supposed to develop on a mac OS that requires a license and the license (money) states the OS has to run on mac hardware (more money). If they allow 3rd party dev tools/langauges, then they lose out on OS and hardware sales.
An interesting statistic that also kind of prove your point is the salary of the average VB.NET programmer vs C# programmer.
The two languages as of the current version are almost at feature parity (in the next version coming out in a few days, they are are feature parity aside for like, 2 things), so for all practical purpose, they are the same except one uses IF/End IF and the other uses curly braces.
However, from a demographic point of view, most VB.NET programmers had a VB6 background (VB6 being much higher level/RAD than the .NET platform), while C# devs mostly came from Java/C++.
End result, the average C# programmer in all the studies/surveys/etc done -always- ends up being paid more. That is even though you can do the -same- thing in both languages, and they run on the same platform and framework.
Why? It has nothing to do with the language itself, its the demographic. With all the flak it got, VB6 was an excellent environment, its just that people who used it sucked (since it was so easy), and they still suck once they move to VB.NET.
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.
There will be a lot of ink spilled here condemning apple, or explaining why apple is "alllowed" to do this. (i.e. blink! don't blink!) There will also people explaining why this a good bussiness move or good for developers or good for consumers.
So this post is here to start a thread on technical speculation on why apple might be doing this from a point of view of computer science and design strategy. For example, we recently witnesses a more nuanced form of multi-tasking that divides the use cases into ones that give better resource management hints to the OS than the carte blance form. likewise we are seeing memory management for apps being sandboxed and encrypted. clearly these are all about evolving the OS to better control it's resources.
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. Suppose that if you were thinking ahead to things like ubiquitous multi-processing and beeing able to carbon freeze applications for instant re-starts. It sure would be nice to have the operating system be able to make code elements re-entrant or find the finest grained atomic segements or know what non-threaded subroutines could actually be done threaded and out of order without the programmers actually having to think about this when they wrote code.
One way you could approach this is to use a single compiler or at least a single memory model and calling convention. then either the compiler itself could include hinting, or maybe the OS could even figure it out after the fact.
I note you'd not be able to do this if for example, the original code was coverted direct to assembly without obeying certain rules. (e.g. just imagine self modifying code).
I note that Objective-C is more than pure syntactic sugar on C. unlike say c++ it does not use a compile-time generaged look up table for method resolution. instead objects get messages sent to a standard receiver in the object and this receiver resolves the method at run time. (it does not even have to respond to the message!). Objective-C also bases it's function argument prototype based polymorphism in a much more strict way than C++ so there's in prinicple more information content about what is being passed. I don't want to emphasize any one thing too much. perhaps something I said is technically wrong. My point is that if you use a consistent model that takes advantage of the extra abstraction layers in how function calls occur and how memory is used then potentionally one can do finer grained parallelism automagically.
likewise, carbon freezing applications for instant restarts may become more stable as well if you have better control over what is mutable and what is shared between threads.
just a thought that this could be a purely technical goal to move operating systems and code development into the massively parallel multi-core future.
if you've followed the Grand central innovation then you can see apple is indeed thinking about making dispatch more hintable by developers.
Some drink at the fountain of knowledge. Others just gargle.
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.
Sorry to promote MS here, but I happen to like method names like OnInit and OnLoad.
What, no PrestoChangoSelector? :-)
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
The languages don't have features that tend to make bad programmers. I have heard arguments that features saving a programmer from things like tracking the lifetime of data structures beyond the scope of its usefulness makes them lazy, but those arguments fail to realize those bad developers didn't do that correctly and just wrote bad C programs. They were still lazy, and the ones to suffer were the users of their programmers.
What makes flash developers or java developers bad as a rule of thumb is they represent the popular languages for large scopes of the industry at a time when the industry is appealing. Namely, the legacy of the 'dot-com' days are still with us. In the late-1990s to 2000 or so, programming was perceived as a relatively accessible get-rich-quick industry. In that day, the thought was for non-web programming, Java was *the* language, and for Web programming, Flash was the important technology to incorporate. Masses of people with little to not talent or inherent interest in the industry latched on and became armies of unskilled labor with only Java or Flash barely under their belt. The 'Web 2.0' craze resurrected a fair amount of the Flash people (despite all the successful Web 2.0 endeavors having all their good stuff in server-side components or javascript and involving little to no flash).
Either way, I'm fairly certain Apple's agenda is not as benevolent as you want to believe. If they didn't want crappy apps, they already have a mechanism for precluding that result. What they do see is Android rapidly closing on (by some metrics beating) their share. They see these cross-platform environments allowing iPhone developers to start targeting Android at low incremental cost. To try to mitigate the flow of Android apps, they are trying to raise the cost of development so that hopefully some development places can't avoid to do both and presuming that they will only choose Apple if they can't afford both. They want a captive development audience without having to pay for it themselves, like a lot of companies do with open source software but with a much tighter control on the results.
I personally think this is the beginning of the end for iPhone as it is today. iPhone is not that far ahead of Android in the market, so ignoring Android represents a large missed opportunity for developers. Also, they see exactly the sort of relationship they have with Apple and see more control over their own destiny with Android. Even if they can only afford one and iPhone strictly speaking represents more revenue opportunity in the short term, I predict many shops selecting Android simply to help shift the market in the direction that benefits them more long term.
All this said, I like WebOS the best. I wish Android had been developed with the multitasking interface and SDL interface of WebOS (just as I wish Palm had been sane about camera access for SDL). I personally like Palm's platform for the moment (pretty open out of desperation probably) and advocate it, but it seems clear that Android is going to be the premiere platform in the market.
XML is like violence. If it doesn't solve the problem, use more.
Interesting. Serves to show that programming is still about the people doing it and the language is quite secondary. Something management obviously does not want to hear.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
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.
15 years ago, the hardware and OS companies catered to developers and consumers, which is why windows was so dominant in the 90s, early 00s.
Today, these companies cater to content publishers and consumers, which is why Apple is becoming so powerful now.
Thus far, end users have gotten what they want (without really understanding what that is).
Developers--with a shrinking influence in the commercial software market--will always be influencial with GNU/Linux.
Why are devs so surprised that their zenith has passed? This happens to professionals in nearly all professions (look how physicians have lost their influence to businessmen in the medical field).
The job of creative people is to invent and to assemble a whole that's worth more than the sum of its parts. Then it is possible for a manufacturer to buy those parts for $C, put them together in a pattern, and get something that is worth $C + $X. What happens next is indeterminate. In a perfect buyer's market, the price is forced down to $C, the seller makes no profit, and the buyer is enriched by $X of extra value and is ecstatic. In a seller's market, the price is $C + $X and the buyer gets what he pays for, and is grudgingly satisfied but not thrilled.
The optimum social outcome is what maximizes the product $P times the number of units sold after other positive or negative societal effects are accounted for.
Now, by and large corporations seem to be greedy idiots who simply grab as much of the created value $P as possible. Lock-ins, bundling, bait-and-switch, misleading advertising, broken promises, preannouncements, monopolization--whatever it takes. They forget the costs of making their customers feel angry, or trapped, or betrayed, because they see it as a pure exercise of raw power, not a human transaction where fairness counts.
The problem in thinking about Apple is that Job is both wise and tasteful. He really _does_ care about the end-user's experience, in a way that other company's only give lip-service too. The very name Windows XP was supposed to stand for "customer experience," yet when Vista came along Microsoft was happy to collaborate with Intel and computer makers in marketing "Vista ready machines" that they all knew could never give buyers a good x-perience.
Jobs is willing to share more of the $X with customers. Apple products consistently have good fit and finish, they are nice, they are well-thought out, they work, and are almost free from the sort of errors that suggest that nobody ever tried some feature even once. (Current pet peeve: about 10% of the time, I cannot remove my USB drive from my Windows machine. It claims its in use but won't tell me who's using it. It says "close applications" but according to the Task Manager no applications are open. Eject does nothing. "Safely remove hardware" puts up a dialogue box saying it was waiting for the device to "stop" and never finishes. This has been true with XP forever, across multiple machines, across multiple USB sticks. Last week it happened on a brand new Windows 7 machine. I mean, what is this? Nobody at Microsoft uses USB drives? Nobody in Microsoft SQA has ever seen this? At no time in the past ten years, encompassing a supposed total OS rewrite and a major second release, did anyone ever fix it? This is some obscure problem that only affects me? Come on. Microsoft must know about it, they just don't care.)
It drive people batty that Job's high-handed dictatorial stance can result in very good products. But it does. Whether it's a good thing or not, is hard to say. Almost certainly not, and it's probably not sustainable--wise Emperor Steve Augustus will eventually be succeeded by Caligula. But while it lasts, let's acknowledge that it does produce awfully good results.
"How to Do Nothing," kids activities, back in print!
"Flash performs badly on Apples because Apple wants it to perform badly."
Really? Flash has performed badly on Mac for YEARS. Well before this whole battle for the mobile space. Vocal community complaints to Adobe fell on dead ears, it seems. I guess because they figured Mac had such a small market share on the web that they didn't need to put in serious effort to make it better.
What has Apple previously had to gain from Flash sucking? Nothing. They had plenty to lose though: The appeal of the Mac. At this point Apple has just taken it for granted that Adobe has zero interest in making Flash work well on their platform, and has committed themselves to pushing forward the web without it.
Now they've got an extremely popular mobile platform, iPhone OS. It's the number one platform for browsing the web on a phone. Adobe's woken-up and thought "Damn! We need to get in on this!", but it's far too late. They can say "We can change! Give us a chance! You're the one being evil!" all they want, but Steve Jobs has made up his mind and is giving them the cold shoulder.
Think of it like your previously dull ex-girlfriend, whom you ignored too much while you played with other girls, suddenly getting hot. You want her back, but she knows better than to hook-up with your unfaithful ass again.
Does it make you happy you're so strange?
I normally try and defend Apple, but this one has me feeling like... well, any true nerd will get the Blackadder reference in the title.
I kinda understand the "innocent explanation" for this - the Mac platform has had its share of half-assed "ports" that don't really follow Mac UI standards as well as development tools to produce such ports - but generally users and developers have eventually voted with their feet (anybody remember when Microsoft produced a Visual C++/MFC cross-compiler for Mac?) - something Adobe are risking with their current Mac offerings.
However, this could be achieved by setting UI and performance standards for apps, not the blunt instrument of dictating which programming language could be used and making it very difficult for developers to target multi-platform.
Of course - this is all Job's risk: even in the phone/tablet market, Apple only "dominates" certain narrowly defined sectors and doesn't enjoy the sort of near-total monopoly that MS enjoyed in its prime. If he decimates the iProduct developer community then its still possible for the market to show him the error of his ways.
Meanwhile, I'll repeat what I've said before: the future in mobile "Apps" might just be browser-based apps hosted by the "cloud" or on your home server which completely bypass the App store and these rules - so although the end result has to be in Javascript, you are free to use cross-compilers like this or this.
Right now, mobile internet is barely up to snuff for this, but once that improves it makes so much more sense in a world where you may have multiple mobile gadgets.
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
No matter what kind of video it is, on my Mac Flash uses nearly 10x the amount of CPU to play the same video clip as VLC.
Nokia was working on an iPhone version of the Qt framework. This would have allowed developers to develop on Windows, Linux, Mac OS, Symbian, Maemo and the iPhone using the same framework. Now, the new developer agreement has pretty much put a stop to all of that.
Apple apologists seem to have take taken over Slashdot.
How troll comments like yours, oozing with Steve Jobs semen coming out your ass, get modded +5, I will never know.
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!
I don't see the problem.
It's Apples playground and they make the rules. If you wanna play too you have to do what they say. Simple.
Personally I don't like the rules they have, so I don't develop for iPhone.
This policy made my next purchase decision for me. Hello HTC Incredible, good-bye iPhone 3Gs.
I love the way people compare an Apple monopoly to Micro$ofts. If Apple get big they must be evil (Strange no-one seems to apply that logic to Google though).
There is a massive and crucial difference between Apple and M$. M$ make products to make money. Thats how and why they design their products, how they refine them, market them. Every stage is about reducing costs and maximising profit. Apple makes excellent products, then they work out how best to make money from them.
Its such an old argument and it remains laughable to me at least. A couple of months after the original iPhone was launched, someone brought me one of the "iPhone Killer" alternatives that came out, telling me how much better it was. It had a touch screen, apps, better camera etc, etc. I had a look at it and tapped an app to see how it felt . It took nearly 30 seconds to activate the app and then proceeded to activate the wrong one. I didn't bother to look any further and handed it back. I literally saw the guy change his mind and observe 'defeat' in a single facial expression. Funny how I don't even recall what phone it was now. (Don't bother arguing, you've all seen that the ageing iPhone 3G still beats all the current generation of competition for touch screen accuracy)
For developers it comes down to a simple choice. Yes Apple have made your lives slightly more difficult, but ultimately if you want to tap their market of X million customers, why shouldn't they make you jump through a few hoops? People keep citing Firefox as the best example of a cross-compiled application (on Mac OS X), and while it has some truly excellent features, I have always found it a little bit clunky compared to Safari. There must be a reason for that. Most Mac users who use it tend to do so because they learned to use it on Windows before they switched.
Everyone else tries to copy the things Apple make instead of trying to copy the way they make them. It might only be a 1% performance hit to port something from flash, but its unnecessary as far as the end user is concerned. They don't care how much work you have to do to bring your app to their phone. And if you don't, someone else will.
Why do people never bitch and moan that they can't bolt Ferrari engines into a Ford chassis without huge amounts of work? Its the same thing here.
It seems to me, this just means that Adobe et al. have to make it impossible to tell that their tools were used to create the app.
What Jobs is talking about here is that he doesn't want a scenario like the Windows version of iTunes, which has an entirely different GUI and widget set than the host OS in which it is running. Applications like that seem totally out of place, and are confusing to users because they depart so drastically from the GUI design of the host OS - for example, not having the standard Windows title bar. Apple would never release a fish-out-of-water application like that for non-OS X platforms, so why should they allow other developers to do the same on the platforms they control? What a bunch of hypocrites (and in a self-serving way I'm quite happy that Apple isn't allowing CS4 as a toolset for developing iPhone apps - so for now I'd like to thank them for this decision).
Better known as 318230.
So how long until Apple creates an App Store for OS X, and forces Developers to only write Apps in Objective C, under NDA?
Thin client apps should not be affected by this since you would already be coding your interfaces separately for each platform for a native look and feel and having the major grunt work done on the server.
Jesus was a compassionate social conservative who called individuals to sin no more.
You fuckers would write in objective C if you knew how butchered the code is - what if some fundamental layer of code abstraction was broken? Would you even know how to fix it? Or would you just need 8 cores to write a pong game? Pay attention to those warnings in your compiler, fuckface.
Nothing wrong with a call to arms to educate the public though. They should know there are other, better games out there.
Just like with Windows and viruses and such. Very often I mention "well you don't have to use Windows you know" and the light finally comes on.
the Wolfenstein people said it was a piece of cake porting Wolf 3D to the iPhone
I wonder if this isn't really about Apple cutting off script kiddies at the knees by now allowing half-ass interpreters and extra "layers" on top of what is their gig. and the subsequent whining as the copy/paste elite have no templates to apply their incredibly awesome skillz on.
It funny for a technical site, no one is trying to look at this from the technical side of things. If you look at most CROSS platform libraries, you find that they always have to go to the lowest common
features. Most CROSS libraries do not expose the OS threading model, they implement threads them self. This is what java had in the beginning, (They used to be call green threads, I am not even sure if they are not still used under windows.) With Flash, I don't ever recall that under linux I saw multiple threads associated with it. (though it may be that nobody does threaded Flash apps, I don't
know.) Now, with the way that Apple is implementing background threads, seem like they are relying on the way they do threading. So if a Cross Library is doing
their own threading, or no supporting it at all, I think apple multitasking will be going out the window. So by limiting that you have to program in C/C++/OBJ-C and directly to their API they can have
better control on how they handle background tasks, and task switching. Remember they have a limited amount of memory (In today's terms), and no place to swap changed code out, I think they are
able to swap out the executable parts (to/from the executable). But need to keep the amount of active code in memory to a limit. With Apple's API they know all the threads that are running and
all the memory each thread has acquired. With some CROSS API it may expose only a single thread to Apple, they have no clue what can be run in the background, they can only do the entire
app.
Everyone is saying Apple is saying 'Screw you to Adobe', I don't believe it, I think they are making it where they are trying to produce the best experience for the end user, and decided that CROSS
libraries and Cross languages are just not feasible to support under the Multitasking environment. This is some of the same reasons why they banned Java. And I am sure this will ban MacRuby and
all the other Cross languages. So as programmers, if all you know is Flash, I will say you are not a true programmer, programmers like to learn new languages all the time, so get off you but and
learn OBJ-C, and the API.
(FLAME ON) So, all the whiners, and Flash lovers, go play on android, all I think it can do is help Apple in the long run. When people start putting all those Flash apps on their phone and find that the
phones start getting slower and slower as they put stuff in the background, and the iPhone keeps it's smooth performance. (FLAME OFF)
At that point, it would become more effective to use cross-platform tools to target everything else at the same time.
To do performance testing of your apps on various devices, as well as compatibility testing with various defective driver implementations on various devices, you have to buy one of each handset that you plan to support. In the case of iPhone OS, you can get an iPod Touch version 2 (same HW as iPhone 3G), an iPod Touch version 3 (same HW as iPhone 3GS), and an iPad, and cover everything. But in the case of Android, there aren't a lot of iPod Touch equivalents other than the Archos 5 Internet Media Tablet. Most are phones, and unlocked phone handsets aren't exactly easy to buy in the United States.
How many times do you hear gamers complain that a game is a crappy port because it is not properly written for the platform it is on, but instead tries squeeze in the functionality of some other platform?
A program designed for multiple platforms should be split into a back-end and a front-end following the model-view-controller paradigm. The business logic, such as the physics and AI of a video game, should ideally be exactly the same code on all platforms, even as the front-end is rewritten completely for each platform. The problem here is that in order to target Windows Phone 7 Series, Android, and iPhone OS, you'll have to completely rewrite both the front-end and the back-end in C#, Java, and Objective-C respectively.
'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.'"
Take a look at any app on the Mac that uses Qt to generate the UI. Apple has seen plenty of instances of shallow ports of Windows or X11 apps to the Mac, and they're flat-out painful.
If you can't be bothered to learn the native development tools to write iPhone and iPad apps, then don't let the door hit you on the way out. Somehow, the iPhone market will just have to get by with the tens of thousands of developers who aren't trying to live in a little C# bubble.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
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?
Um, its still their tool kit, not yours.
Like others have said, don't like the game rules, go play in a different ball field. There are other fields to play in.
---- Booth was a patriot ----
I wish someone would port your post into a car analogy. Is there any rule against that?
Oh, yeah, it's not easy to pad these out to 120 characters.
... except that Apple ain't the boy who owns the ball.
Apple is the *pretty girl* who owns the ball.
So she not only makes the rules, she even makes up the result! You can't play at full strength 'coz she's not gonna like you if you do (and boy you like her, she's dumb and mean but oh so cool and cute and smart and nice you can't help yourself), and every other boy is more than happy to let her win, so you have to either play to lose or be marginalized.
As for to walking away from HER to play with the nerdy kid down the block who has a more-or-less usable ball, well, that turns you into an instant looser.
You can't win, you can't even tie and you can't leave the game!
And with the bad programmars you loose the creative people that are mediocrate programmers.
If you've ever written software, you know there are times you have to build your own tools.
If you've ever taken that CD and copied it to, say, an iPod, you just stepped out of what the music company says you can - but fair use allows it.
So you buy this electronic device with a general purpose computer in it - and get told oh, you aren't allowed to use it as a general purpose computer and, say, create your own set of class libraries with overloaded operators that doesn't look close enough to C++ for us - and now that such fantasyland ideas have actually been published, you know there's a deep deep streak of paranoia at work.
It is well past time to draw this particular line. I am sad that anyone would support such as strike at free and open software.
Also, the extreme and practically universal applause for Apple this week has to jar one to attention. Nobody is that good, or who is paying whom...
If you were targeting several platforms from the beginning, your core code should be C/C++
Why? True, C/C++ isn't a bad choice for a cross-platform app, but cross-compilers or virtual machine based languages are perfectly valid approaches. With the main competitor, Android, using Java as its preferred language then using a Java-to-C or Java-to-javascript cross compiler, or some custom language which can cross-compile to either might make sense.
For instance, the TeX typesetting software was written in Knuth's own Pascal subset called "WEB" and has been ported to most platforms by cross-compiling to C. That would apparently be disallowed by the Apple clause.
Or, there is the Google Web Toolkit, which cross-compiles Java to Javascript - again, that seems to fall foul of the rule that "Applications must be originally written in Objective-C, C, C++, or JavaScript" - although you could still eschew the App Store and serve the application over the web with a manifest file to give it a more App-like appearance.
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
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).
... can somebody explain why could Apple get away with this policy and why Microsoft had to introduce a browser ballot in th EU?
Steve Jobs is wrong. Now that the Apple fanboys have gone apoplectic... The reason Steve is wrong is not that he hasn't made what appears to be a sound business decision for Apple. Its that the purported reasons for doing so on behalf of customers is assuming that there are only two choices: Apple-provided toolkits and high quality, and third-party toolkits and low-quality. This is wrong. To me it's a classic tying argument, pulling together what you want (lock-in) with what you need (high-quality) and claiming they are inseparable. If you want the apps to be high quality, have a certification program which software vendors may submit to. Ensure this certification program only lets through the high quality apps you desire. Reject the rest. Then it doesn't matter which toolkit is used for which platform. Quality problem solved, and no draconian restrictions on development methods are introduced. Concerns are once again separate and honest. But, as has already been pointed out, Apple is not interested in being honest with their customers. Steve is out for his business (as he should be). But no one should be under any illusions that this decision represents the only one which achieves high quality applications for his customers.
This is the real reason why apple wants to keep flash off of the iPhone. Flash would run fine on the iPhone and Adobe would bend over backwards to make it work to Job's satisfaction. But Apple does not want any competition for native apps on the platform. They get a cut of everything that sells on the iPhone marketplace they don't get a cut if you play a flash game through the browser. Also flash will be cross platform mobile it' a better Java than Java in the respect that it's a virtual machine that actually works and produces attractive apps cross platform. So it's likely if they allowed flash on the platform that the flash/flex apps that worked well on iPhone would also work well on Android and Blackberry and they don't want that competition they want lock in to the iPhone platform. So it's never been about getting flash to run on the hardware it's always been about control and money. It's good business wise but it's anti competitive and bad for consumers.
Be fully aware of who your are doing business when you do business with Apple. If they had won the PC wars and we all had Macs they would be attractive and work well but Apples business practices and lock in would make Microsoft look like absolute saints.
" intermediate layers between the platform and the developer"
Does he mean like the operating system?
"With other languages, it is not so clear cut. The Java crowd, for example, has some good programmers, but a lot of terrible ones. The reason is that you can get an app with terrible structure and design working in Java, while it almost impossible in C/C++/ObjC."
My experience with Java suggests that you have to do things the "proper" way even if you don't want to. I think it's easier to create a poorly structured program in C/C++ (I haven't used ObjC).
The main obstacle to making a 3d game on the iphone that can compete with the PSP right now is the OpenGL driver, which adds so much overhead that it usually shows up at the top of the profiler for any game. If they'd let us direct access to the hardware we'd be able to push twice as much polygons, but instead we're stuck with this "intermediate layer". Does this mean they'll get rid of it?
--
Stay tuned for some shock and awe coming right up after this messages!
Having had to do development on the iPhone/iPod Touch for work, I can tell you that I personally hate Objective C/XCode/Cocoa. It's one of the worst designed programming languages I have ever used. The vector-based graphics and animations are great, but the language is so backwards and retarded. It's not very hard once you figure out how to do stuff, it's just a pain because it is so unconventional. And I mean that not in a good way. Having done years and years of development in C++, Java, VB.Net, C#, and mostly recently WPF applications with C#, Objective C just feels inferior in EVERY way. Any experienced GUI developer who has had to do anything with the absolutely atrocious XCode Interface Builder knows what I'm talking about. (Although I would argue that doing GUI work in Java using ANY of the GUI frameworks is 10 times more painful than using the XCode Interface Builder. If you want to do good GUI's, Java aint the right tool, period.) I laugh at Apple wanting to force developers to use their own language. What did you expect from Apple? They are draconian and anti-open source and anti-developer. This is the reason that eventually the iCrap will be overshadowed by better products from competitors in the future.
Our Fortune 500 company was considering using Flash to create cross-platform apps that include the AppStore.
Steve has just made it a pretty easy choice for us. We're building in Google Web Toolkit.
That way we get cross-platform and can't be controlled by the mantic swings dictated by Steve's latest medication side-effects.
With GWT we can detect the device and serve an app that looks native.
Not as good as Flash would have been, but it still works.
And allows us to write the app once, and serve it on any device.
Here's a proof-of-concept
http://clay.lenharts.net/blog/2009/05/25/gwt-is-flexible-iphone-demo/
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. ... what Microsoft actually did.
Apple has some market power, and this license change is sucky and genuinely anti-competitive, but it doesn't even hold a candle to the crap that Microsoft pulled or even the position that Microsoft had in the market during their history, and if you really believe that statement above, the journey from where you are now to even a glimmer of dim understanding is going to be a long, hard, and possibly untenable one for you.
Tweet, tweet.
Mmmm I wish it were my phone instead of jobs.
Get real. The public doesn't give a fuck what language the app was written.
I'm curious as to how exactly you think C# and .NET are a "god-awful hack of a language and framework". I may not be willing to go anywhere near them due to them being controlled by Microsoft, but that aside, they are both quite good from my experience. Said Microsoft-is-evil issue aside, I'd much, much rather use them than Objective-C.
The Daring Fireball article is obtuse and decidedly one-sided; you know how the cards are going to fall before they've even left the dealer's hand.
First, I suspect that this is only creating a pattern of diminishing returns. A smaller developer base will produce a smaller field of applications, attracting a smaller audience (...and repeat...)
Second, if you have a choice of becoming proficient on a specific subset of tools that can only be used to target a specific audience, you better hope that there are many riches to be found in your narrow niche. That is not true of the Apple store, where Chinese copy-cat apps and most favored nation statutes and poor delivery system (I never seen such a feature-poor store in my life) make extremely difficult to make a profit, never mind the fact that you first have to get over the opaque and unfathomable Apple App Approval process.
Third, programming towards a platform that is defined by such questionable ethics and so unquestionable self-serving (if you believe it is about quality you are fooling yourself ... this is about control and profit) should be considered as an ethical question as well as financial. That's un-American, I realize, but then I'm not American.
Best solution for Adobe: indefinitely delay CS5 for the Mac. Release it when Jobs is dead and is isolationist philosophy is gone with him. To be real jerks, Adobe could include a $100.00 credit towards the purchase of Windows 7 for their Mac users.
Gruber writes:
I can think of several top-notch cross-platform apps I use on my Mac: Firefox, Thunderbird, jEdit, GMail, Flickr and Delicious - to name a few.
Yes, I realize that Web apps are permitted on the iPhone (so long as they work with whatever features Safari chooses to implement). The point is that under these rules (including the older rule against interpreted languages) the invention of most Web technology would not have happened. The next breakthrough platform, whatever it might be, likely won't be developed for iPhone. If the industry follows Apple's lead and lock down their platforms, it might not happen at all.
Maybe Jobs is fine with that. He doesn't want Platform Next threatening his control the way the Web threatened Microsoft. Maybe he's wrong: maybe the next platform will be for gaming or something else that doesn't threaten his core business. Regardless, I wouldn't pretend for a moment this attitude is good for users.
The long-term interests of users point in another direction also. I use Thunderbird, not Mail, because it does not tie me to Mac. My deliberate choice of cross platform apps and data formats (Thunderbird, OpenOffice, jEdit) was what allowed me to jump from Windows to Mac in the first place. While many Mac-specific apps are technically very good, my decision to remain as platform agnostic as possible is what will allow me to jump away again. It is true that many users do not realize that freedom is in their long-term best interests. You may accuse me of elitism for claiming to know better. But that is exactly what Jobs is doing. He says he knows best. At least my claim does not involve forcing anyone to make my choice, or making it difficult to change their minds later.
ASSEMBLE!
support Apple's decision.
What's next, will devs have to give up their first born male child in order to pray at the alter of Jobs?
You folks just don't get it. Apple really doesn't want anyone else developing apps for the iPhone - they want that playground all to themselves.
They only started allowing indies to be included in the app store to get the momentum going. Now they're going to continue to squeeze devs, putting more and more restrictions on how and what you can develop for their platform. Any really innovative (and profitable) apps that appear will no doubt eventually be pushed out when Apple provides their own version and gives it away for free.
Those that think the app store is the way to riches haven't been paying attention.
With over 65,000 apps (last count I saw) in the app store to compete with and with most apps going for $0.99, is this really the way to get rich? I certainly is for apple, given their $99 fee for the privileges of being able to submit your apps to the store (with no refund if they turn you down). Not to mention their cut of any sales.
I haven't seen this kind of arrogance since the late 70s from IBM when they were an empire. Even Microsoft recognized the benefits of catering to developers to increase their market share.
C'mon indy developers, do we really want to grovel and feed off the crumbs dropped from Apples table, or do we have the intestinal fortitude to better them at their own game? Whether it's Android or some other platform, can't we best them with our brilliance or does Apple posses some magic potion that non-Apple engineers and developers can't compete with?
As cool as the Android platform is, in order to drive lemming customers away from Apple, it's going to have to get better - and fast. It's going to have to be better on just about every front - from hardware (sleeker, faster, lighter, longer battery life) to software (more intuitive interface, better app multitasking and interoperability, less restrictions on what is allowed to be done).
Apple does have an Achilles heal and that is that they are a slave to their own success. One of the reasons they claim for placing restrictions on devs is that they don't want to impact the user experience with inferior apps (i.e. apps that drain the battery, slow the interface, etc). With an alternative platform, the customer can make that decision on their own. If I want to fire up an app that eats the CPU and memory resources up and drains the battery, but does something amazing that I want it to do, I should be able to run it (maybe I only run it while I'm tethered and charging and not doing anything else with the phone). The point is, I don't want Apple dictating to me what I can do with my phone that I paid a lot of $$$ for.
If I can show a friend how much better my Android (or whatever) phone is than their iPhone - and I mean every aspect, it will begin to reclaim the "cool" factor from Apple which has had it too long already.
Sometimes the light at the end of the tunnel is the headlight of an oncoming train.
translation: don't say things I can't refute, please just go away. you're making me start to see that Apple is not the awesome company I thought they were, and I don't like this feeling. So please, please just go away because I really want to love Apple and you're making that more and more difficult. just go.. please, I'm begging you.
"STEVE:
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."
So what he's saying is that even all the bullshit APIs on the Apple computers they make is responsible for producing sub-standard applications. After all, Apple makes most of those 'intermediate layers.'
ASM FTW
Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
If you don't like riding with your OCD acquaintance that requires you to remove your shoes and put on a Tyvek suit before getting in his oh-so-pristine car, then don't ride with him.
[b.belong('us') for b in bases if b.owner() == 'you']
"Please explain how Objective C is god-awful."
I can write the same thing in ASM and have it be 1/100th of the size and 4,000X faster. Sure it might take LONGER to write and develop but in the end it's much more secure when you don't have to rely upon vulnerable libraries and just speak natively to the machine instead.
You also actually LEARN how the machine works and the intricacies of the silicon, instead of just praying the error-correction in the executable works as intended.
Still waiting on Serviscope_minor to wake up to fucking reality and realize that Jessica Price isn't going to fuck him.
Please explain how Objective C is god-awful.
No namespaces. More brackets than Lisp. Lame. ~
Face it, people that can create complex applications (e.g. ones with a GUI) with C/C++/Obj C know what they are doing, because if they do not, they fail pretty quickly.
Vast majority of applications for Windows is written either in C, or in C++ ...
... and that you come from an area where the government chose a wireless standard for a whole country, so choosing a phone doesn't mean choosing a wireless carrier. The US, for good or ill, didn't do that. The market here is fragmented to the point that the two major GSM carriers use different frequencies for their 3G service - if you jailbreak an iPhone and move it to T-Mobile, you can only get EDGE data. There is hope that when 4G gets rolled out, it will be broadly cross-carrier compatible.
To a Lisp hacker, XML is S-expressions in drag.
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"
Isn't Python out of the question on the iPhone now?...
One that hath name thou can not otter
In the words of Joe Clark:
This is not about you programming Python on your microwave, it's about users doing their fucking work. Are they going to benefit from some half ass attempt to run your shit on a phone? no? then go do that on the Android Market.
The motto "It just works" requires some level of control. Otherwise users (not you fellow ./, this was never about you) are back to square one worrying about installing apps that break, malfunction, or are plain retarded. Gruber said it right: "Apple doesn’t want everywhere, they just want everywhere good".
They've done so much harm that I'd urge everyone to use MS products only if MS won't benefit a single cent from it. Not even indirectly.
Gates can try buy his good karma back with donations, but no matter how much he donates and for how good are the causes, they won't erase the memory of where all his tainted money came from.
MS had opportunity and resources to change the world but instead they cashed on it.
Is that clear? MS pissed on the future of computing, made PC a cashing cow for themselves.
No amount of money or apologies will change history to what it could've been if MS would've played nice back in, and since MS-DOS days.
Even now, we have to use Windows because of DirectX games. We have to send papers to ignorants using .doc format. We can't even buy a goddamn keyboard without the stupid "windows" keys.
Who knows how widely MS's ruthless business attitude has been adopted all over IT industry. Without their rotten example, tech world could be very different place now.
The thing is Apple is focused on customers, not enabling Adobe. And its true that if people write portable C/C++ codebases and redo their UI code in ObjC/Cocoa on iPhone/iPad/MacOSX, the effort level is fine. Its certainly true the quality will be better this way, as well as the performance, and honestly, doesn’t it make sense that Apple can control what goes on the hardware it makes? The console market has been like this for a long time, with higher quality levels as a direct result. It makes sense that hardware products aimed at the same customers from Apple would follow the same set of guidance.
... someone could create tools to turn iPhone apps into apps for other platforms downstream from the Apple dev tools...
Like anyone can even know that
Firstly, I didn't do that much iPhone development, partially because I disliked it so much. I admit that I am not educated enough about the language to speak authoritatively. I'm just giving my impression. If Apple doesn't like it, there are several options. One of them is to improve the experience for developers like me. Another is to ignore me, because I'm just one developer.
1. You're right. Syntax is subjective, and I personally think that Objective C's syntax is horrible. It's just my opinion.
2. Part of the reason I don't like it admittedly comes down to the fact that I jumped into some iPhone programming without actually learning the language properly. With that in mind (my lack of understanding), I find the way modifiers are specified to be strange, such as the - for instance methods.
3. XCode is primitive. It only seems modern until you use VS.Net 2008 or later. Visual Studio blows it away. I'm happy to be shown to be an idiot in most of the other points, but until you have used Visual Studio, you can't really talk about what makes a modern IDE.
4. I understand, but I just don't like the amount of modifiers involved in declarations, and it feels like a step back. I learned about memory management back at university. I always give thought to what data structures I use for an given purpose, but I have grown beyond actually wanting to manage the memory of objects myself. I acknowledge that when there are experts writing software specifically to manage memory, they are probably going to do a better job than me. And I could be contributing value to the business by writing software that does stuff, rather than managing the memory of the software that does stuff. I've done assembler, but I'd like to work at a higher level of abstraction now that I understand how the fundamentals work.
5. I can't remember is that much detail, but I remember having to write the signature, then the autoproperty, and I think there was something else that needed to be written to get them to work.
6. It felt more like a few applications loosely tied together. They are all separate apps that are called from each other, but that is only integrated for low values of integrated. Once again, try VS.NET 2008/2010 and get back to me.
I wasn't trying to troll. I just gave my opinion on not liking the language and tools. I feel dirty when I say that MS has done something well, but I have to give credit where credit is due.
I'm gonna need a spec.
This is a classic load of crap.. John Gruber is one of the biggest apple fanbois on the internet today.. in fact If I recall he's paid through being a apple fanboi on his web page through advertising etc.. Steve Jobs sending an endorsement from fanboi number 1 saying that he's awesome for making changes is just a classic case of brown nosing.. The classic 'lets all sit in a circle and hug while telling eachother how awesome we are...' that's what I call trust worthy news...
1. Syntax is god awful, enclosing methods by [] , strings have to have an @ in front, array initializing needs to end with nil, self instead of this, nil instead of null, it reeks of 'let do it different' and then the method names are just ridiculours I mean 'CFRunLoopModeFindTimerForMachPort', are you kidding me ?
2. That is not like every other language, but yes, its not arcane, Pascal does this
3. MS Visual Studio and Eclipse and NetBeans are way more advanced
4. Yes, good point.
5. Agreed.
6. Sure
T.
Shut up and lick harder, slave, or it's the spikey strapon for your ass tonight!
But after doing a project in Visual Studio 2008 recently, I just gave up on the intellisense and kept the MFC documentation open on a second monitor.
Obviously you don't know what you're talking about... You keep referencing MFC and Visual Studio 2008 together like they are somehow related. If you were doing something in Visual Studio 2008, you were unlikely developing a MFC app. MFC is ancient and rarely used anymore. You were either doing something in WinForms, WPF, or a console app. If you think C# is a god-awful hack of language, then you, sir, are an idiot. Go play with your cocoa and let us real developers do the real work.
From my understanding, the terms simply state that the application must be written in C, C++, Objective-C or Javascript. What's stopping someone from creating a compatibility layer (like boost), written in C or C++, that would allow you to write an app. for the iPhone and Android and whatever else you want? Heck- if this compatibility layer were provided as source, wouldn't it be impossible to tell? There isn't even mention of having to use Xcode in there.
C and C++ are great langauges.
I guess all the script kiddies are whining because they can't handle a language that bites you if you're a hacky programmer.
While I appreciate your comment, take it from somebody who's been on a picket line: don't expect your opinions and public shaming to make much of a difference when there's money to be made.
And that's marching in front of an employer's door -- I actually had to get out of bed to do that. Everyone I see criticizing this decision is doing it from the comfort of their (often enough Apple) keyboards.
Don't blame me, I voted for Baltar.
I think iPhones account for less than 20% of smartphone sales, world-wide.
(Disclosure: I own a modest number of Apple shares.)
Ben "You have your mind on computers, it seems."
What's ironic about this move is that XCode is pathetic as a software development environment compared with other platforms, like Eclipse and even Visual Studio. You can't even link to a standard version of the source of a library in another project in XCode, without making a copy of it. Refactoring? They never heard of it.
It seems that Steve Jobs is too insecure and too much of a control freak to encourage real innovation on the iP** platofrm.
This is much worse than Microsoft's refusal to publish their APIs for many years, until the European Union recently called them on it.
We can only hope that the European Union will ride again. And soon!
I can only assume that the .NET and Adobe compilers generate code that uses the Objective-C libraries. Considering Apple only checks that you're using the public frameworks, what is the big deal? It's not like they're going to be able to prove you were using something other than Objective-C.
I do know the .NET framework takes up a ridiculous 9+MB of space for even a hello world app, and I'm not opposed to getting rid of that crap.
Besides, the apps that take real advantage of the phone are going to be written in the native language anyway, purely so they can keep up with the feature set released by Apple.
People are complaining "I can't write my app in precious language X and cross compile it (or whatever conversion they do) to run on iPhone" whether language X be Java, Flash or whatever.
Has anyone ever considered going to other way? Write something in Objective-C and cross compile to other platforms? Hell, most of the specifications are open, we even have GNUStep! It's really not THAT complicated a language, C with a Smalltalk style OO model strapped to it and a few libraries.
Why not have a converter that takes an Objective-C iPhone app's code and converts it to Dalvik, .NET or whatever your other targets are, instead of moaning because you can't write your app in Java or whatever you pick?
Seems to be all one sided, even lazy, if you ask me. Objective-C isn't THAT hard to learn, and the majority of specs are open.
You will be missed. Seriously.
If you are not writing in assembler, or something like C without frameworks, there are intermediate layers. I quit working in the Windows arena because I objected to the force Microsoft was bringing to bare on programmers to writing using Microsoft language tools calling Microsoft frameworks targeting Microsoft intermediate code, executed my Microsoft common language runtimes. After Microsoft declared Visual Basic was the best language for writing Windows apps, I lost interest. In my mind the trusted computing initiative was more like the closed computing initiative. Citizens cannot be trusted to write real code. Only Microsoft staff because they are more trustworthy. I jumped ship to Apple and bought some Macs. I never became a fanboi about Mac style development though and still write most of my code at the command line with GNU tools. It is my way to like to be closer to the hardware because it changes more slowly. Writing programs that interface with and comply with vendor software layers is a life draining exercise and the windows of opportunity are so small these days, I can't believe it. The iPhone though is the pathological case of all these problems, and as a software engineer, a goodly part of my life has been spent improving language tools, and I find it wrong that Apple is taking a position that only they can write language tools for their ubiquitous instrument. My experience with Apple iPhone programming was such that after the first year, there was no way I would pay them again for the iPhone development program. While it may be popular, I find the App-Store to be the worst marketing environment I could have imagined, and that alone will cause people to think about alternatives to the iPhone. Anyway, I just don't like objective C or Apple's frameworks, and with Apple's current policies, that leaves me out of things I guess. The point I was trying to get to though is that on a platform as ubiquitous as the iPhone, I think it would be great of the public had the benefit of public inventiveness helping the platform, and I don;'t believe that Apple's Languages and Apple's frameworks, and Apple's Applications are the best that could be. Apple doesn't employ the best engineering in the world, just some good ones. Look how popular the PC became, and although IBM did lose control, look what it did for personal computing
but then they can write their low quality code in VB, decompile it in c# and then pretend they write c# and earn more. Well... presuming VB coders know how to do that :)
It only takes a few killer apps that can't reach the iPhone due to Apple's control-freakness to tip the balance away to some other platform.
Steve Jobs should know, of all people. Apple was once so dominant in the field of personal computers it could laugh at IBM, much like the iPhone in smartphones today. Well, guess what? A few years down the road, IBM's presence in the Macintosh core market was no longer laughing matter.
Expanded comment at http://grenouille-bouillie.blogspot.com/2010/04/steve-jobs-and-iphone-lockdown.html
-- Did you try Tao3D? http://tao3d.sourceforge.net
that it is impossible to write HIG compliant, stable and well performing iphone software using other languages, whereas if you use an apple blessed language your software will automatically be completely HIG compliant and any crap programming will be automatically corrected?
no? then you're still going to have to 'review' the software to make sure its good before you release it, then? so, what was the point of restricting languages, again?
I'm OS X user, but I think it's time to re-think this choice. Apple is getting a little too fascist for my taste, even though I don't develop software specifically for OS X, but still I don't feel it's good to sent my support dollars to them and give them the wrong idea that it's ok to continue to be assholes.
By the way I would never develop software for desktop or mobile anyway. It's 2010 after all :D.
Desktop is the domain of a 0.01% of developers now who mainly work in multi-media, heavy CPU domains (like image/video/sound processing). Rest of the world lives online (even in the traditionally desktop world like insurance and banking).
As the island of our knowledge grows, so does the shore of our ignorance.
Louis Gerbarg has written up a very good explanation of the issues involved.
Quote:
Adobe is a large company with a significant, and complicated, relationship with Apple. They have frequent high level contacts and meetings. Adobe has known for quite some time about Apple's desire not to have Flash on the iPhone. There is no doubt in my mind that if they asked Apple to bless this they were rebuffed, and if they didn't ask the only reason they didn't was because they knew Apple would say no. In either event, they announced the product to their customers and sold them on an idea they were not in a position to deliver, hoping Apple would be unwilling to piss off developers by not fulfilling Adobe's promises. They tried to force Apple's hand by putting Apple in a position where in order stop the Flash they would have to do it publicly in front of Adobe's users. That was a bad call on Adobe's part.
Read the whole thing.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Do it Apple's way. Phones aren't a gaming platform? Look again, junior...
Ask Me About... The 80's!
of course, you don't have to write apps in c/c++/obj-c. http://tetontech.wordpress.com/
This is probably a lame sig.
Actually a very good parallel. If you see the way that kids behave, the one who changes the rules and behaves like a pedant about goal decisions might win the game today, but all that happens is that eventually, the other kids stop calling on him.
Perhaps the developers here would be so kind as to explain how Apple will know that an app was compiled by some third party app rather than written natively.
Being a completely ignorant of programming the first idea that springs to my mind is that a company like Adobe simply has to write a 'Compile for iPhone' command into their compiler that produces Objective C that the iPhone and the app store will see as native.
Please excuse my ignorance if that seems, from a programmer's perspective, naive.
I am a mobile developer that has worked on android mostly but my company is considering a product that would be cross platform or even tablet based. The initial design meetings centered around providing rich native apps for each platform but after seeing how much code would have to be duplicated, our design has turned to a webservice with the clients on each of the mobile platforms (android, iphone, RIM, Symbian) being a dumb html/javascript ui. It will still be marketed as an app through Itunes/android market or whatever the native delivery mechanism is, but the the app will do not more that fire a series of webservice calls and load the content into a local webpage that we load from the local app resource folders (so we don't have to download the page from the internet). This kind of vendor lockin might prompt more developers to do the same. Imagine if all the apps you downloaded were basically mobile safari/chrome running a locally served html file. Its not bad, it just doesn't encourage developers to really take advantage of the more powerful features of the frameworks/languages. I think this approach could actually lower the quality of cross-platform apps as developers look for the simplest way to deliver a consistent look and feel.
@BItZtream
Perhaps it is YOU who should understand what "monopoly" actually means.
The OED defines monopoly as:
"The exclusive possession or control of the trade in a commodity, product, or service; the condition of having no competitor in one's trade or business."
Since Apple (and only Apple) does restrict what applications can or cannot be installed on an iPhone or iPad, they have a defacto monopoly on these platforms. How would you explain that Apple doesn't have exclusive possession or control of this?
Jailbreaking (and the ensuing vioding of one's warranty) does not get around this exclusivity!
Rearrange subject words.
Phones are already far too smart for me to be bothered with ; making them more complicated isn't going to increase the likelihood of them being considered, purchased or used.
Remember those early digital watches that included a 4-function calculator? (OK, that's all the 6-digit SlashID crowd ruled out. "Whatever.") Remember how ridiculous they were, particularly for non-smokers. Obviously the lesson still hasn't been learned. Or there is (yet) another generation of people in development jobs who think that they don't need to learn the lessons of the past because they're so clearly less stupid than the Neanderthals of the 1980s.
Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
I think Apple's reasoning behind this policy is pretty simple: If you want to develop cross-platform applications then build web apps.
Section 3.3.1 is the middle ground between Apple's policy when the iPhone was first released in 2007 and the policy that existed prior to 3.3.1. Remember that entire year that we begged for the ability to write native apps?
Now Apple is partially rolling back their policy and cutting out 3rd party development tools for native apps, but at the same time (whether they realize it or not) they are pushing the web as their preferred platform for cross-platform application development.
There are legitimate negative consequences associated with the 3.3.1 policy, but I think it's hard to argue with the fact that a policy like this is good for the future of web applications and improving the web as a development platform.
Here's a question for you: would you more likely build an app because it "might be allowed"?
Probably not.
But then, I have always advocated building against frameworks in the native language they were meant for - I wouldn't go try to build Windows apps against a .Net library using Objective-C, similarly I would not advocate programming the iPhone in anything but Objective-C (or C++/C for game programmers). There are a ton of people who simply write applications using the Apple frameworks, they are the rule and not the exception. They are not affected.
There are millions of ideas that CAN be submitted without question of being allowed, that's what is always missed in the discussions about what Apple disallows. I don't like some of the limitations Apple has in place, and even though I don't personally like .Net I heartily defend the concept that people should be allowed to use it to write iPhone applications.
But that doesn't mean there are not a ton of applications that can be developed that this move will not impact at all... except possibly for Unity developers and other game engines, so Apple better clear that up PDQ or they could start losing a lot of games.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
The language of the agreement is quite clear.
Wrong. In case you had not noticed, Apple is not always strict on adherence to rules. And if you simply take a step back away from the document and use common sense, you will understand what will happen vs. what the document (which can change at any time) says NOW.
Apple is not stupid. If literal adherence to this rule hurts the platform (and losing Unity would I think hurt the platform) then Apple will re-work the thing to allow Unity but disallow other kinds of cross-platform application frameworks.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
" 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."
Translation: if we cannot control it, it ain't gonna happen.
Apple has become the new Microsoft. It's time to take Jobs & Company down a couple of pegs.
I own an I phone.http://apple.slashdot.org/story/10/04/11/0719213/Steve-Jobs-Weighs-In-On-iPhone-Programming-Language-Mandate?from=rss&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Slashdot%2Fslashdot+%28Slashdot%29&utm_content=Google+Reader# I don't want apple to decide what applications I can and can not run on my phone. What if the coolest new application came from one of these cross compiled applications? Why is it apples job to prevent me from using it?
Saying third party apps break the iPad/iPhone/iTouch sounds like something Bill Gates says about Windoze. Apple's logo says it all: Bite Me.