Putting the “person” in “personal computing”
When performing a task on a computer, what types of objects do you work with? Files and folders? Web pages? Application programs? Settings? Each of these have well-established conceptual models which, on a good day, provide some consistency in different contexts. Files have a hierarchy of folders, web pages have histories and search, applications live in a nested menu, settings have tabbed notebooks, and so forth. The details of how these work may vary, but the conceptual model is the same. Donald Norman, among others, tells us this is a good thing, because it makes these systems easier to learn.
In Ubuntu, our top-level navigation (the GNOME panel) includes: Applications (a menu of programs), Places (a hierarchy of files and folders) and System (mostly tabbed settings dialogs with a few odds and ends). Web pages, for the most part, live in the web browser application, as they do on other systems.
Now, I don’t know about you, but I spend a lot of my time on computers working with people. But where are they to be found? Some of them are in my web browser, on social networking websites and blogs. Others are in my instant messaging client, in channels, conversations and contact lists. Others are in my email application, in address books and threads. Still others are at the opposite end of a voice connection. None of them look or work the same way.
What is a good general conceptual model for people in software?
I think the social networking sites come the closest so far. There, one’s interactions with people are oriented around social concepts. People:
- Have a profile which describes them for purposes of recognition and acquaintance.
- Have relationships with other people. The word “friend” has been abused into common usage on the web to denote “someone who is known to me”. People are also members of groups, are linked by participation in organizations, and so on. Relationships organize people just as hierarchical folders organize files.
- Perform activities, which are of interest to people with whom they have relationships. These may range from trivial status updates to detailed descriptions of recent activity. Activities provide social context and the opportunity to respond to events.
- May be present and available for synchronous communication (or not) by various means. Presence provides a notion of who is “here” to interact with right now.
How might we translate these metaphors onto the desktop?
There seem to be plenty of social networking applications, but so far, they’re little more than alternative user interfaces for the corresponding websites, with some added features. What better place than the operating environment to represent people, who are independent of any particular program or data? What kind of activities could be possible and natural?
- Collaboratively develop any type of content with your friends, independent of a particular application
- Let your friends know what you’re doing, without having to write about it separately
- Control access to data based on social relationships, rather than abstract credentials like passwords
- Give a copy of any file to your friend as easily as putting it on flash media (this still isn’t easy enough in 2008)
How could it look? What would a People menu look like? A simple first attempt might include only people you know, and indicate their presence. Selecting a person would display an interactive window with their profile, recent activity and associated data. Controls would enable you to contact them, or share your applications, session, data or activity. Your ideal email address book and IM contact list would display the same people in the same fashion (Telepathy is helping make this kind of integration possible).
Adding or removing a new acquaintance would instantaneously take effect in all relevant applications: receive an email from someone, add them to your list of people, notice they’re online and show them the new song you’re working on, all in one fluid motion.
Sign me up.