Not that I like TL;DRs, but I can give you a quote which will save you time:
"On the whole I like Android even more than iOS. [Mention of Java, and less polished dev tool chain]. I can live with those quirks, though, and otherwise it’s mostly a developer’s dream: powerful, flexible and open(ish)."
So, as you might expect, the Apple "requests" are "Please be more like Android". Having done a lot of iOS dev, Garbage Collection isn't even in my top 10 wants (his claim that it adding it would halve iOS dev times is bunkum). An Android like multitasking model is also not in my top 10 (widgets + the ability to do preemptive content downloads would cover ever use case I've ever wanted, and basically every other need I've seen). His repeated use of "fanboy" also gives the article -20 karma: Apple, and Apple developers never said multitasking is evil, just that unrestricted desktop (i.e power unlimited device) multitasking was a poor fit - a position that's still true.
For iOS, I do want: Better notification system. The ability to silently respond to pushes (i.e. Update my databases without showing any UI). Better system wide connectivity notifications. Better inter-app connectivity (something like Androids intents, I guess). Cocoa data bindings. A sync service API (desktop to iOS or web service to iOS).
I do not want iOS to become OS X, or a desktop OS. That is not helpful to me, or my users. A phone is not a tiny laptop, and frankly, nor is a tablet.
As an Android Dev, his requests aren't even on my top 10 either. Everything he requested can be solved by developers if they put in more time. If you want your Android app to look polished and shiny, you can, and it's pretty easy actually, but it takes time.
Fragmentation as the root of this problem - well, again, it just takes more time.
I want to see things change in the Markets of both platforms. This is an area I cannot change with more time - this is an area I have no control over and have a lot of complaints about.
My top 10 list all lives in the Market for Android.
OLPC wanted to halt the CPU from time to time to reduce consume and discovered that it was feasible... if only the software let them. A lot of linux apps were designed using polling that make that impossible to do, so they had to modify it and remove the polling in all apps, a huge task that took an enormous effort.
Steve Jobs, who is not stupid learned from them and decided to not let coders be lazy with iOS so the same battery rocks way more than Android.
The difference between "What App develovers want", and "what iOS users want". Long battery life.
As an Android user who suffers from lag every time a background service starts up, I concur. This whole article was nonsense. How could he talk about Android development without mentioning the woeful mess that is the emulator?
You can indicate via the Info.plist that your application doesn't support multitasking. The app will run through the full startup and shutdown routines on foregrounding and backgrounding.
Interestingly, John Siracusa's latest episode of Hypercritical, "A Dark Age of Objective-C" touches on much of the issue of Apple's reliance on Objective C both for OS X and iOS, and argues that in the long term, it's extremely problematic. Highly recommended:
"Please make it possible to develop iOS apps on something other than a Mac."
A few months ago I wrote a quick HTML5 app and when it came time to port it over to a proper iOS app, I found out Xcode only worked on Macs. And I'm a PC guy.
What did I end up doing? I made it into an Android app.
I'm sure I'm not the only casual app developer that didn't end up submitting to the App Store just because it was too much of a hassle. There's certainly no shortage of apps in the Store, but I think mine could have been better than at least 40% of them.
I don't develop for smartphones(yet) but this is something Apple should consider. MBP are too damn expensive for developing world, and even in the developed countries, many people don't own a MBP by choice. When people who don't own a MBP develop for the smartphones and its time to go native, they end up going Android even when they wanted to do it for IOS or for both.
I am not very familiar with iOS development infrastructure but since MacBook is BSD based, it should be possible to at least make it run on Linux and FreeBSD.
You don't have to buy a MacBook Pro. A MacMini works just fine for development, and it's half the price.
> since MacBook is BSD based, it should be possible to at least make it run on Linux and FreeBSD
Mac OS X has a UNIX foundation, not the MacBook - you can run Windows on your MacBook if you really want to. A lot of the low-level system libraries are open source (http://opensource.apple.com) and can be compiled for Linux/FreeBSD. I highly doubt they're going to do the necessary work to port over the development tools and UI that sit on top of that, though.
Would it be nice? For some people - possibly. Is it ever going to happen? Nope.
To be honest, an iPhone is too expensive for most of the developing world. Rarely anyone has an iPhone in thailand, and they're looked as luxury items like a luxury car.
It's as if the author took some of the marketing points that the two platforms used against each other and then used that as an argument for what programmers want?
Garbage collection is so simple. Once you're over the fear of feeling overwhelmed by having to "manage" memory it's really a non-issue.
Real multitasking? No thanks. I can't come up with a "real world" problem that the current implementation doesn't solve.
I'm actually from the "developing world," and I must say his argument is a bit of an insult to me. Sure, I we don't typically make as much money as an American or a European, but we buy the things we like... And if that happens to be Apple hardware then that's what we buy.
I can't argue with his Android points since I've just started coding on Android.
I have been doing Objective-C development since 1991 and started with Java around late 95/early 96. I am still using both language almost on daily basis and honestly the GC is not something I really miss on iOS. In fact I like the fact on how I can fine control the memory deallocation as I want rather than decided by the OS.
Of course with close to 20 years of Obj-C dev it seems natural.
I would love rather an improved AppStore and even better access to some underlying part of iOS. I can't speak much for Android since I just started with it, but any developer learning iOS SDK should rather spend the appropriate amount of time to understand the simple concept of retain/release and how to use each framework to write stable application rather than apps that crash way to often.
What is really a bummer is that the iOS SDK provide some good tools to discover memory leaks when debugging the app (with Instruments) and even the great analysis tools now fully integrated with XCode 4. Unfortunately a good chunk of developers releasing apps in the AppStore do not necessary invest the time to learn the tools they are using.
There are currently ~300,000 iOS apps and 99% of them are junk. As much as I would welcome simplified iOS development, its primary effect would be to attract simplified developers and that is the opposite of what Apple needs right now.
I don't like that arbitrary hoop-jumping is effectively used to weed out low-quality code, but I can appreciate why developer convenience is not a priority for Apple.
I really don't feel like Apple is purposely making development harder - just to try and weed out the lowest of the low.
That being said, I agree with the sentiment that most of what's in the store is utter crap. Personally, I think the barrier to entry is far too low. Apple opened the floodgates to try and get as many apps in the store as possible, and it worked. But now they're faced with the daunting task of cleaning house.
I would love to see them implement a monthly service fee - rather than charging $99/year up front, they should create a couple of price tiers with limits on the number of apps you can submit. That way, if your app isn't selling, you have a good incentive to remove it. They could also charge a smaller percentage as you move up the tiers.
As it stands, $99/year is just too easy to justify leaving everything in there - you're bound to get a few downloads from somewhere.
They're not trying to make development harder but they're not trying to make it easier either. They won't put the effort into fixing developer pain points if the only practical outcome will be more mediocre apps.
As long as they don't scare away the A-list developers, or hurt the quality of their apps, the development situation is good enough and they would rather spend resources on things that more directly benefit customers.
At the same time, the marketing dept. is milking their leading app count for all it's worth, so they won't be doing a purge. Rather, I think they will work on more ways for the cream to float to the top, like the "genius" feature of the app store, and on raising the quality bar with their own apps like Garage Band and iMovie.
> They're not trying to make development harder but they're not trying to make it easier either.
Agreed. There are so many things that can and should be improved upon. I'm keeping my fingers crossed for iOS 5.
> They won't put the effort into fixing developer pain points if the only practical outcome will be more mediocre apps.
I think you're being a little too cynical. I prefer to give Apple the benefit of the doubt. After the whole Xcode 4 mess, I get the feeling that there's some disconnect between how Apple uses the tools and how the community at large does - a gap I hope Apple works to eliminate.
> At the same time, the marketing dept. is milking their leading app count for all it's worth, so they won't be doing a purge.
Yeah - totally agree. They'll never do a direct purge (ie "Hey, your app isn't selling, so we killed it"), but I'm holding out hope of my other suggestion of their using a price schedule to "encourage" developers of low-sellings apps to pull them themselves.
> Rather, I think they will work on more ways for the cream to float to the top, like the "genius" feature of the app store
It's a hard problem to fix, and I imagine we'll see some good breakthroughs in this area in the next year or so. I'm genuinely curious, though, about how your experience with the "genius" feature has been. To me it seems to just recommend random apps from similar categories; most of the time, I walk away thinking, "No, I already bought an app to deal with [x/y/z] - I don't need a second." Given the amount of info Apple has on me (app, music, and movie/TV show purchase histories, age bracket, metro area, etc, etc), I'm surprised that their recommendations are not better.
> and on raising the quality bar with their own apps like Garage Band and iMovie.
I think they've definitely succeeded with this one. After seeing apps like that, it really makes you want to push the boundaries and really up the quality of your apps.
Apple has enormous success that is largely due to it's control freak tendencies. They make some really great innovations, and then lock everyone in to their proprietary ecosystem using the appeal of these innovations.
Locking users down doesn't work forever though. iTunes did for a while, with DRM on every song. Finally users were able to pay to get rid of it, as other sources (Amazon MP3) were offering competition. The only way I can see Apple continuing to be so successful with iOS is through continued innovation, not by caving in to developers demands for features---what developer has refused to reach Apples enormous market because they weren't happy with development tools? Something like no garbage collection seems like a small issue when considering the upsides of developing for iOS. (I really hope better web technologies will change this.)
It reminds of a quote sitting in my high school journalism room: ``People like cocaine and prostitutes, but we don't give them that either.''
> The only way I can see Apple continuing to be so successful with iOS is through continued innovation, not by caving in to developers demands for features [...]
Let's not forget that a significant (however you choose to define that) reason for the success of the iPhone was - and continues to be - due to the apps available for the iOS platform. Apple understands this - just look at their marketing.
GC? As has been said by others, it's not really on the wishlist. Most devs have much simpler requests that would make development so much more enjoyable. By the time you've written a basic HTTP request-response wrapper for the 10th time, it starts to get really old...
Fragmentation is my primary concern with Android development, and is something that I faced head on with much frustration with my own apps. But what exactly can Android do about this? It seems that Android's staggering success is at least partially based on its Windows-like approach to essentially go "broad spectrum" and get on as many devices as possible. How do you negate fragmentation without clearing out a large swath of your device base?
"On the whole I like Android even more than iOS. [Mention of Java, and less polished dev tool chain]. I can live with those quirks, though, and otherwise it’s mostly a developer’s dream: powerful, flexible and open(ish)."
So, as you might expect, the Apple "requests" are "Please be more like Android". Having done a lot of iOS dev, Garbage Collection isn't even in my top 10 wants (his claim that it adding it would halve iOS dev times is bunkum). An Android like multitasking model is also not in my top 10 (widgets + the ability to do preemptive content downloads would cover ever use case I've ever wanted, and basically every other need I've seen). His repeated use of "fanboy" also gives the article -20 karma: Apple, and Apple developers never said multitasking is evil, just that unrestricted desktop (i.e power unlimited device) multitasking was a poor fit - a position that's still true.
For iOS, I do want: Better notification system. The ability to silently respond to pushes (i.e. Update my databases without showing any UI). Better system wide connectivity notifications. Better inter-app connectivity (something like Androids intents, I guess). Cocoa data bindings. A sync service API (desktop to iOS or web service to iOS).
I do not want iOS to become OS X, or a desktop OS. That is not helpful to me, or my users. A phone is not a tiny laptop, and frankly, nor is a tablet.