Now that a significant number of third party applications are running on iPhones, it’s inevitable that the iPhone has become less stable. Phone lockups can occur and reboots are required. I have also heard from several developers that they are getting ‘low memory’ messages in their applications when the phone should, in fact, have lots of memory available.
This isn’t something limited to the iPhone. S60, UIQ and Windows Mobile all have problems when 3rd party applications behave in ways their authors didn’t originally intend.
It’s rare that applications directly interfere with one another. Operating systems provide mechanisms that give process and memory isolation. However, it’s common for applications to lock shared APIs or leave underlying hardware resources in states that can’t be used by following applications.
So what can be done about this? Testing plays a part on Symbian phones. The Symbian Signed process ensures some applications are tested against basic criteria. I say some because some applications that don’t use particular protected APIs aren’t tested and these can misbehave. Also I say basic criteria because testing isn’t and can’t be exhaustive. It’s possible for faults to pass unseen through the Symbian Signed testing.
In theory, Apple has a similar process. Apple is evaluating applications prior to releasing them on the App Store. Obviously with the volume (thousands) of applications and updates, it’s understandable that testing can’t be that thorough.
None of this is a criticism of iPhone, S60 or Symbian. It’s just an observation. It’s also not my intention to criticise or highlight the vulnerability of 3rd party applications. The major handset OEMs have shown us that built-in OS software can be just as unstable.
I have been thinking about the possiblity of new OS based protection mechanisms for a while now. I commented on how Nokia might embed a battery monitor application to report on applications unduly flattening the battery. Also, I talked about how new mechanisms might police third party applications on the phone.
Perhaps some kind of ‘intelligent status’ application could keep track of what applications use what APIs/resources and report on (and even try to fix) resultant erroneous behaviour? I wonder about the performance hit. However, OSs such as Symbian are already hooking into API use to cater for Symbian capability-based platform security.