Monday, September 17, 2012

Mental models, expectations and mobile OSs

Say you are in a Twitter feed (on your mobile device) and see a link. You want to know more so click it. It opens in a new app, the browser. Now, you switch apps to go answer an SMS. After a bit, I switch back to the browser to continue reading... and it's not in the recent-apps list. It's conceptually not running!

Okay, say you never left and in the browser, press Back. The stack shows that it thinks it's an extension of the Twitter app.

That keeps on making my brain hurt. And, it gets in the way of how I want to use things. I want to say, open a browser, then read it later. But Android wants me to read the whole article now, and woe unto you if you are distracted and see who responded to you in Twitter. Clicking that alert destroys the stack also and you can't get to the browser again.

Oh, and it's not really true. It IS in the browser. If I run over to the icon, and launch the browser, the page Twitter linked to is open. And the back stack is cleared from the Twitter side, so... it's conditional.

Android is easy to pick on, but all OSs do weird things, which I feel are not helpful to users understanding of what is going on, or to getting work done.

The other thing that bugs me is the total lack of visual integration. The browser, to keep using this one case, is just launched afresh, and may even show a splash screen. iOS integrates Safari into things more, but it doesn't /look/ like it is. It's just the function still.

I like Martin Gedde's comment a couple weeks ago about Twitter being a hypermessenging service. At least for those with links, the whole tweet is a link label, that leads to more hypermedia. But it, or SMS, or Facebook, doesn't really act like that.

I want this to be more clear, and the browser (or whatever other service is being used) to open in, say, a popup:

Apple's SVWebViewController, explained best here, offers something approaching this, and proves it's not insane to do. Of course, it's limited, and since it's an option not only will few use it, but mostly for specific needs (pop up ads are my guess). If I built my social network site to use this for all links, it might even confuse users with the different behavior.

Why do we care?

And all this is why I am a picky bastard, and hardly ever say "ooh, check out this cool new app." Many of the fundamentals of GUI design bug the crap out of me, and I feel are there out of inertia, are inherited poorly from desktops (themselves too often really inherited from CLI), or are driven by engineering needs without too much thought.

But enough about me. The real issue is that there are things that seem to stop users, in at least some domains, from fully-embracing mobiles. Printing has been bugging me for the last few weeks; I am doing work for a bank, and keep having to explain that you can't /really/ print from mobile. I tried it last night myself and could set it up, but can hardly imagine most people doing so. But why?!

Okay, not to harp on specific technologies, though. Just that, unless you do design OSs, you need to not just blindly accept things, but be explicitly aware of the methods and limits of your OS, and anywhere it might confuse the user, when they try to use multiple apps at once (how do they get that SMS code if your app closes when not in the foreground?), import data (your website can't upload on most devices) or send files to the world (printing). You can work around these, but only if you know they exist.

No comments: