2    Overview of the On-Line Consulting System

This chapter gives an overview of Athena's On-Line Consulting service. It is a necessary introduction to concepts which will not only serve as the background for the main topics of this document, but also will illuminate the reasoning behind the functionality and implementation particulars of the Emacs consulting tools.

2.1    OLC Design

2.1.1    The OLC Client/Server Model

The OLC system consists of a host OLC server workstation and numerous OLC clients. The server maintains all information regarding the state of OLC. This includes a queue of users who have questions in OLC, information about each user such as username and a short description of the question, and transaction logs of user questions. The OLC clients are the programs used by users and consultants alike to interact with one another. Clients contact the server for all requests and transactions.

The server is actually a workstation dedicated to running three separate OLC daemons which form the heart of OLC. These are:

lock daemon
This is the central program in charge of most OLC queries and transactions. Most clients interact directly with the lock daemon; it is the only daemon which performs actual OLC database changes.

query daemon
This daemon serves as an alternate to the lock daemon for retrieval of user logs and the OLC queue. Because it is dedicated to these two types of queries only, it is typically faster than the lock daemon. It is used by the oreplay and olist clients described below.

poll daemon
OLC keeps track of which users in OLC are currently logged in; the poll daemon periodically checks the login status of all OLC users, and notifies the lock daemon of the results. No clients communicate with the poll daemon.

Though technically the server and its corresponding daemons are distinct, the lock daemon---being the central manager of the OLC database---is usually referred to simply as the OLC daemon. In this context, the terms OLC server and OLC daemon are interchangeable, both referring to what is technically the lock daemon, with the query and poll daemons explicitly referred to as such when mentioned.

OLC clients interact with one another entirely via the server. Queries about OLC state, requests for state changes, and all other transactions are given to the server. Strictly speaking, clients never attempt to communicate with one another; rather, the user running a given OLC client communicates with another user on OLC, who typically is running another OLC client. This is important because, when for example a consultant is attempting to communicate with a user, the user may not be running a client. In this case, the server tries to contact the user via other means.

There are currently four different types of OLC clients, described briefly as follows:

OLC
Users use an OLC client to enter questions, and to interact with a consultant once they have been connected. Currently there are two OLC clients: the more widely used, but more primitive (from a user-interface point of view), text-based olc program, and the X Window System/Motif-based xolc.[1]

OLCR
Athena consultants use the OLCR (for On-Line Consulting Reply) client to scan the queue for questions they can answer, to engage users in an interactive session, and to otherwise perform all their consulting duties. There are two OLCR clients: olcr, the text-based counterpart to olc, and EOLCR, the Emacs-based OLCR client.

oreplay
Not a class of clients but a specific client itself, oreplay retrieves the log of all transactions with a specified user in OLC. Because it uses the OLC query daemon for its request, it is a fast alternative to calling olcr replay, which for the text OLCR client retrieves a user's log.

olist
Like oreplay, olist is a specific client. It retrieves the current OLC queue of users, in either the human-readable form given by an OLCR client, or in a ``raw'' format which is not quite readable by humans but which is broken down into well-defined fields which can be easily parsed by another program. Like oreplay, it contacts the OLC query daemon, and is thus a fast alternative for retrieving the OLC queue.

The OLC and OLCR clients are the most widely and directly used, since users use one and consultants the other. The olist and oreplay clients were actually written for use by EOLCR (the Emacs OLCR client), though they can be used independently.

2.1.2    OLC and the Zephyr Notification System

Zephyr is a networked, real-time message delivery system. It allows a user on any Athena workstation to send an instantaneous message to another user on any other workstation. OLC uses Zephyr as a notification system, keeping users and consultants up to date and informing each about new transactions.

Zephyr messages (also termed Zephyrgrams) are categorized by a three field subscription triplet which determines the type of message being sent, and to whom the message should be delivered. The first two fields---the class and instance---determine the type of message. The third field, the recipient, determines who will actually receive the message. General-purpose messages contain a class field of ``message''. If the message is addressed to a particular user, the instance field is ``personal'' and the recipient field contains the username of the user. (Note that a user must be subscribed to a particular Zephyr triplet to receive the message. Subscriptions are typically made with the zctl command.) Broadcast messages may be sent to multiple users by specifying a recipient field of ``*'', which is a wildcard specification. Any users subscribed to a triplet with recipient ``*'' will receive the message.

To receive Zephyr notices, one invokes the zwgc (Zephyr WindowGram client) command. Users running a zwgc program have their location (i.e. what workstation they are logged in on) recorded by the Zephyr servers. This location can be obtained by other users via the zlocate command. Thus, Zephyr also serves as a location tool: since most users run zwgc on login, zlocate is a fairly reliable method of determining if a user is logged in.

