Index: openacs-4/packages/chat/www/doc/design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/chat/www/doc/design.html,v diff -u -r1.1.1.1 -r1.1.1.1.24.1 --- openacs-4/packages/chat/www/doc/design.html 20 Apr 2001 20:51:08 -0000 1.1.1.1 +++ openacs-4/packages/chat/www/doc/design.html 22 Jun 2016 07:51:59 -0000 1.1.1.1.24.1 @@ -1,531 +1,531 @@ - - -
- - -The ArsDigita Java Chat application does not have a pretty client interface, -nor does it support text formating like Yahoo and Digichat. However, -our Chat application is open source. As such, any competent Java -developer will be able to improve the interface based upon their or their -employer's preferences. Using the ArsDigita Chat application allows site -developers access to a rich community data model which is compatible with -a variety of existing open-source applications. -
A disadvantage of archiving is that it chews up disk space. Imagine -for a moment that your service is the size of America Online, wherein one -million subscribers chat or use AIM every day. Imagine also that -each person types 50 rows of chat/AIM content each of which requires 100 -bytes of storage. Such a scenario would require our table to -grow by 50 million rows and 5 GB each day. After 20 days, we would begin -to bump up against the billion-row table size that data warehouse experts -suggest as a practical limit. -
So it seems that on popular public sites we won't be able to store everything -that users type. At the same time, a customer's interaction with a customer -service person, or a special guest chat should be archived. Also, -many sites engage considerably less traffic than does AOL, and these sites -may benefit from being able to log all chat/AIM communications. -
The solution we came up with was to provide an option that allows the -creator of a room to decide whether or not to archive the messages. -
By using a Java applet-based client, users can see messages updated -in real time. This is important in, e.g., a customer service setting. -Since SUN JDK 1.1 doesn't provides a text rendering API, applet-based clients -are limited in the format of the text that they can display. There are -also limitations on the server as to how many TCP sockets can be open at -the same time. Since each user using an applet-based chat client -will use one TCP socket, there could be a limit on how many user can use -the applet. This problem could be solved by employing customized hardware -more suitable for the task. -
Our system provides both a HTML and a Java applet-based chat client. -By providing each of these, we open up our Chat application to a broader -pool of users by offering users the chat method which will work best for -them. -
Using the AOL server socket API, there could be a performance -improvement and will not require installation of Jakarta-tomcat. -Unfortunately, AOL does not provide much by way of documentation -regarding AOL socket. As of the current time, there are still major -features missing from the AOL socket API which would be required to -completely replace the Java/servlet method. - -
Initially, I chose using a Java servlet as my development platform -due to time constraints. As development progressed, I analyzed the use -of the servlet in the current chat application. Since the servlets -sole purpose is to provide communication between the HTML and the Java -applet clients, I concluded that this would be adequate for the present -purposes, and that the extra efforts required to set up Jakarta-tomcat -with AOL server would be unjustified. After some experimentation, I -was able to rebuild the bridge between the HTML and the Java applet -clients using only AOL Server and the Java chat server. As a resul,t the Chat -application may now be downloaded and installed just as any other ACS 4 -applications may be. - -
In the earlier chat version, chat messages were broadcast to the -applet client Java serialize objects. The advantage of serialize -objects is that they make it easy to retrieve information. The -disadvantage of this method is the messages are limited to Java only. - -
To support clients from different programming language and not -limit our application to Java, I choose an XML text base for the chat -message protocol. - -
-<login>
-
- <user_id></user_id>
-
- <user_name></user_name>
-
- <pw></pw>
-
- <room_id></room_id>
-
-</login>
-
-
After connection to the chat server, each client must
-identify itself via a login message. The chat server will disconnect
-the client if the first message is not a proper login message or if the user
-doesn't have proper permissions for the chat room.
-
-
-<message>
-
- <message_id></message_id>
-
- <from_user_id></from_user_id>
-
- <from></from>
-
- <to_user_id></to_user_id>
-
- <to></to>
-
- <room_id></room_id>
-
- <status>approved | pending</status>
-
- <body></body>
-
-</message>
-
-
-
-To construct a public message that will broadcast to everyone in the
-chat room, the to_user_id and to fields
-need to be excluded from the message. When these two fields are present in
-the message then the message will only send to a specific
-user. Sending private messages to HTML users is not yet supported.
-
-
-<system>
-
- <user_enter>
-
- <user_id></user_id>
-
- <user_name></user_name>
-
- </user_enter>
-
-</system>
-
-
-<system>
-
- <user_leave>
-
- <user_id></user_id>
-
- <user_name></user_name>
-
- </user_leave>
-
-</system>
-
-
-
-Each time a client enters or exits the room, an appropriate message
-will be broadcast to all clients in the chat room notifying them of a
-change in the chat user list.
-
-
-<system>
-
- <userlist>
-
- <user>
-
- <user_id></user_id>
-
- <user_name></user_name>
-
- </user>
-
- <user>
-
- <user_id></user_id>
-
- <user_name></user_name>
-
- </user>
-
- ...
- ...
- </userlist>
-
-</system>
-
-
After the Java applet client has successfully logged
-into the chat room, a list of users currently in the room will be sent
-our from the server.
-
-All chat functionalities accessable from the browser are available -as an API. Providing these API allows different applications to modify -chat without an application-specific user interface. These -API will throw errors if their corresponding PL/SQL statement fail, so -all applications employing them need to 'catch error' to display a -nice error message to the user.
chat_message_post -- This API inserts chat message to the database depend whether a chat -room archive mode. It is also broadcast the message to all Java -clients in the room. - -
chat_message_retrieve -- This API is only used by the HTML client, and is used each time the HTML -client refreshes. The API does not require database call, messages will be retrieve -from AOL Server cache. -
We want to support one-to-one messages for customer support, so we need -one layer on top of the Chat application to make sure that users can find -an appropriate chat partner. For example, if Bill User says that he needs -support for his Acme widget, the system has to find the least busy authorized -Acme widget support person and start a one-to-one chat session between -Bill and that person. -
For public community sites where nothing is being sold or supported, -a publisher might wish to limit the load on the server from all of this -one-to-one chatting. -
Document Revision # | - -Action Taken, Notes | - -When? | - -By Whom? | -
---|---|---|---|
0.1 | - -Revision from chat 3.4 design document | - -11/17/2000 | - -David Dao | -
0.2 | - -Editing and augmentation | - - -11/18/2000 | - -David Dao and Josh Finkler | -
0.3 | - -Editing | - -12/04/2000 | - -David Dao | -
0.4 | -Editing | - -12/05/2000 | -Josh Finkler | -
0.5 | -Revision for beta version | -01/11/2001 | -David Dao | -
-
The ArsDigita Java Chat application does not have a pretty client interface, +nor does it support text formating like Yahoo and Digichat. However, +our Chat application is open source. As such, any competent Java +developer will be able to improve the interface based upon their or their +employer's preferences. Using the ArsDigita Chat application allows site +developers access to a rich community data model which is compatible with +a variety of existing open-source applications. +
A disadvantage of archiving is that it chews up disk space. Imagine +for a moment that your service is the size of America Online, wherein one +million subscribers chat or use AIM every day. Imagine also that +each person types 50 rows of chat/AIM content each of which requires 100 +bytes of storage. Such a scenario would require our table to +grow by 50 million rows and 5 GB each day. After 20 days, we would begin +to bump up against the billion-row table size that data warehouse experts +suggest as a practical limit. +
So it seems that on popular public sites we won't be able to store everything +that users type. At the same time, a customer's interaction with a customer +service person, or a special guest chat should be archived. Also, +many sites engage considerably less traffic than does AOL, and these sites +may benefit from being able to log all chat/AIM communications. +
The solution we came up with was to provide an option that allows the +creator of a room to decide whether or not to archive the messages. +
By using a Java applet-based client, users can see messages updated +in real time. This is important in, e.g., a customer service setting. +Since SUN JDK 1.1 doesn't provides a text rendering API, applet-based clients +are limited in the format of the text that they can display. There are +also limitations on the server as to how many TCP sockets can be open at +the same time. Since each user using an applet-based chat client +will use one TCP socket, there could be a limit on how many user can use +the applet. This problem could be solved by employing customized hardware +more suitable for the task. +
Our system provides both a HTML and a Java applet-based chat client. +By providing each of these, we open up our Chat application to a broader +pool of users by offering users the chat method which will work best for +them. +
Using the AOL server socket API, there could be a performance +improvement and will not require installation of Jakarta-tomcat. +Unfortunately, AOL does not provide much by way of documentation +regarding AOL socket. As of the current time, there are still major +features missing from the AOL socket API which would be required to +completely replace the Java/servlet method. + +
Initially, I chose using a Java servlet as my development platform +due to time constraints. As development progressed, I analyzed the use +of the servlet in the current chat application. Since the servlets +sole purpose is to provide communication between the HTML and the Java +applet clients, I concluded that this would be adequate for the present +purposes, and that the extra efforts required to set up Jakarta-tomcat +with AOL server would be unjustified. After some experimentation, I +was able to rebuild the bridge between the HTML and the Java applet +clients using only AOL Server and the Java chat server. As a resul,t the Chat +application may now be downloaded and installed just as any other ACS 4 +applications may be. + +
In the earlier chat version, chat messages were broadcast to the +applet client Java serialize objects. The advantage of serialize +objects is that they make it easy to retrieve information. The +disadvantage of this method is the messages are limited to Java only. + +
To support clients from different programming language and not +limit our application to Java, I choose an XML text base for the chat +message protocol. + +
+<login>
+
+ <user_id></user_id>
+
+ <user_name></user_name>
+
+ <pw></pw>
+
+ <room_id></room_id>
+
+</login>
+
+
After connection to the chat server, each client must
+identify itself via a login message. The chat server will disconnect
+the client if the first message is not a proper login message or if the user
+doesn't have proper permissions for the chat room.
+
+
+<message>
+
+ <message_id></message_id>
+
+ <from_user_id></from_user_id>
+
+ <from></from>
+
+ <to_user_id></to_user_id>
+
+ <to></to>
+
+ <room_id></room_id>
+
+ <status>approved | pending</status>
+
+ <body></body>
+
+</message>
+
+
+
+To construct a public message that will broadcast to everyone in the
+chat room, the to_user_id and to fields
+need to be excluded from the message. When these two fields are present in
+the message then the message will only send to a specific
+user. Sending private messages to HTML users is not yet supported.
+
+
+<system>
+
+ <user_enter>
+
+ <user_id></user_id>
+
+ <user_name></user_name>
+
+ </user_enter>
+
+</system>
+
+
+<system>
+
+ <user_leave>
+
+ <user_id></user_id>
+
+ <user_name></user_name>
+
+ </user_leave>
+
+</system>
+
+
+
+Each time a client enters or exits the room, an appropriate message
+will be broadcast to all clients in the chat room notifying them of a
+change in the chat user list.
+
+
+<system>
+
+ <userlist>
+
+ <user>
+
+ <user_id></user_id>
+
+ <user_name></user_name>
+
+ </user>
+
+ <user>
+
+ <user_id></user_id>
+
+ <user_name></user_name>
+
+ </user>
+
+ ...
+ ...
+ </userlist>
+
+</system>
+
+
After the Java applet client has successfully logged
+into the chat room, a list of users currently in the room will be sent
+our from the server.
+
+All chat functionalities accessable from the browser are available +as an API. Providing these API allows different applications to modify +chat without an application-specific user interface. These +API will throw errors if their corresponding PL/SQL statement fail, so +all applications employing them need to 'catch error' to display a +nice error message to the user.
chat_message_post +- This API inserts chat message to the database depend whether a chat +room archive mode. It is also broadcast the message to all Java +clients in the room. + +
chat_message_retrieve +- This API is only used by the HTML client, and is used each time the HTML +client refreshes. The API does not require database call, messages will be retrieve +from AOL Server cache. +
We want to support one-to-one messages for customer support, so we need +one layer on top of the Chat application to make sure that users can find +an appropriate chat partner. For example, if Bill User says that he needs +support for his Acme widget, the system has to find the least busy authorized +Acme widget support person and start a one-to-one chat session between +Bill and that person. +
For public community sites where nothing is being sold or supported, +a publisher might wish to limit the load on the server from all of this +one-to-one chatting. +
Document Revision # | + +Action Taken, Notes | + +When? | + +By Whom? | +
---|---|---|---|
0.1 | + +Revision from chat 3.4 design document | + +11/17/2000 | + +David Dao | +
0.2 | + +Editing and augmentation | + + +11/18/2000 | + +David Dao and Josh Finkler | +
0.3 | + +Editing | + +12/04/2000 | + +David Dao | +
0.4 | +Editing | + +12/05/2000 | +Josh Finkler | +
0.5 | +Revision for beta version | +01/11/2001 | +David Dao | +
+
Bertha Bosslady wants to be able to keep tabs on the performance -of service employees like Saul. By using the database backed chat application, -Bertha should be able to ensure that has a complete record of Saul and -his coworkers customer interactions. These records should also be able -to be used to evaluate the legitimacy of future customer complaints or -praises of Saul's performance. Aggregating the information found in these -records should allow Bertha get a broad picture of the performance of her -service team in general. Scraping these records should help Bertha identify -frequently asked questions for which a canned response would be appropriate. -
Chatty Cathy, a member of a role-playing fantasy community, wants -to initiate a discussion with other gamers on the topic "Which is the better -allegiance for cleric dwarves: chaotic good or lawful evil?" She should -be able to search the site's chat rooms and find an appropriately entitled -one, e.g., "Advanced Dungeons and Dragons". She should be able to join -the chat discussion, post her question, get other interested nerds to respond, -and have her desired discussion. -
Edward Expatriate has moved far away from his homeland but still -wishes to keep in touch with his friends and family. Long distance phone -calls are out of the question due to their expense. Using the chat application, -Ed should be able to set up scheduled chats or log on in the hope of an -impromptu chat session with these people, thereby keeping in touch while -keeping costs down. -
The Conglomo Corporation has a scheduled guest chat with Dr. Erudite. -The chat room is open to the public, however to prevent profanity -and offensive question content, submitted questions do not go live -immediately. Mark Moderator oversees the chat room and screens each question -before approving them for inclusion in the chat. Since Dr. -Erudite is the guest, all his answers and comments go live immediately. -The day after the chat, Mark receives a request for a transcript -of the chat from one of his site users who was unable to follow the chat -live. Mark creates a transcript using a tool provided by the application -which allows him to clean up some formatting issues and save it as a file. -Now a nice properly formatted transcript of the chat with Dr. Erudite is -available to each site member. -
Carl Consumer could not find a product at Shop.com. Frustrated after -spending the better part of an hour engaged in an unsuccessful search, -Joe decides to leave the site and go to another competitive site. Just -before doing so, he sees a link offering to allow him to chat with a customer -service representative. He decides to give it one last try and so -enters the chat and types "help!". The Shop.com representative is -notified of the incoming message by an audio alert. Within the minute -a Shop.com representative guides Joe to the product that he seeks. -
10.10.10 Chat rooms have unique display names within each instance. -
10.10.20 Chat rooms have option to archive all chat messages or not archive. -
10.10.30 Chat rooms have active and deactivate status. -
10.10.40 Chat rooms have auditing information (creation user, creation date). -
10.10.50 Chat rooms should be associated with permissions levels -for message posting. "Moderated mode" chat room will be such that each -message posted shall require approval from the administrator for that room -before being accessible to other chat users. "Unmoderated mode" chat rooms -will be such that messages posted to that room are immediately accessible -to other chat users. -
10.10.60 Chat rooms could either be private or public. -
10.10.70 Permissioning system to allow a group and/or single -user to enter a chat room. This way will also implement banning certain -user to a individual chat room. -
10.10.80 Permissioning system to allow a group and/or single -user to post a message to a chat room. -
-
10.20.10 Each log message has auditing information. -
10.20.20 The chat room to which a message belongs shall be identified. -
10.20.30 A toggle value should be in place to indicate whether -the message is in plain text or HTML format. -
10.20.40 A toggle value should be in place to indicate whether -the message has been approved by the moderator. -
10.20.50 A private message never get log. -
10.30.10 Each chat transcript has a display name. -
10.30.20 Each chat transcript has a description. -
10.30.30 Treat the whole transcript content as one big text file. -
10.30.40 Permissioning system to allow who able to view the transcript.
20.10.10 Administrator should be able to create, edit, and -delete a chat room. -
20.10.20 Administrator should be able to delete all messages -from a chat room. -
20.10.40 Administrator should be able to add and remove moderators -for a given room. -
20.10.40 Administrator should be able to grant or revoke group/user -privilege to a chat room. -
20.10.50 Administrator should be able to active and deactivate -a particular chat room. -
20.10.60 Administrator should be able to create, edit and delete -a chat transcript. -
-
20.20.10 Moderator should be able to post messages directly -in a moderated chat room without the need for moderator (self-) approval. -
20.20.20 Moderator should be able to accept or reject messages -from other users in the moderate chat rooms. -
20.20.30 Moderator should be able to suspend or revoke chat privileges -from chat room users. -
-
20.30.10 User should only be able to enter a public chat -room accessible to this user's user group. -
20.30.20 User should be able to automatically invite another -user to join them in a chat room by supplying an email address. -
20.30.30 User should be able to do a private chat with other user. -
20.30.40 If a chat room is moderated, then the user's message -will not go live immediately. -
20.30.50 There is a refresh link to ensure they receive the latest messages. -
20.30.60 The user should see all other users that post messages -in the last specified number of minutes and all Java chatters. -
20.30.70 Users should be able to chat privately with another -user. -
-
20.40.10 See a list of all Java chatters in the room and -HTML chatters who post message within a specified number of minutes. -
20.40.20 See a list of all chat rooms accessible by this user. -
20.40.30 A different pop up windows for each private conversation. -
20.40.40 User A could not has a private conversation with user B, -if user B put user A on ignore list. -
20.40.50 Optional audio alert for each new chat message. -
20.40.60 Each user can have customize icon for his screen name. -
20.40.70 Support smilie faces in chat area. -
20.40.80 Able to ignore messages from a specific user. -
20.40.90 Disallow duplicate screen name from Java chatter in the same chat room. - - -
Document Revision # | - -Action Taken, Notes | - -When? | - -By Whom? | -
---|---|---|---|
0.1 | - -Created | - -2000-10-03 | - -Joshua Finkler | -
0.2 | - -Revision for chat ACS 4.0 | - -2000-11-08 | - -David Dao | -
-
Bertha Bosslady wants to be able to keep tabs on the performance +of service employees like Saul. By using the database backed chat application, +Bertha should be able to ensure that has a complete record of Saul and +his coworkers customer interactions. These records should also be able +to be used to evaluate the legitimacy of future customer complaints or +praises of Saul's performance. Aggregating the information found in these +records should allow Bertha get a broad picture of the performance of her +service team in general. Scraping these records should help Bertha identify +frequently asked questions for which a canned response would be appropriate. +
Chatty Cathy, a member of a role-playing fantasy community, wants +to initiate a discussion with other gamers on the topic "Which is the better +allegiance for cleric dwarves: chaotic good or lawful evil?" She should +be able to search the site's chat rooms and find an appropriately entitled +one, e.g., "Advanced Dungeons and Dragons". She should be able to join +the chat discussion, post her question, get other interested nerds to respond, +and have her desired discussion. +
Edward Expatriate has moved far away from his homeland but still +wishes to keep in touch with his friends and family. Long distance phone +calls are out of the question due to their expense. Using the chat application, +Ed should be able to set up scheduled chats or log on in the hope of an +impromptu chat session with these people, thereby keeping in touch while +keeping costs down. +
The Conglomo Corporation has a scheduled guest chat with Dr. Erudite. +The chat room is open to the public, however to prevent profanity +and offensive question content, submitted questions do not go live +immediately. Mark Moderator oversees the chat room and screens each question +before approving them for inclusion in the chat. Since Dr. +Erudite is the guest, all his answers and comments go live immediately. +The day after the chat, Mark receives a request for a transcript +of the chat from one of his site users who was unable to follow the chat +live. Mark creates a transcript using a tool provided by the application +which allows him to clean up some formatting issues and save it as a file. +Now a nice properly formatted transcript of the chat with Dr. Erudite is +available to each site member. +
Carl Consumer could not find a product at Shop.com. Frustrated after +spending the better part of an hour engaged in an unsuccessful search, +Joe decides to leave the site and go to another competitive site. Just +before doing so, he sees a link offering to allow him to chat with a customer +service representative. He decides to give it one last try and so +enters the chat and types "help!". The Shop.com representative is +notified of the incoming message by an audio alert. Within the minute +a Shop.com representative guides Joe to the product that he seeks. +
10.10.10 Chat rooms have unique display names within each instance. +
10.10.20 Chat rooms have option to archive all chat messages or not archive. +
10.10.30 Chat rooms have active and deactivate status. +
10.10.40 Chat rooms have auditing information (creation user, creation date). +
10.10.50 Chat rooms should be associated with permissions levels +for message posting. "Moderated mode" chat room will be such that each +message posted shall require approval from the administrator for that room +before being accessible to other chat users. "Unmoderated mode" chat rooms +will be such that messages posted to that room are immediately accessible +to other chat users. +
10.10.60 Chat rooms could either be private or public. +
10.10.70 Permissioning system to allow a group and/or single +user to enter a chat room. This way will also implement banning certain +user to a individual chat room. +
10.10.80 Permissioning system to allow a group and/or single +user to post a message to a chat room. +
+
10.20.10 Each log message has auditing information. +
10.20.20 The chat room to which a message belongs shall be identified. +
10.20.30 A toggle value should be in place to indicate whether +the message is in plain text or HTML format. +
10.20.40 A toggle value should be in place to indicate whether +the message has been approved by the moderator. +
10.20.50 A private message never get log. +
10.30.10 Each chat transcript has a display name. +
10.30.20 Each chat transcript has a description. +
10.30.30 Treat the whole transcript content as one big text file. +
10.30.40 Permissioning system to allow who able to view the transcript.
20.10.10 Administrator should be able to create, edit, and +delete a chat room. +
20.10.20 Administrator should be able to delete all messages +from a chat room. +
20.10.40 Administrator should be able to add and remove moderators +for a given room. +
20.10.40 Administrator should be able to grant or revoke group/user +privilege to a chat room. +
20.10.50 Administrator should be able to active and deactivate +a particular chat room. +
20.10.60 Administrator should be able to create, edit and delete +a chat transcript. +
+
20.20.10 Moderator should be able to post messages directly +in a moderated chat room without the need for moderator (self-) approval. +
20.20.20 Moderator should be able to accept or reject messages +from other users in the moderate chat rooms. +
20.20.30 Moderator should be able to suspend or revoke chat privileges +from chat room users. +
+
20.30.10 User should only be able to enter a public chat +room accessible to this user's user group. +
20.30.20 User should be able to automatically invite another +user to join them in a chat room by supplying an email address. +
20.30.30 User should be able to do a private chat with other user. +
20.30.40 If a chat room is moderated, then the user's message +will not go live immediately. +
20.30.50 There is a refresh link to ensure they receive the latest messages. +
20.30.60 The user should see all other users that post messages +in the last specified number of minutes and all Java chatters. +
20.30.70 Users should be able to chat privately with another +user. +
+
20.40.10 See a list of all Java chatters in the room and +HTML chatters who post message within a specified number of minutes. +
20.40.20 See a list of all chat rooms accessible by this user. +
20.40.30 A different pop up windows for each private conversation. +
20.40.40 User A could not has a private conversation with user B, +if user B put user A on ignore list. +
20.40.50 Optional audio alert for each new chat message. +
20.40.60 Each user can have customize icon for his screen name. +
20.40.70 Support smilie faces in chat area. +
20.40.80 Able to ignore messages from a specific user. +
20.40.90 Disallow duplicate screen name from Java chatter in the same chat room. + + +
Document Revision # | + +Action Taken, Notes | + +When? | + +By Whom? | +
---|---|---|---|
0.1 | + +Created | + +2000-10-03 | + +Joshua Finkler | +
0.2 | + +Revision for chat ACS 4.0 | + +2000-11-08 | + +David Dao | +
+