Musings on the contacts user experience

I've been looking at the contact feature for Gnome 3.2  [1], trying to
understand what we want from this and how it would look. The initial
page talks about a standalone contacts application, and while I think
that is needed its not really the full extent of what we
want. Contacts are a large part of social interaction, and social
interaction is a huge part of what computers are used for these days.
So we want to make these an integrated part of the desktop
environment, rather than some external app. This means we want (in
addition to any separate app) integration into the shell and the other
apps in the desktop.

Historically contacts have been just the data in the address book,
something you type in once to make sure you don't forget it and then
rarely look up. But things have changed. With the advent of social
websites, etc we get to skip much of the "type in info" part, and we
should be able to use the available information in many new ways.

So, what kind of things do we now want to do with our contacts
information? Here is a pretty comprehensive list of things that you
might need contact information for.

* Initiate direct conversation over the internet.
  This is typically email or chat, but can also be voip/skype, or
  e.g. facebook messages.
* Initiate communication via external means: snail mail, phone nr
  You'd look up the data in the contact and write it on a postcard or
  dial it into your phone (or initiate the call via bluetooth)
* Open up personal web pages (facebook page, blog, etc)
* Look up information about the person
  This can be things like birth date, pin code for house, map to house,
* View recent conversations
* Send files to a contact
* Export/Import contacts, and easily send them to someone else
* Allow DND of contacts to apps, like the evolution composer
* Get last known (geographical) location
* Get availability status for im
* Get last update (facebook, twitter, etc)
* Edit contact data
* Merge/link contacts from different sources
* Extend presentation of contacts in the UI
  For instance, hovering over an email address shown in an app might
  show more contact information, including current online status.

Obviously an important part of this is a common platform that supports
all these features, and we have a bunch of good technologies for this,
but I want to start with the user visible side instead. So, how would
this look to the user?

I'd like to start with email (i.e. evolution). This is where our
current address book is, and one obvious step is to remove this in
favor of a shared address book dialog. Additionally we need to make
sure all the places thats currently using the address book in
integrated places, like the email address typeahed, etc, also support
all the new data. 

Overall this is not a large change, the main difference is the address
book dialog. I don't think the traditional address book is much used
in real life though. Email addresses are almost always looked up
directly from the composer (via typeahead or the add addresses
dialog), so its unlikely that the changes made here affect how users
work with email contacts. 

This is bad, because we'd like to introduce a workflow that starts
from the idea that you're gonna communicate with a person, so you look
up the person and then see the available communication routes and
chose one. This seems more efficient than starting with selecting a
communications method and only then looking up the contact, because
you'll be missing a lot of potential information to chose the right
method (for instance, when looking up the person you might
immediately see that his status is "on vacation").

In order to introduce this workflow for email we need to get the users
used to it for other reasons. Just adding it as a possible way to
initiate communications doesn't seem enough. The natural way to do
this is via IM. When sending an IM message you always start by finding
the person, and then initiate the communications. In a traditional
system this is done via the IM main window, and if you think about it
that window is really just a contact list. 

So, lets merge the traditional IM ui with the address book. Resulting
in an integrated IM system that is also an entry into other forms of
communication (and the other usecases above). This is especially
fitting given the partial IM integration we already have in the shell
(ability to get notified and reply to IMs, but you have to manually
start a not-quite-integrated IM app to send IMs). 

How would such a ui look? I'm not sure, but to be usable it has to be
easy to reach, i.e. it can't be a two-step thing (first find the
contacts app, then find the person) it has to be directly available in
the shell. The possibilities that I see are:

* An icon in the system tray area which gives dropdown with online
  and recent contact shortcuts, as well as an item to open the
* A people tab in the overview
* Return contacts when searching in the overview

None of these are imho ideal. The search one is very efficient, but
not very discoverable, so it must be combined with something else. The
icon in the system tray is not really matching the purpose of the
system area (to show the state of the system). The people tab while
good for fast lookups, will not be able to give the full set of
features outlined above (being pretty low in UI complexity), and will
make it hard to interact with other apps (via e.g. dnd). So it can't
replace a full address book dialog, and doesn't make it natural to
reach it quickly.

Here is a start idea of a possible UI that builds on a combination of
the above:

* The address book is multi-window. The main window lists contacts in
  very short form, and allows searching grouping, sorting, filtering,
  selection, adding, removing, etc. It also has a few shortcuts on
  each contact to quickly start a conversation, but the main operation
  on each contact is bringing up a separate window with
  the contact information, status and possible operations. It probably
  looks something like the two-pane design on
* The overview gets a new tab "people" which contains a subset of the
  contacts information (online, favorites, recently contacted, etc)
  with a small preview of the contact (picture, name, nick, im status, 
  last tweet, last IM, etc). Clicking on it will bring up the contact
  in a window, just like in the address book.
* Search in the overview includes search hits from the full set of
  contacts, looking and working similarly to the people tab entries.
* Make it possible to go online on IM from the user menu
* Add a shortcut to the address book on the dash by default. 

The weakest part of this is imho the dash shortcut, as it makes the
contacts dialog seem like an external app rather than a core thing, but
I can't find a better place for it.

We may also want to allow adding contacts to the dash, just to make the
contacts a first class citizen of the overview, but i'm not sure how
useful this is in practice.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]