OLC makes intensive use of Zephyr. Users with a question in OLC receive a Zephyr notice when they login telling them that their question is still active. When actually connected to a consultant, they are notified of new messages from the consultant via Zephyr, and receive other types of updates from OLC---for example their being connected to or disconnected from a consultant---via Zephyr. Finally, the OLC poll daemon uses Zephyr to determine if users are logged in.

Consultants rely even more on Zephyr. The OLC daemon broadcasts many changes in OLC state via Zephyr (using class ``OLC''), and consultants listen to these messages to stay up to date. New questions, questions being forwarded, logged out users logging back in, new messages from connected users, and others all generate a broadcast Zephyrgram describing the event.

Users and consultants are not the only ones to benefit from the OLC daemon's broadcasts; OLC clients can take advantage of them also. In particular, the Emacs OLCR client uses OLC Zephyrgrams to keep itself---and thus the consultant running EOLCR---updated. The details of how this works will be discussed later, but for now let it suffice to say that OLC's use of Zephyr performs some tasks vital to the efficiency of OLC as a whole.

2.1.3    OLC and the Discuss Conferencing System

OLC uses the Discuss electronic conferencing system to archive OLC questions. Discuss is similar to the typical computerized bulletin board system in functionality, but has capabilities for ensuring private and secure transactions, and is especially well-suited for archival of such transactions. In Discuss, transactions regarding a specific topic are entered into a meeting; only users with authorized access to a particular meeting can enter and read transactions in that meeting. Meetings are stored on the local file system of a Discuss server, which archives and retrieves transactions in that meeting. There are currently several Discuss server workstations on the Athena network, serving a variety of meetings.

All OLC questions, once answered, are archived into a Discuss meeting.[2] Questions are classified by topic; the name of the corresponding meeting is ``o'' (for OLC) followed by the topic. Thus, ``emacs'' questions are stored in the ``oemacs'' meeting, and ``unix'' questions are stored in the ``ounix'' meeting.

The archival of questions is an important aspect of OLC. It allows statistical analysis of OLC response time, load, and others, without disturbing the OLC protocol or software.[3] Furthermore, it allows experienced consultants to survey answers given to users to ensure that correct and accurate responses are being given; this will be discussed in the following section.

2.2    OLC in Use

2.2.1    How Users Ask Questions

OLC begins with a user's question, entered into OLC with the olc program by typing olc at the command shell (see Figure 2-2). olc, rather than prompting the user for a question right away, presents the user with the option of perusing a set of answers to commonly asked questions, and of seeing the hours staffed by consultants in the OLC office. Also, olc displays the OLC message of the day (MOTD), if there is one. The OLC MOTD is a notice displayed by olc on startup which is installed by consultants to inform users of current Athena problems which may be the cause of their question.
 
athena% olc
Welcome to OLC, Project Athena's On-Line Consulting system. (v 3.1)
Copyright (c) 1989 by the Massachusetts Institute of Technology.

To see answers to common questions, type:      answers
To see the hours OLC is staffed, type:         hours
To ask a question, type:          ask
olc> ask
Please type a one-word topic for your question.  Type ? for a list of
available topics or ^D to exit.
Topic: emacs
Please enter your question. End with a ^D or '.' on a line by itself.
Where can I get more documentation on this wonderful editor?
.

What now? (type '?' for options): send
Your question will be forwarded to the first available consultant.
Some other useful OLC commands are:

        send  - send a message
        show  - show new messages
        done  - mark your question resolved
        quit  - exit OLC, leaving your question active
        hours - Find hours OLC is staffed
        ?     - see entire listing of commands
olc> 

Figure 2-2: Entering an OLC Question

 
To ask a question, a user simply types ask. The user is first prompted for a topic for the question; all OLC questions have a topic associated with them. Table 2-3 lists all valid OLC topics. Questions not covered by one of these topics---for example questions about a special program used for a class, and that class only---are not officially supported by Athena, and Athena consultants are not required to answer such questions.[4]
 
accounts   cdialupdocumentation  emacs
ezfortranlatexlispmail
maplematlabnetworks   operationsother
printingscribetestunixworkstations   
xessxwindows   zephyr

