Like any software platform developer, iPhone app developers are naturally anxious to get their hands on the new goods. The new iPhone OS 3.0 beta is rich with updates, upgrades, and new features. But it's worth reading the proverbial fine print (a README file in this case) before any developer installs the 3.0 OS and SDK. It turns out Apple's README really means what it says when you're warned the iPhone OS 3.0 beta breaks ties with the OS 2.2.1 and earlier versions. There are some meaty implications to upgrading to the 3.0 OS beta developers will have to deal with.
Apparently Apple is holding back compatibility with iPhone OS 2.x apps until a later update during the 3.0 OS update, or maybe not at all. Warnings like these are what iPhone developers are presented with prior to upgrading their Macs and iPhones to the iPhone 3.0 SDK and OS (respectively).
"Applications targeting iPhone OS releases prior to 3.0 beta cannot be tested in this seed"
"This software should only be installed on devices dedicated exclusively for iPhone 3.0 beta application development"
"Devices updated to iPhone 3.0 beta cannot be restored to earlier versions of iPhone OS"
"iPhone SDK for iPhone 3.0 cannot be used for submitting iPhone OS 2.2.1 applications to the App Store"
It's not at all unusual for new software and SDK releases to have new requirements and some restrictions during beta periods. But it looks like Apple is providing a one way path to 3.0 with repercussions to 2.0 versions of apps and developers trying to support them. I say this for two reasons.
First, statements like "Devices updated to iPhone 3.0 beta cannot be restored to earlier versions of iPhone OS". Devices upgraded to the 3.0 beta can be upgraded to future 3.0 betas as well as the final 3.0 release, but there's no going back to version 2.x once you've made the jump over to the 3.0 beta. The 3.0 must permanently update some boot code or flash memory because I've seen first hand a developer's phone that could not be brought back to life running 2.2.1. Similarly, creating 2.x versions of apps on a Mac upgraded to the 3.0 SDK ran into problems.
The second reason I say this is because the 3.0 OS deprecates some features within the 2.x OS/SDK. That means if you happen to use those features, and my understanding is it's pretty common to do so, you'll be forced to make programming changes to your iPhone app before it can fully function on any
iPhone running 3.0. At this point the app may still run but not function properly if those deprecated APIs are used by the app. That could lead to a lot
of confusion for users and headaches for app 2.x developers.
One of the principles I always followed, based on some sage advice of software architects I've worked with, is you are expected to provide backwards
compatibility for APIs over three versions of your product. That way developers don't find themselves in this predicament, where they are forced to make
software changes that could have some significant implications to their code. Apple must have made some pretty fundamental changes deep within the iPhone OS code that they're deprecating features in the OS.
All this has two important implications. If you are an iPhone developer, you'll need two development machines and two iPhones to be able to work on your 2.x OS-based apps while checking out and upgrading code for the 3.0 OS. I would guess many iPhone app developers are either smaller micro-ISVs or individuals who won't have the cash to shell out for a second Mac and iPhone (and AT&T contract) so they may be forced to hold off even downloading and checking out 3.0. That could mean waiting several months, even until late summer or this fall depending on when 3.0 is officially, to start working with 3.0.
This seems like a catch-22 situation, where app developers might be late in updating their apps but users need those upgrades so the apps function properly under the 3.0 OS.
The other implication is the impact to end users upgrading to the iPhone 3.0 OS when it's released to the masses. Apple's had a bad history of failed iPhone upgrades, bricking iPhones, iTunes server issues, and stranding end users with non-functional or wiped iPhone devices. Don't know about you but I'd be pretty cautious before upgrading to 3.0 when it comes out. Don't want to be stranded on some business trip with a non-functioning 3.0 iPhone because I decided to upgrade in the first day or so when it comes out. Best to sit this one out a few
days (maybe a week) until the kinks, possibly some big ones, get worked out of this pending iPhone upgrade. And it would be well worth checking out if a 3.0 version is available for any important 3rd-party apps you rely on.
This story, "iPhone 3.0 Beta Comes With Some Heavy Restrictions" was originally published by Network World.