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, etc * 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 contacts. * 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 http://live.gnome.org/Design/Apps/Contacts * 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. [1] http://live.gnome.org/ThreePointOne/Features/Contacts _______________________________________________ desktop-devel-list mailing list desktop-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/desktop-devel-list