Social Computing

A couple of days ago I read, and commented on, a blog entry called “The Case for More Community on Your Ubuntu Desktop (Part 1)“. There’s no sign of Part 2 yet, but in the meantime this post is my effort to expand on the comment I left there…

There are two common operating sequences when using a computer:

1) Load an application => Open a file (or create a new one)
2) Navigate to a file => Pick an application to open it with

These two approaches are sometimes referred to as “application oriented” and “document oriented”. In the former case you might know that you want to write a letter, so you load your word processor of choice, type your letter, then save in your preferred location. If you later want to re-open the letter, you might navigate to that location and double-click on the letter’s icon in order to launch your word processor.

These two approaches are so firmly established as the “normal” way to drive a computer, that modern operating systems have all implemented interfaces to help guide the user along one of these paths. The Windows Start Menu, the Ubuntu/GNOME Applications Menu and the MacOS Dock all aim to simplify the application oriented approach, making it as easy as possible to launch your commonly used applications. Meanwhile they also all have simple ways to get to your home directory, desktop, Documents folder and any other locations you may have bookmarked in order to streamline the document oriented approach. Ubuntu, for example, carries a “Places” menu right alongside the “Applications” menu.

When it comes to the desktop, panels, quick-launch bar or dock an effort is made to accept either files or applications, and to abstract away the differences. As a user I can put my most used applications, most visited folders, and most opened documents onto the desktop and expect the operating system to do the right thing when I double-click on any of them.

Now consider another common task: sending an instant message (IM) to someone I message frequently (using Ubuntu 9.04):

3) Click the messaging indicator => Select “Chat” => Double-click on the person’s name => Start to chat

This, of course, assumes that they’re available to chat. Otherwise I could end up closing the chat client and launching an email program instead.

There are a couple of problems with this approach. I have to decide on a communications channel first. If I choose to email them, it might be that I could have more efficaciously messaged them. If I choose IM first, I might find that I have to fall back to email anyway. There’s also the interstitial step of opening the chat client and finding the person on my roster, even if it’s the same person I message 99% of the time.

Here’s my idea: make People (and Groups of People) into first-class objects like files and folders. Give me a “People” menu next to my Applications and Places. Let me drag my favourite people (kicking and screaming, if necessary) onto my GNOME panel or desktop. Let me group people together into folder-like objects – though of course a person could be in more than one group.

Now I’ve got an icon representing my commonly messaged friend sitting on my GNOME panel, I can see at a glance if they’re online or not. I can click on the icon to send a message, and only be presented with the options that make sense (no IM if they’re offline, no videoconference option if their client isn’t capable of it). I can drag a file to their icon in order to transfer it to them: if our IM clients can negotiate a direct transfer then that will happen, otherwise it will be attached to an email, and all without requiring any further interaction from me.

It almost goes without saying that the menu associated with a Person icon should be include an API for application developers, so that it can be extended to show their latest Tweet, their Facebook status or their most recent Flickr upload. In a corporate network perhaps the icons could be tied into the phone system to show who is busy on another call, or to allow calls to be transferred via drag-and-drop.

It should, of course, be possible to select more than one icon, and be presented with options that make sense for multiple targets. Instead of “Instant Message” you might be presented with “Start a Chat Room”. Choosing to send an email would automatically BCC to your selection. Dropping a file might give you the choice between sending it directly to each recipient (via whatever means are available) and uploading it once to a shared location before sending out the URL to everyone. Telephone conference rooms and videoconferencing options might also be available, if they make sense.

A Group icon would present largely the same options as a multiple-selection of individual People icons – it’s just a convenient shortcut for gathering people together. Double-clicking on a group should open it, much like you would open a folder, to show the individual People icons (and perhaps other groups) within it.

With applications, documents, people and groups all intermingling on the desktop there would need to be clear definitions of how they interact. Dragging a file to a Person or Group I’ve already covered – but what if you drag an Application icon? Or drop a person onto a running application? Perhaps that application’s window(s) should be shared via VNC or some similar protocol to make it easy to collaborate or demonstrate. Conversely dragging a person into your browser might offer to open their browser at the same URL – great for collaborative editing in a shared document, or just directing someone to a useful page.

There would need to be safeguards put in place, obviously. The recipient should always be able to prevent files being sent, windows opening, or browser tabs popping up pointing at who-knows-what online horrors. Perhaps, as a recipient I should not only be able to decline, but instruct the sender’s machine to automatically re-send the file/URL/message as an email instead.

Okay, so I might have got a bit carried away. Let’s roll things back a bit to a more sane level. Start with just letting me put people on my desktop or panel, the same way I can applications and files, then choose to IM or email them. That alone will save me several mouse clicks each day. The rest can come with time – but get a good API in place, and you’ll be amazed what people do with it.