Table 2-3: Valid OLC Topics

 
Once the user enters a topic, olc prompts for the text of the actual question. The user now waits to be connected to a consultant who will attempt to answer the question. If the user logs out before this happens, mail will be sent to the user mail regarding the question. If a consultant establishes a connection while the user is logged in, the user can use the olc show and send commands to see messages from the consultant, and to send the consultant replies. If the user's question has been satisfactorially answered, the user informs the consultant by using the done command; the consultant then actually marks the question as resolved in OLC, thus removing it from the OLC queue. This is called resolving the question. If a user for some reason wishes to withdraw the question from OLC entirely, the user may cancel a question by entering cancel; this notifies the consultant that the question may be removed from OLC without further consideration.

Not all questions are answered within a single session. Frequently the user logs out, either before or after a consultant connects to the question, or the consultant is unable to finish answering the question. In the latter case the question is forwarded, meaning that the consultant makes the question available for consideration by other consultants.

2.2.2    The Athena Consultants

There are two types of consultants: paid consultants, which work part-time, have scheduled consulting hours, attend weekly meetings, and are trained by Athena, and volunteer consultants, which are simply Athena users who have volunteered to answer OLC questions when and if they can. This document will usually refer to paid consultants; volunteer consultants will be referred to as such when the difference between the two becomes important.
2.2.2.1    Consulting Tasks
Consultants must work a certain number of hours each week in the OLC office. There they handle on-line questions, entered via olc as shown above, phone questions, or walk-in questions. Anywhere from one to three consultants may be on-duty at a given time, although the average is two during the day.

Consultants, when off-duty, can optionally also perform queue management, which consists of scanning the OLC queue and making sure of the following:

Consultants can also perform quality assurance by scanning the Discuss logs of previous questions, making sure that questions have been handled and answered correctly. If a consultant has, in a previous question, handled a question improperly or given inaccurate information, the quality assurance consultant sends a correction via email to both the consultant at fault and the user involved. The correction is also archived in the corresponding Discuss meeting for the benefit of other consultants scanning the logs.

2.2.2.2    The Consultant Toolbox
Consultants have many tools at their disposal. In the OLC office, they not only have one another---for example, new consultants are always on-duty with a more experienced consultant, and even old consultants frequently help each other out---but also a complete set of documentation about Athena software. The OLC office is stocked with manuals about everything from AFS (the Andrew File System) to Macsyma to the Digital VAX Operating System.

Two chief sources of on-line documentation are available: Athena's On-Line Help system (referred to as OLH), and the OLC Answers to Common Questions (commonly referred to as the ``stock answers''); see Figures 2-4 and 2-5. OLH is a menu-driven application containing documentation about almost anything about Athena: Athena software, managing user's accounts, sending email, Athena policy, and possible interruptions in service due to maintenance.
 
             Browser Top Level
             -----------------
                      
                On-Line Help
             Emacs Menu Browser
                      
 1* Welcome to Athena
 2* Working on Athena
 3* Managing Your Athena Account
 4* Summary of Available Athena Software
 5* Printing
 6* Communicating with Other Users
 7* Text Processing
 8* Numerical and Math Software
 9* Programming on Athena
10* Using Athena for Courses
11* Athena Release Notes and System News
12* Answers to common questions
13* Archive of Online Documentation

Enter menu selection, or C-h m for help ...

Figure 2-4: Athena On-Line Help

 
The OLC stock answers are the consultant's most valued tool. They are a collection of answers to the most commonly asked user questions, organized in a menu hierarchy (as in OLH) by topic. Users asking questions found in either the stock answers or OLH are referred to the appropriate location in the OLH or stock answer menu hierarchy. There they may peruse answers at their own pace. Even though the OLH system and the stock answers are maintained separately---OLH by the Athena Documentation Staff and the stock answers by OLC---OLH includes the stock answers in its hierarchy (see Table 2-3, entry 12), and many of its modules refer the reader to the stock answers for more information.
 
n: Doc.Archives_Menu   p: Olh.Release_Menu   u: Top Level   t: Top Level
------------------------------------------------------------------------
                                    
                              On-Line Help
                   << Answers to common questions >>
                                    
               1* NEW SOFTWARE RELEASE (7.3)
               2* ACCOUNTS Answers
               3* C Answers
               4* DIALUP Answers
               5* DOCUMENTATION Answers
               6* EMACS Answers
               7* EZ Answers
               8* FORTRAN Answers
               9* LATEX Answers
              10* LISP Answers
              11* MAIL Answers
              12* MAPLE Answers
              13* MATLAB Answers
              14* NETWORKS Answers
              15* OPERATIONS Answers
              16* OTHER Answers
              17* PRINTING Answers
              18* RS/1 Answers
              19* SCHEME Answers
              20* SCRIBE Answers
              21* UNIX Answers
              22* WORKSTATIONS Answers
              23* X WINDOW SYSTEM Answers
              24* ZEPHYR Answers
              25* Miscellaneous Responses

              Enter menu selection, or C-h m for help ...

