I've had more fragmentation problems with iOS/iPhone than with Android
> I was not worried about breaking it again as the changes in this update did not touch anything that had issues before...I must have fumbled in the SVN check in.
Even if this wasn't the case, it's always possible that some new chunk of code you're adding requires a library that doesn't exist on down-level OS versions. Or the new code doesn't properly check existing libraries for the availability of classes or methods (e.g. some UIKit classes only exist in iOS 4.0 and up. To ensure that your app doesn't crash on older versions, you need to test for the existence of the class you want to instantiate). If any of these conditions hold true, crash city.
I own every iPhone that Apple has released, and I keep my original iPhone on 3.1.3 for precisely this kind of scenario. In fact, just yesterday I had to fix a couple iOS 3.1.3-specific bugs, and couldn't have done it without that original iPhone.
Long story short: if you're going to claim you support a particular platform, you better test on it. If you can't or won't test on it, then don't support that platform as a deployment target.
Some things that may have helped him not get into issues with Android -
You can create AVDs (Android Virtual Device) that have different hardware capabilities (RAM, Camera, SDCard, Screen Sizes etc.) and run different versions of Android - 1.6 to 2.3 as of now. This makes testing your app very easy - you just set a minimum SDK version and if your app doesn't do weird things (uses features that don't work on a version of Android and declares support for that version)- most times it works very well.
API Levels - API changes are mostly additive and old APIs are carried forward as-is. http://developer.android.com/guide/appendix/api-levels.html
More than anything though - the developer can just push a beta in the Market and receive excellent feedback from users - user submitted stack traces, device info, feedback etc. can be very valuable in identifying and fixing compat issues.
How is this a tale about fragmentation on either operating system's ecosystems? It reads more like a story about how the developer has a faulty approach to releasing software. He made the mistake of making an assumption that turned out to be erroneous, and then had an issue with his version control. He fixed the issues and everything was good with the world. Once again, how is this fragmentation? If he where complaining that the review process takes too long, then point taken and I agree, but this has more to do with user error than with the ecosystem itself.
The problem is that Apple deprecates their SDK really quickly. As developers, that makes it really tough to test old versions of iOS when installing an updated SDK REMOVES previous versions!! Even if you select an older "OS Deployment Target", you're out of luck unless you have a device to test it on. The Simulator is always running the latest version.
I guess they assume everyone will upgrade, but a lot of people don't or can't.
How is this a major fragmentation problem? This is a story trying to point out fragmentation issues but only points to one problem (testing on iOS 3.1.3). There are many more fragmentation issues with Android than this one story.
Every developer who has ever used the Android VM should know that testing on it IS NOT a bulletproof test. Sometimes things work on the device which aren't working in the VM even if it is the same version, resolutions and so on. Sometimes things will work in the VM and not on the device.
You don't believe me? Go on and try to stream a video on a Android 1.6 VM.
BTW: I'm developing a iPhone App in my spare times and a Android at work.
For some of the apps I've written (status: trying to get the frame-rate up) the constantly changing screensizes of the devices is a frickin' nightmare.
I'm currently really only supporting iPad because of that... but of course Apple will change the screen size on iPad 2.0 when that comes out. Aargh.
Went and bought an iPod-touch so I can test the 960x640 res if I ever get enthusiastic enough about it....
...then it turns out that Apple's implementation of multi-tasking is going to be a nightmare of a whole new dimension... lovely.
Look, this guy is right on from an OS fragmentation perspective (which is what he is talking about). Both iOS and Android have OS version fragmentation in the real world and the fact is that Google makes it easier to test for and Apple makes it very hard. I have an app(game) written for both and dealing with the iOS side of things for this is always harder then on Android.
Developer error/ignorance is cross-platform and runs on both Android and iOS. You can't blame the fact that you didn't test on the version you released for, know how to install older OS versions to test with, or check documentation on Apple OR Google.
Use TinyUmbrella or Saurik's MITM server to save your device's SHSH hash for each new iOS version that comes out. Allows downgrading to any version you had installed previously
So it's not fragmentation, Apple just doesn't let you test in previous versions. This was an easy fix for all you needed was only one phone. Unlike Android who has over 100 different versions of Android, yes you have the emulator for each base version but you can't guarantee for every phone.
Instead of testing on 5+ devices for Android, you just have to buy an old iPod touch with 3.1.3 on it. Is it too costly for you?
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
Gold autumn, personality Men’s clothing Shoes, Travel bag that grabs an eye coat Chao packet Free transport
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
-------- http://bit.ly/eTAvV5 --------
'I found some potential problems in my app, fixed them and posted an update'
'Of course this was a time when Apple approved an update fast and it went out before I could test and I had not fixed all the issues.'
'I must have fumbled in the SVN check in.'