Identities, Contact and the Real Person Offline
“Miscommunication” Scenarios in Daily life
I want to start with some stories to illustrate miscommunication examples that happen in the real life. I am sorry that I have to mess up Bob and Jill’s life again. They are my favorite use case actor and actress since when I was in Pittsburgh.
Scenario 1: Bob is preparing a Xmas party. He is trying to call his old friend Jill’s cell phone +1(425)555-5555. However, Jill changed her cell phone a month ago. Then Bob tries Jill’s office number +1(425)666-6666. Since it is Friday 6PM, no one picks up the phone. Then Bob dials Jill’s home phone +1(425)777-7777, still no luck. So he just left a voice mail.
Scenario 2: Thanks to the new technology and the Internet! Bob is using Windows Live Events to create a party invitation to all his friends. He found Jill’s Gmail account email@example.com and sent her the invitation as well. When Jill returned the call on Monday, Bob realized Jill is only checking Gmail account once a month. As Jill suggested, Bob sends invitation again to Jill’s Hotmail account: firstname.lastname@example.org
Scenario 3: The party went well. Bob took quite some photos of Jill and shared them on Windows Live SkyDrive with Jill by granting access permission to email@example.com. Jill just got a new Windows Live account firstname.lastname@example.org and starts using it every day. However, she has to log back to email@example.com to view those photos.
Scenario 4: Jill is very upset after seeing the photos, as they are not as pretty as she had thought. She decided to block Bob’s from Windows Live Messenger for a while. Unfortunately, Bob found Jill was trying to block him because Jill has two Messenger accounts for Bob firstname.lastname@example.org and email@example.com, and she forgot to block both.
Have you seen some glitch here? What’s the root cause?
Identity-based Communication is Problematic
Before we continue, I want to clarify the definition of identity. I do not want to start a philosophical discussion. Rather I want to put it in a practical way, as long as you know what I am trying to say. It is good.
Identity is anything that we can use to distinctively identify an offline person. Identify can be: phones, emails, IM addresses, physical addresses. It can even be devices exclusively owned by the person. As long as we can uniquely identify the device, we can consider the device is an extension of the person.
The miscommunications scenarios given above are Identity-based communication pattern. It is problematic for two fundamental reasons:
1. Identities change frequently. People change phone number, email address and move to different cities. Communication channel will be broken as identity changes.
2. Identities are swarming. You can easily enumerate 10+ identities that people can reach you. The more identities you have, and the more complicated the communication pattern will be.
Identity-based communication is legacy from old days for ages. Unfortunately, the legacy constraint is too strong for us to break through. Even for new technologies, we still build the systems in the identity-based way, which is exactly what Bob and Jill have experienced.
Fortunately, we realize the problem and making progresses to change the situation.
A Better Solution by Linking Identities
There are many good examples of improving identity-based solution by linking identities. Our life is getting better, even though sometime we do not realize what kind of problems those solutions are trying to resolve.
Example 1: Google Grand Central provides a unified phone number solution. For example, in scenario 1, Bob just dial one number, all Jill’s phones will ring until one of them is picked up. Therefore, Bob just need to remember one phone number, rather than three phone numbers to reach Jill. It is an example of linking phone identities.
Example 2: Windows Live Linked ID provides a solution to easily switch between Windows Live IDs. Therefore, in scenario 2, Jill can switch from firstname.lastname@example.org to email@example.com without login back and forth. It is an example of linking email identities.
Example 3: Windows Live Messenger provides a solution to unify Email and IM Address. People might be confused: “hey, what are you talking about?” Yep, one simple fact that people do not realize is that: “Email is email, and IM is IM”. Email and IM are totally different communication channels. They happen to have the same address does not mean they are the same thing. For example, in China, QQ is IM, but it is not email. Another example, IM with @passport.com domain looks like email but there is no mail box associated with that domain. (Emails sent to @passport.com will be rejected.) The fact that many IM systems using email as IM address is a great example of linking between IM identity and Email identity.
Example 4: Many web sites provide functionality of “register my computer”. So, next time user does not have to manually login again. It is an example of linking the user’s device identity with the user’s account identity. You can also consider finger print reader as a similar example as well.
Example 5: There is another great example of linking email identity and phone identity. However, I do not think I can talk about it now.
Linking identities makes our life better. However it is still not the ultimate solution as it did not resolve those two fundamental problems of identity-based communication: identities are frequently changed and swarming.
Contact-based Communication – One Level Abstraction and the Ultimate Solution
Let’s think over about the first thing of software engineering – requirement elicitation. And let’s go back to scenarios between Bob and Jill, and figure out what are the real requirements.
Scenario 1: Bob is trying to reach Jill via phone. Bob does NOT care +1(425)555-5555 or +1(425)666-6666.
We realize one thing: people are only caring about the real person, rather than his/her identities. When bringing the business online, what we really need is the one-to-one online abstraction of the offline person, rather than the person’s online identities. For the one-to-one online abstraction thing, we reuse and redefine the concept of contact.
Contact is the one-to-one online abstraction of the offline person. It is the collection of the person’s online identities.
After clarifying the definition of identities and contacts, the ultimate communication solution can be described in three phases. Please note: we consider any interactions between two people (requester and recipient) are within communication problem domain, which include email, phone, IM, mailing, and even permission granting and revoking etc.
1. Communication endpoints (requesters and recipients) should be contacts rather than identities.
2. Requester decides communication channel.
3. Recipient decides the binding of his/her identities and communication channels.
When the offline people come online, they are shielding behind their identities. Over years, software systems are designed based on people’s online identities. Due to the fundamental weakness of identity, those systems are running into problem when trying to resolve communication problems. Ultimately, we need to shift the design principle from identity-based to contact-based solution, which is one level up abstraction and one-to-one mapping of the real person offline.