Multitasking without background execution.
There's a bunch of benefits that people want.
Benefit A) They want to be able to leave an app, change a setting or make a call, and then go back to where they left off.
Benefit B) They want to swap, back and forth between two or three apps, without restarting and reloading.
Benefit C) They'd like an application to be able to carry on doing something in the background, even when another application is running.
And in a zombie like monotone, a the assembled cohorts of geekdom proclaim the solution is background execution.
But multi-tasking as implemented on most mobile platforms breaks some other expectations that people have.
* That the battery life or performance of a device should not get worse unless the user to plays housemaid and cleans-up left-open applications.
* That a device fails, not because of what is on the screen, but is the fault of some software that was started two days ago.
While technically-experienced users, completely understand there are inevitable penalties to having background apps running. The typical consumer does not.
From my perspective, there is technical solution which offers all of the benefits without any of the penalties.
Benefit A and B can be delivered by simply not sending a quit message to applications when the home button is pressed. Instead of quitting apps, the OS should freeze apps - leaving them in memory. Only when memory is running low should an app be selected for quitting.
The new iPhone hardware has enough memory to support multiple apps. 90% of the complaints about "multi-tasking" would be addressed by simply implementing "lazy quitting".
These un-quitted apps remain in memory and can re-start immediately with no loss of context. We know what tapping the icon of a frozen app would be like. Tap Mail - and you see what un-freezing looks like.
The system, and not the user plays housemaid. When apps are finally booted out of memory, they quit conventionally - and if well written should restore quickly. There's no real benefit in explaining to the user the difference between "loading" an app and "un-freezing" an app. They will simply notice that one is a lot faster.
But there is another reasonable feature that multi-tasking is proposed as a solution. Allowing an app to do stuff while another app is in the foreground.
The most common example is streaming music, but there are other examples.
The reason Apple does not allow 3rd party apps to run in background is that it does not trust them to play nicely. Apple apps are trusted. Not anyone else's.
Badly-written, bad-neigbor apps could steal resources from the foreground app and create an unacceptable user experience. For the technical expert, this is a non-issue. But for the typical user, it is Microsoft-like mumbo-jumbo.
I think there is a solution here too. Hand the execution of these background task over to a trusted delegate. Either a part of the OS - or a specially crafted code fragment, which can be safely allowed to run in background without hogging the system.
Such entrusted services, could wait for network events, stream music or log data, without the parent app being allowed to foul outside its sandbox.
I would like to see both of these implementations in OS4.0
C.
There's a bunch of benefits that people want.
Benefit A) They want to be able to leave an app, change a setting or make a call, and then go back to where they left off.
Benefit B) They want to swap, back and forth between two or three apps, without restarting and reloading.
Benefit C) They'd like an application to be able to carry on doing something in the background, even when another application is running.
And in a zombie like monotone, a the assembled cohorts of geekdom proclaim the solution is background execution.
But multi-tasking as implemented on most mobile platforms breaks some other expectations that people have.
* That the battery life or performance of a device should not get worse unless the user to plays housemaid and cleans-up left-open applications.
* That a device fails, not because of what is on the screen, but is the fault of some software that was started two days ago.
While technically-experienced users, completely understand there are inevitable penalties to having background apps running. The typical consumer does not.
From my perspective, there is technical solution which offers all of the benefits without any of the penalties.
Benefit A and B can be delivered by simply not sending a quit message to applications when the home button is pressed. Instead of quitting apps, the OS should freeze apps - leaving them in memory. Only when memory is running low should an app be selected for quitting.
The new iPhone hardware has enough memory to support multiple apps. 90% of the complaints about "multi-tasking" would be addressed by simply implementing "lazy quitting".
These un-quitted apps remain in memory and can re-start immediately with no loss of context. We know what tapping the icon of a frozen app would be like. Tap Mail - and you see what un-freezing looks like.
The system, and not the user plays housemaid. When apps are finally booted out of memory, they quit conventionally - and if well written should restore quickly. There's no real benefit in explaining to the user the difference between "loading" an app and "un-freezing" an app. They will simply notice that one is a lot faster.
But there is another reasonable feature that multi-tasking is proposed as a solution. Allowing an app to do stuff while another app is in the foreground.
The most common example is streaming music, but there are other examples.
The reason Apple does not allow 3rd party apps to run in background is that it does not trust them to play nicely. Apple apps are trusted. Not anyone else's.
Badly-written, bad-neigbor apps could steal resources from the foreground app and create an unacceptable user experience. For the technical expert, this is a non-issue. But for the typical user, it is Microsoft-like mumbo-jumbo.
I think there is a solution here too. Hand the execution of these background task over to a trusted delegate. Either a part of the OS - or a specially crafted code fragment, which can be safely allowed to run in background without hogging the system.
Such entrusted services, could wait for network events, stream music or log data, without the parent app being allowed to foul outside its sandbox.
I would like to see both of these implementations in OS4.0
C.