Monday, April 23, 2012

People Based Computing

Summary: Currently the paradigm for the user interface is based around the desktop and around applications. All data in a system is fragmented across these artificial boundaries.

What I propose is to break these barriers down and organize the information in a system around people.

 The current User Interface that most people use to interact with computers has been great for a couple of decades now. But it is beginning to show it's age. The desktop system was designed in a stand alone environment and was evolved from a design to merely launch one application at a time which would then take over the computer screen. Multitasking was used to launch more than one application at a time. The modern desktop UI design also streamlined admin tasks such as printer, sound, and input drivers, which used to have to be configured for every application. But the barrier between separate applications from the original single tasking environment remain.

You have applications to read email. You have web email apps. Everyone has a dozen websites they like to read on at least a weekly basis. You have friends blogs that you want to keep up with. You have a half dozen instant message accounts. You have address books in a dozen places, web and in each of your email applications, or even stand alone. You have a bunch of application files, pictures email logs, instant message logs, and other data on the system that are associated with different groups of people for different projects and only your memory keeping those associations strait. My theory is that human social interaction should be based around people, not around the limits imposed by the current desktop application launcher model.

An example of the confusion surrounding the existing application interface is the mess surrounding instant message clients. There are dozens of instant messaging clients and each has a different interface. It is possible to have the same friend on multiple applications, each with a different name. If you want to try to find a conversation you had with someone you may have to check each application that you use to communicate with them.

Instead you should have a single interface that relates all these instant messengers around the people that are associated with the communication. If you know Bob and you have him as 2 different hotmail accounts, a yahoo account and an ICQ account, then all four of these accounts and all three of these methods of chatting with Bob should be under the Bob Person Icon.


Main Interface
The persons icon picture could be selected from any of the icons available from any of the online IM accounts, from a local file, or from the picture that people share in the new system as their contact picture. One of the features of a system like this is that updating your profile picture could upload the same picture to any im clients that you have configured for yourself.

If any chat account has Bob online then the user icon should indicate online. How to handle a busy status is debatable, but primarily just let these messages reflect the primary account associated with this person. If you want to chat with Bob then the account selected to initiate chat is in the order they were added, but that preference could be updated. Additionally you can right click to reveal a menu from the icon that has a list of online clients that you can chat with.

Adding mail to this interface is similarly easy. You would configure the popmail client and then have it download mail from various servers. You can associate incoming email account names to a particular Icon. If no icon is found for an incoming mail, then the mail can be assigned automatically to a new Icon. These new icons can be created in an unassigned folder to keep the main interface from getting clogged up with spam. If you only ever get a single email from one account and you never reply to them, then you can set up an auto delete for these kinds of accounts after a certain number of days.

This means that if you also know that Bob has 4 email accounts you can add these accounts to your list and if you get any email from Bob from those 4 email accounts into any of your configured email accounts those emails will be recorded as all having come from Bob. A count of unread emails by person will be added to the Person Icon. If there is no emails waiting to be read from a person then no count will be present on their icon.

Dragging one Icon onto another Icon will join these into the single Icon, merging all records into the one. Any difference in info will provoke a query and allow you to select which info is assigned to different fields, in a 2 way diff method.

The variety of social networking sites could also be front ended with this system, allowing you to send and receive contact updates and messages from friends, family and business associates.

In a similar way you should be able to subscribe to a friends blog and have any new blog entries to their accounts show up as an incoming message and take you to that entry on the site if you want to reply.

RSS feeds for websites should show up the same way as the blog rss feeds.

Looking at the history of communications with someone should show method, the time and a line of text from the communication.

Similarly you will have a directory with a thumbnail of every file you have ever received from a person under a folder in that persons Icon folder. The date you received the files will also be present and duplicate file names will be allowed.

Organizing and updating your own info is another area that is lacking. Especially when you are trying to publish this info to your contacts in a controlled manner. Similarly if you get an info update from one of your friends, then you can elect to update the info locally. And just because info has been updated is no reason to throw out any of the old info, the database for contact info should be historical, so that you could look at a friends record to see when they moved or when their telephone number changed.

Sharing your contact info with other people that have matching tags could allow you to automatically pass on all your family contacts to other family members, all your coworkers to coworker contacts at the same company. A method of resolving duplicate entries and conflicts would be necessary for this to work well.

Tagging is another powerful concept and will allow you to tag people's icons with friend, family, coworker, client and share info with those contacts based on configurable policy associated with those tags. If you update your mailing address then you should be able to easily forward that info to people in your contact list in a controlled manner with no more than a few mouse clicks. You could tag all icons with various data, such as the company they work for, and sort and search those tags so that you can easily see who you know at a certain company. Or see which one of your friends live in a certain city.

Another method of classifying items is by relationship. Son of, Daugher of, Mother of, Father of, Boss of and so on. Such relationships can be used to automatically generate a family tree, or to automatically generate a company directory. Combining the two could tell you that a family member knew someone that worked for a specific company

Integrating with a blue tooth phone to download call records, to update the phone contact list, to call a number from the computer screen should all be supported. Integrating to a variety of VoIP systems should also be integrated into the new UI design. You should be able to call someone you know on a VoIP system with a couple of mouse clicks. Part of the history of contacts you have made with someone should be a record of when you called someone.

Another very useful feature would be to set triggers to fire off reminders so that you don't forget anniversaries, birthdays, to remind you to call your friends every X number of days. A daily report summarizing all these things would be very useful.

It would be interesting to see how a system like this could tie into project management and task management. You should be able to assign a task to someone using this same system that is a mutual contact with you and get notifications of the status of the task. So that a wife could remind a husband to get a quart of milk on the way home, or a project could be assigned to a group of people and anything done within that projects space would be tied to that project. So that going into that project and contacting people in that project context would associate that communication with that project. It would still show up in that persons contact history as well, but that particular communication would also be tagged with that projects identifier so that it would show up in project history as well. All project participants should be able to follow all conversations inside that space. In this regard it would be more like a forum.

Communicating with people in these contexts could allow you to have someone that is a friend, a family member and a coworker and set the message contexts in each communication to be the right one, so that it separates out the persons communications and sets preferences for email and chat to be different for each contact, so that business contact would go through the business emails and phone numbers and personal contact would go through private emails.

Filters could be installed to prompt people to not send jokes through business email, to instead reroute that communication to the receivers personal email accounts, from the senders personal email account.

Information sharing could also upload your bookmarks, your podcasts, your miro channels to a central server to back up the info, or to share with friends. You could send the song you are currently listening to, the movie you are currently watching, your mood, short status messages. This info could automatically be updated on social networking sites that you are a member of.

No comments:

Post a Comment