The universal back button

Brent proposed a very sensible idea today on his blog which I would like to take a tangent from and run with.

I read a lot on the web and increasingly it’s becoming a social activity. Links come from all directions: Email, Twitter, RSS feeds, IM, Facebook and surprise surprise, other webpages. These links are the stuff of many of conversations we share, and a great thing about the web is the friction for the conversation to move across the various internet technologies is minimal. The URL breaks all the boundaries. In theory anyway.

On my Mac when I click a button to pass a link from one application to another, it’s up to me to remember where it came from, which conversation it was central to and who and where I should direct my response to regarding it. This mental load heavier on an iPad [or iPod Touch in my case] when you can’t leave the window of the first application visibly open as a reminder.

The popular response to this problem is to design the application around the conversation activity. Build the browser into the feed reader, integrate the twitter posting widget into the photo software, add the email app into the bookmarking do-dad. This approach will bring glee to those who it fits nicely, but tends to become less useful, or worse, heavy and bloated for those with slightly different needs.

The web has an answer to this I would love to see some analogy of on my Mac - the HTTP referrer. When you click a link on a web page, simplistically your browser will send a request for that page to the server hosting it; Along with that request, it carries a note of where the link came from. This information will appear in the visitor logs or Google Analytics reports for that site. It goes a long way to connect the participants of online conversations.

The closest thing to it in practice on my computer is the history in my browser that enables the back button to work. I am web developer so here is my question to those who know about this stuff: Is it possible for the back button escape the browser?

On a Mac maybe something like Choosy could form the basis for the background app that Brent speaks of?

Imagine clicking the normally greyed out back button and have your twitter application launch - displaying the tweet you clicked to load that page. That would fill this particular software user with glee, at least until I quickly forgot there was a time when I couldn’t do such a thing.

Further thoughts

25 May 2010

Unlike me, Rainer knows a little about OSX development and goes on to explain how it might be possible, before concluding:

All this needs filing enhancement requests and Apple would have to do the required twiddling inside their code base - or rather, bases, as this would be useful to have both on the iPhone/iPad and the Mac side. It would take a long time, if it’s done at all.

The alternative would be to developers to, informally, establish a convention for incorporating this into the URL itself. So we’d have something like: calledscheme:///the/url/parameters&?REF=callingscheme://some/url/to/return

Probably the second part would have to be suitable encoded/escaped, too. Maybe this would be a good topic for discussion at WWDC?

I have faith that the Mac dev community can get together to make this work.

27 May 2010

Daniel Stødle has done some clever work. He has released a working menu bar app that infers the previous application from debugging information already available in Apple events.

By continuously analyzing the output from the console log, UBB can infer which app caused a different app to open a file or link, and thus create a “back relation” to the app.

For instance, when I click a link in iChat, a “GURL” Apple Event is sent to my default web browser (Safari, FIrefox, etc.). UBB notices this, and when you click the universal back button in your menubar, UBB switches you right back to iChat.

Of course, the mechanism has some drawbacks. For instance, there is no association between different windows - the association only exists between different apps. So if you have several windows open in iChat, the UBB won’t necessarily bring you back to the window that sent you to Safari in the first place. But, we have to start somewhere, and this is as good a starting point as any.

This is a bigger step in than I could have imagined possible in such a small time. Daniel includes a link in this blog post to his source code for others to build upon. I’m looking forward to more looking back on my Mac!

28 May 2010

Billy Gray adds his support for Brent’s suggestion and expands on the need for a service discovery mechanism.

Such functionality would be an incentive to uninstall apps from our devices to keep the list of apps jostling to accept that URL to a minimum. I have a lot of Twitter apps on my iPod! For example, the number of apps my Mac offers when I hover the ‘Open with’ contextual menu item on a .html file is well out of control. An interesting problem.

Comments

Justintosh

Commented

4:30 PM 26 May 2010

It should definitely be possible to create a universal back button, not sure how it’d work though on a computer. Palm has implemented this feature beautifully on WebOS, with the back-swipe on the gesture area. Google has a somewhat inferior implementation on Android, with the universal back button. Both work pretty well, though Palm’s version is graceful and sleek, while Google’s is brutish but essentially effective. It’s the one thing I miss on iPhone OS when picking up my iPad after using my Pre for a while.

Interesting, I have not used either the Palm or Google systems so I can’t be sure, but I suspect we are talking about two different things. The title of this post may be misleading, I should attempt clarify my intention.

The accessibility of our most recent history of window focus is well covered on Macs. This form of cross application navigation may be a valid answer to the problem Brent raises on a single window portable device. It is not, however, what I’m imagining.

What I see lost using my desktop machine is the origin of the URLs passed between applications. For example if I click a link in my Twitter app and it opens in a new tab in my browser, it may be some time before I get around to looking at it. In the meanwhile I’ve done enough other things to make a button that took me back through it all very tedious.

My hope is to be able to navigate the single step (from my browser in this case) back to a view in the application from which I sent the URL to my browser.