Figure 2-5: OLC Stock Answers

 
An alternative stock answer system is Klook, a stock answer retrieval system based on keyword lookup. Given a set of keywords, it performs a fast search through the titles of the stock answers and returns any which match the given keywords. It is a convenient alternative to the menu-based stock answers for consultants who know what stock answer they need; it is also helpful in finding a particular stock answer whose location in the menu tree is not known. The Klook database is actually a superset of the stock answers; consultants add data to Klook which are not necessarily answers to user's common questions, but which consultants find useful to have archived. For example, a consultant encountering an unfamiliar software package has a good chance of finding information on it via Klook.

Similar to OLH and the stock answers, the Consulting Reference (CRef) module accesses an on-line database of information specific to OLC. See Figure 2-5. It contains administrative information, people to contact for special questions or problems, transcripts of OLC training sessions, and an advanced version of the stock answers geared towards consultants. Users are never referred to the CRef database; it is meant for use by consultants only.
 
             Browser Top Level
             -----------------
                      
            Consulting Reference
             Emacs Menu Browser
                      
 1* 11-115 Things
 2* Adminstrative Information
 3* Other Systems/Services (at MIT)
 4* Other
 5* Technical Information
 6* OLC Stock Answers
 7* MCR Stock Answers
 8* 7.3 Release Answers
 9. Whom to Contact (daemon trouble)

Enter menu selection, or C-h m for help ...

Figure 2-6: CRef Top Level Menu (Emacs Version)

 
Another on-line tool is Zephyr itself. Because Zephyr allows many users to communicate with each other at once, it provides an excellent opportunity for consultants to seek additional help from other knowledgeable users on-line. For example, if Athena seems to be experiencing network problems which cannot be directly verified by the consultant, a question over the Zephyr instance ``consult'' (class ``message'' and recipient ``*'') will reach subscribed Athena staff which can verify or deny the problem. The ``consult'' Zephyr instance is in general used by consultants and Athena staff to broadcast special operations messages that consultants should know about, and to ask very specific and detailed questions which only Athena staff would know how to answer. Another Zephyr instance, ``help'', is used as a general help instance by Athena users. Consultants also occasionally use it because many users listening to instance ``help'' are experts at very specific and difficult topics.

Finally, Dig allows consultants to search the Discuss transactions of previously answered questions. Dig takes a regular expression and a set of Discuss meetings, and finds all transactions whose titles---or optionally whose text---match the regular expression. Consultants use Dig to scan previous questions for possible answers to current questions.

2.2.3    Consultants at Work

A consultant begins work by starting an OLCR client and scanning the OLC list of users for questions. A sample OLC listing is given in Figure 2-7. The list is divided into five separate queues[5], corresponding to the status of the question in OLC.
 
User                        L  Consultant    Topic    Description     Date  Time #
[active: 2]
jfc       @ ACHATES     [0] +  lwvanels [0]  unix     [yes          ] 03/09 1922 2
jik       @ PIT-MANAGE* [0] +  lwvanels [1]  xwindows [RTFM         ] 03/10 1355 1

