Linked by Thom Holwerda on Wed 30th Jan 2013 23:06 UTC
PDAs, Cellphones, Wireless And so, today, RIM announced its Hail Mary - a brand new mobile operating system (well, sort-of new), as well as two new devices. In addition, the Canadian company also officially changed its name from Research In Motion to Blackberry. The first few reviews of Blackberry 10 are already out, and it's not bad. The problem, however, is that in the case of Blackberry, 'not bad' could easily mean 'not good enough'.
Permalink for comment 551111
To read all comments associated with this story, please click here.
RE[4]: Wishy Washy What?
by Nelson on Fri 1st Feb 2013 07:47 UTC in reply to "RE[3]: Wishy Washy What?"
Member since:

That's the idea indeed, though from what I've heard Windows 8 is falling in the iOS trap of stating that "apps can do nothing in the background, save for arbitrary tasks X, Y and Z which we have received hundreds of support requests about". This, in turn, leads to significant UX problems as soon as a user does something unusual, such as VPN services periodically disconnecting themselves unless managed by OS services that are not subjected to arbitrary restrictions. Can you confirm or infirm this?

I can confirm this, but the amount of things they are allowed to do is much more robust.

There are various types of background tasks that fire when a predefined trigger condition is met. Things like "User logs on", "User obtains internet", "AC power is plugged in" And other things like periodic updates as often as 15 minutes.

You can also do background audio and background file upload/downloading and executing a background task when receiving a push notification.

If you need to keep an underlying socket connection awake in the background, you can have up to 7 apps which do this in the background and provide real time communication.

In place of such draconian restrictions, I would prefer mobile OSs to use better task prioritization and power management algorithms, so that tasks can be left running in the background as long as possible without significant sluggishness and power draw occurring. Technologies such as soft real-time scheduling have been invented for a reason, after all...

I don't disagree that there is much to do here. I think its a significant step forward for Windows 8, but it's far from ideal for a variety of scenarios.

Looking forward, I'm sure WinRT will be improved to support a wider range of situations in which background processing is useful.

I'm sure there will always be corner cases that are missed, but I think this addresses a decent number of use cases.

Another potential issue which I see in your post is that apps apparently must explicitly implement state saving (as also done on iOS and Android), rather than having it done automatically by the OS (as done when simply committing the RAM of unused processes and libraries to some form of swapfile).

Microsoft cedes control to the developer because they know best what they'd like to save. Sometimes it isn't necessary to save the entire state of an app if you just need to save a few select values within your UI.

Maybe I just need to save the current page, and the value of a single scrollbar.

Also, it is at the discretion of the developer to determine when the state is stale so to speak. What if the state is saved, and the user doesn't run the app again for a week? That data isn't really relevant anymore.

From experience, such mechanisms also lead to UX problems in practice : apps do not display the same part of their UI as when they were left, only part of the state is saved, some apps cache all expensive IO data and resume quickly while others take a lot of time to restart after being killed... To sum it up, user-space developers should never be trusted to perform the job of an OS properly, but OSs which ask them to save their state themselves are doing just that.

Microsoft takes very seriously the speed to suspend and resume. I think if it takes more than a few seconds on a low power PC you fail certification.

Developers are forced to be mindful of what they save, when they save it.

Personally in my own apps I do a progressive save in which I take advantage of idle CPU time to periodically save non volatile state to the disk. It reduces the amount I need to save at a later time.

Its always a balancing game, and especially when you're dealing with finicky ARM processors which aren't really that fast, you need to be very careful to not make your state saving code a slow path.

TL;DR : Unless I'm misunderstood about the way Windows 8 does things, mobile multitasking still needs more work.

I think you have it about right.

Reply Parent Score: 3