[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.technology.ecf] Four types of chat use cases

Based on the conversation so far, I am inclined to think that we have at least four distinct types of chat use cases depending on whether GroupIDs and chat SharedObject IDs are well-known or not.  I have giiven each of the types a name suggested by the manner in which it would be used.  This name is not really the important thing.  What's important is the combination of well-known and individualized IDs.

ChatRoom -- GroupID well-known, Chat SharedObject ID well-known
This is the simple approach that Scott outlined in response to Li-Te's appraoch.

In this case everyone knows a common familiar GroupID, e.g., "server.com" and joins that container.  They also create a SharedObject with the well-known ID, "chat".  This is a big space that anyone with permission to use "server.com"  may enter.

IM -- GroupID well-known, Chat SharedObject ID individualized
I'm not sure this is the best way to do IM, but it feels kind of like IM.  We all join a well-known container for some purpose.  It doesn't have to be to chat.  We might have joined the container for the purpose of learning about people's online status.  Then, I decide I would like to chat with someone, but don't want to go to the trouble of creating a new container for that purpose.  So, instead, I create a ChatSharedObject, but give it a unique ID.  Then, I direct some other group member to create that ChatSharedObject as well.  Now, we can use the chat, but others are not aware of our chat and cannot participate.

Note:  The privacy afforded by this approach depends somewhat on whether getSharedObjectIDs returns all the IDs known at the container or only the ones created by any user.

Chat Meeting -- GroupID individualized, Chat SharedObject ID well-known
I think this is the approach that Li-Te was trying to outline.  It requires two containers: one for the actual chat and one to communicate the individualized GroupID of that chat.

  1. We all join a well-known container that Li-Te called the Lobby.  Let's say it has a GroupID of "server.com/lobby" and provides some way to send invitations from one user to another.
  2. One user creates a new container and joins it by creating a unique GroupID for the chat, e.g., "server.com/mychat".  In addition, the user adds a ChatSharedObject with the well-known ID, "chat".
  3. This first user sends an invitation to another user via the lobby to let the second user know that they are invited to the "server.com/mychat" container.  (Presumably, it would also be good to send information about the container type, just in case we want to support multiple types of meetings.
  4. The second user joins the meeting by creating the appropriate chat container, adding in the appropriate chat object, and joining with the "server.com/mychat" GroupID.

Whisper -- GroupID individualized, Chat SharedObject ID individualized
Let's imagine that the ChatMeeting identified above has been joined by many people and we now want to support a private conversation among a subset of the participants.  Assuming we are too lazy to create a new container for the purpose, one user might create a new chat object with an individualized ID, then, as in the IM case, they would instruct another user to create the object as well.

Note:  The privacy afforded by this approach depends somewhat on whether getSharedObjectIDs returns all the IDs known at the container or only the ones created by any user.