[pending: 3]
zchi      @ E40-008-13  [0]                  unix     [nroff/vi???  ] 01/01 1715 9
work2much @ PARAMETRIC* [0]                  xwindows [hi brad!     ] 03/10 2323 5
jonnyc    @ W20-575-10* [0]                  ez       [can't print  ] 03/13 1401 4

[unseen: 1]
acevedo   @ TAILGUNNER  [0]                  emacs    [Where can I g] 03/14 1615 0

[pickup: 2]
xichqjk   @ E40-008-11  [0]                  mail     [over quota   ] 03/10 1548 2
krishna   @ SNOOPY      [0]                  other    [login to seve] 03/11 2241 9

[refer: 1]
foo       @ BAR         [0]                  maple    [to ellis     ] 03/10 1224 2

[on-duty: 1]
lwvanels  @ FIONAVAR    [0] +                nil      [on duty consu] 03/14 1900 0

Figure 2-7: A Sample OLC Queue [6]

 
The queues are organized as follows:

Active
This queue is for users connected to a consultant. In this queue, the queue listing's ``Consultant'' column contains the consultant connected to the user.

Pending
This queue is for questions which have been connected to at least one consultant, yet remain unanswered. (I.e. the question is still ``pending'' an answer.)

Unseen
This queue contains new questions which have not been connected to any consultant. Note that this doesn't mean that no consultants have looked at the question, it only means that no one has actually been connected to it yet.

Pickup
Questions which require more information from the user are placed in this queue, where they remain until the user ``picks it up'' again by replying with the necessary information.

Refer
Questions requiring specialized knowledge of certain topics can be referred to a consultant---frequently a volunteer---known to be an expert in those topics. In such cases, this special-skills consultant is asked to review the question, and the question is placed in this queue until the consultant is able to review it.

On-Duty
OLC implements the concept of an on-duty consultant, who is always connected to at least one question. Under the on-duty policy, the consultant at work in the OLC office signs on-duty, using an OLCR client, and is immediately connected to a question. The on-duty queue lists all on-duty consultants. However, because the on-duty policy for paid consultants is not currently enforced at MIT---though OLC sites elsewhere may make use of it---it will be rarely discussed in this document.

The format of each question in the queue can vary from OLCR client to OLCR client, and in the Emacs client is customizable, but all share the following fields:

Username
The username of the user.

Machine
The name of the workstation on which the user is logged in.

User Instance
Each user has a specific user instance assigned, and OLCR clients always specify a username/user instance pair when referring to a user. The idea is that users asking more than one question in OLC would have a different instance number for each question, starting with zero for the first question. However, OLC currently supports only one question per user, so this column is almost always zero.[7]

Login Status
This column displays a `+' character if the user is logged in.

Question Status
This column displays a `D' if the user has entered done in OLC, or `C' if cancel was entered.

Consultant
If the user is connected to a consultant, this column shows the username of the consultant. Next to the consultant's username is the instance of the consultant with that user; each consultant is assigned an instance number for each question to which they are connected.

Topic
This is the topic of the question.

Description
This is a short description of the question, of up to 63 characters in length. The queue listing usually displays only a portion of the description, and all OLCR clients allow the consultant to specify whether the description should be displayed in the first place. The initial description of a new question is taken from the first 63 characters of the question.

Date/Time
The date and time (in 24-hour format) the question was asked.

Number Connected
The number of different consultants which have been connected to the question.

The queue listing provides a convenient summary of the questions in OLC. To see the complete question, a consultant replays the question. The resulting replay log contains the entire transaction log of the question; it includes the question itself, all messages sent between the user and the consultant, and other types of transactions (described below). See Figure 2-8.
 
Log Initiated for user Pepe LePew (paco@HYDROX-COOKIE.MIT.EDU [0]).
    [Sun 15-Mar-92 10:44am]

Topic:          emacs

Question:
Help!  How do I save my Emacs file?

Machine info:
Processor: DECstation 3100
Display  : Monochrome DECstation
Memory   : 0xbdf000 user; 0x1000000 (16 M) total
___________________________________________________________

--- Question grabbed by consultant acevedo@TAILGUNNER.MIT.EDU [1].
    [Sun 15-Mar-92 10:44am]

*** Reply from consultant acevedo@TAILGUNNER.MIT.EDU [1].
    [Sun 15-Mar-92 10:44am]
  Hi Paco!  Just type Ctrl-x Ctrl-s.

   => Raúl Acevedo
      Athena User Consultant

--- User paco read reply.
    [Sun 15-Mar-92 10:44am]

*** Reply from user paco@HYDROX-COOKIE.MIT.EDU [0].
    [Sun 15-Mar-92 10:45am]
  Ah!  Thanks a lot!

--- User paco is done with question.
    [Sun 15-Mar-92 10:45am]

Figure 2-8: A Sample Replay Log

 
A consultant who feels capable of answering a question grabs the question, establishing a formal connection with the user. Only one consultant can be connected to a question at a time; this consultant is the only one who can send messages or mail to the user.

In addition to sending messages or mail to a user, a consultant can insert a comment in the replay log; this is just that, a comment regarding the question. The user is not notified when a comment is inserted in the log, although the user will see the comment when replaying the log. Consultants not connected to the question can, and frequently do, insert comments into logs for the benefit of others. If a consultant wishes to insert a comment which for some reason or another should not be seen by the user---for example a comment containing private or OLC-only information---then a private comment can be used, which is just like a regular comment, except that the user does not see it when replaying the log.

A consultant unable to answer a question forwards the question to another queue: the refer queue if the question is being referred, the pickup queue if the user has logged out and more information is needed, and the pending queue otherwise. The description of the question is usually changed at this point to reflect the current status of the question; the topic may also be changed to something more appropriate. (Users frequently do not ask questions under the correct topic.)

Note that any consultant---not just the one connected to a question---can change topics or descriptions. This is useful for the consultant performing queue management, since it would be inconvenient to have to grab a question just to change the topic or description. Also, consultants can forward other consultants from their questions; this occasionally becomes necessary when a consultant is unable to disconnect from a question due to network failure.[8]