<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc4103 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4103.xml">
<!ENTITY rfc3550 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3550.xml">
<!ENTITY rfc4975 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4975.xml">
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY I-D.hellstrom-text-conference SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.hellstrom-text-conference.xml">
]>
<rfc category="bcp" docName="draft-hellstrom-textpreview-03" ipr="full3978">
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

  <?rfc toc="yes" ?>

  <!-- <?rfc symrefs="yes" ?>
	<?rfc sortrefs="yes"?> -->

  <?rfc iprnotified="no" ?>

  <?rfc strict="yes" ?>

  <?rfc compact='yes'?>

  <front>
    <title abbrev="Presentation of text conversation">Presentation of Text
    Conversation in realtime and en-bloc form</title>

    <author fullname="Gunnar Hellstrom" initials="G." surname="Hellstrom">
      <organization>Omnitor</organization>

      <address>
        <postal>
          <street></street>

          <street>PO Box 92054</street>

          <code>12006 Stockholm</code>

          <city></city>

          <region></region>

          <country>Sweden</country>
        </postal>

        <phone>+46-8-58900050</phone>

        <email>gunnar.hellstrom@omnitor.se</email>
      </address>
    </author>

    <author fullname="Norman Williams" initials="N." surname="Williams">
      <organization>Gallaudet University</organization>

      <address>
        <postal>
          <street>800 Florida Ave</street>

          <street>Kendall Hall 101a</street>

          <code>20002</code>

          <city>Washington</city>

          <region>DC</region>

          <country>USA</country>
        </postal>

        <email>norman.williams@gallaudet.edu</email>
      </address>
    </author>

    <author fullname="Arnoud A. T. van Wijk" initials="A." surname="van Wijk">
      <organization>Realtimetext.org</organization>

      <address>
        <email>arnoud@realtimetext.org</email>
      </address>
    </author>

    <author fullname="Gregg C. Vanderheiden" initials="G."
            surname="Vanderheiden">
      <organization>Trace R&amp;D Center, University of
      Wisconsin-Madison</organization>

      <address>
        <postal>
          <street>1550 Engineering Drive</street>

          <street></street>

          <code>53706</code>

          <city>Madison</city>

          <region>WI</region>

          <country>USA</country>
        </postal>

        <email>gv@trace.wisc.edu</email>

        <uri>http://www.engr.wisc.edu/ie/faculty/vanderheiden_gregg.html</uri>
      </address>
    </author>

    <date day="09" month="January" year="2008" />

    <abstract>
      <t>This specification defines methods for presentation of a text
      conversation with focus on the real-time features. The aim is to give
      the participants in a conversation a good opportunity to perceive the
      real-time flow of the conversation and also provide a display of the
      history of the conversation that makes it easy to read. Both two-party
      and multi-party situations are defined.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>This is a specification of methods for presentation of a real-time
      text conversation. The aim is to give the participants in a conversation
      a good opportunity to perceive the real-time flow of the conversation
      and also provide a display of the history of the conversation that makes
      it easy to follow the flow. One reason to specify the presentation
      method is to be able to give participants a synchronized view of the
      conversation even if they use different presentation characteristics.
      The methods are intended for use in a protocol environment where text
      can be transmitted in real-time or in fragments of messages. Both
      two-party situations and multi-party session presentations are
      specified. The specification is mainly on the presentation level,
      relatively independent of the transport layer. It has though some
      requirements on the lower layers, as well as some characteristics of the
      lower layers cause slightly different user experience in the
      presentation.</t>

      <figure align="left" anchor="example"
              title="Two-party call with real-time preview.">
        <preamble>The method is possible to use for two-party calls and
        multi-party calls. A two-party view is shown in <xref
        target="example" />.</preamble>

        <artwork><![CDATA[
          _________________________________________________
          |                                             |^|
          |                                             | |
          |                                             | |
          |                                             | | 
          | [Anne]Hi, Anne here.                        | |
          |                                             | |
          | [Eve]Hi, this is Eve, calling from Paris.   | |
          |       I thought you should be here.         | |
          |                                             | |
          | [Anne]I am coming on Thursday,              | |
          |       my performance is not until Friday    | |
          |       morning.                              | |
          | [Anne]Can we meet on Thursday evening?      | |
          |                                             | |
          | [Eve]Yes, definitely. How about 7pm.        | |
          |      at the entrance of the restaurant      | |
          |      Le Lion Blanc?                         | |
          | [Eve]we can have dinner and then take a walk| |
          |                                             |_|
          |  <Eve-typing> But I need to be back to the  |_|
          |  hotel by 11 because I have t               |v|
          |_____________________________________________|_|
          | OK, no prob                                   | 
          |                                               |
          |_______________________________________________|

]]></artwork>

        <postamble />
      </figure>

      <t>Figure 1: The text is here displayed in a traditional chat view, with
      labelled entries from each participant ordered in a list with newest
      entry last. Older entries are scrolled up, out of the screen area when
      there is no room for them.</t>

      <t>Real-time text arriving from other participants is displayed in
      'preview areas' within the scrolling 'history' window. They are
      formatted to look different and are presented at the bottom of the
      history window until they are completed. When completed they move up in
      the history window and added to the history record. The text being
      entered by the local participant appears in a separate entry field that
      is preferably just below the history field (to minimize eye movements
      when reading and typing).</t>
    </section>

    <section title="Terminology">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </section>

    <section title="Scope">
      <t>This specification describes methods for presenting a text
      conversation so that the gradual entry of text is made visible to the
      users. One method has text flowing in real-time in a way that is similar
      to common text chat, but with the possibility to follow entries while
      they are created in a real-time preview area. The method may be applied
      on any text conversation transport method that transmits text on a
      character by character, time-sampled, word by word, or other small chunk
      basis. The methods cover both two-party and multi-party situations.</t>
    </section>

    <section title="Real-time preview presentation method">
      <t>The presentation method described here is intended to give a
      convenient view of a text conversation between two or more participants
      in a session. It is intended to be compatible with the requirements of
      ITU-T T.140 [1], and to look familiar for text chat users and be
      feasible to implement in terminals with small displays. The basic
      concept however could be implemented in other text technologies as well
      and displayed in different ways. ITU-T T.140 [1], Appendix I, describes
      a traditional chat view and a two-column view. The display formats shall
      be implemented so that terminals in a session can implement different
      display views meeting the requirements of T.140 [1] and giving the users
      a synchronized view of the flow of the conversation.</t>

      <section title="Entries in creation">
        <t>Entries in creation SHALL be displayed in a real-time preview area,
        one for each participant for who is currently typing. The real-time
        preview areas MAY be placed under the list of completed entries as
        shown in Figure 1 and 2, or at any other suitable place in the user
        interface. If video from the participants is also displayed, then it
        MAY be suitable to display the real-time preview areas under the video
        image of the participant. The real-time text MAY also be displayed in
        a manner more closely associated with earlier exchanged text entries
        by the same participant (e.g. text from each participant goes in its
        own column).</t>

        <t>If real-time preview from other participants are placed under the
        list of completed entries as in Figure 1 and 2, the text being entered
        by the local participant SHOULD be placed at the bottom in its own
        text entry field. This is recommended for a number of reasons. First,
        this is the only "editable" text on the screen. It also facilitates an
        optional input behavior where the local user may sometimes be holding
        their text back until it is completed while normally transmission
        occurs in real-time. Having the user input area be in a separate field
        MAY also be useful when scrolling the output field so that the input
        field always stays in view even as the history and text previews are
        scrolled out of view to read older text.</t>

        <t>For ease of reading different entries, it is RECOMMENDED to place
        all entries close together in the display area.</t>

        <t>During entry, the following actions MAY be requested: <list
            style="symbols">
            <t>Alert. Requests alerting of the remote participant.</t>

            <t>Erase last character. Erases the last entered character.</t>
          </list></t>
      </section>

      <section title="Completion of local entry">
        <t>Text from the local participant SHALL be entered in the local user
        input field, until an end-of-entry event occurs. The end of entry
        event may be triggered by a send button, a RETURN or when another
        local user selectable "post what I have so far" condition is met (
        such as pause in typing, a delimiting character such as full stop, or
        a turn-taking token). When an end-of-entry event occurs, the entry
        shall be finished by addition of a Line Separator, if no new line
        alternative (CR, CR LF, LF, New Line, Line Separator) was already
        included. The completed entry SHALL be moved to the history display
        area and an end-of-message indicator SHALL be transmitted If the
        protocol used has an end-of-message indicator defined.</t>
      </section>

      <section title="Completion of preview entry">
        <t>Text from the remote participants SHALL be entered in the preview
        area until an end-of entry event occurs. The end-of-entry is
        identified by any variant of a NEW LINE coded in the character set
        used, or an end of message indicator if there is a specific coding of
        that event. When an end-of-entry event occurs, the completed entry
        SHALL be moved to the history display area.</t>
      </section>

      <section title="Order of entries">
        <t>The order of displayed entries in the display area SHALL be the
        timing order when the entries were "posted" to the display from the
        preview area. That is, when the new line or end-of-message indicator
        is received.</t>
      </section>

      <section title="Scrolling and buffering">
        <t>When there are entries in the history field that are pushed
        (scrolled) out of the view by new text coming in, it SHOULD be
        possible to scroll them back within a practical limit. When the
        history field is scrolled, it SHALL stay in that scrolled position
        until scrolling is changed again or (optionally) a new entry is
        received. When scrolled to the bottom, the window SHALL auto-scroll to
        show new entries as well as old as they occur. When the display
        arrangement is made as in Figure1 and 2, the preview field and the
        history field SHOULD scroll together as one area.</t>

        <t>The input field of the local participant SHOULD always be visible
        regardless of the scroll position of the History field.</t>
      </section>

      <section title="Moving between different states">
        <t>Entries can be either "real-time (preview)" or "historical" and
        they can be either "displayed" or "hidden". When real-time text is
        received it SHALL BE classified as a real-time entry until an
        end-of-entry indicator is received. Real-time entries SHOULD be
        displayed in the real-time preview field. Once an end-of-entry
        indicator is received, the entry SHALL become historical and SHOULD be
        move into the history display field. Its position within the history
        SHALL be determined by the time that its end-of-entry indicator was
        received.</t>

        <t> The local user may select to hide either the entries while they
        are real-time (previews) or when they are historical. Hiding entries
        when they are in real-time state may be done to avoid distraction for
        the local participant. The feature to hide the entries while in
        real-time state SHOULD provide some alert when an end-of-entry
        indicator is received as well as when real-time text stops coming in
        for a period of time. (The alert due to pause in incoming text is
        important because some real-time text users are not accustomed to
        sending end of entry indications(e.g. RETURNs) or may use a text based
        end-of-entry indication (such as GA).</t>

        <t>An entry (or category of entries) can be placed in a hidden state
        by user command to hide it (them). (e.g. Hide all but "Mary" to make
        it easier to see her thread)</t>

        <t>The default SHALL be that both real-time and history are not
        hidden.</t>
      </section>

      <section title="En bloc transmission">
        <t>It SHOULD be possible for the participants to hold their text and
        not have it sent to the other participants until after the
        end-of-message event occurs. This enables users who do not want their
        message to be viewed by other participants until they have verified
        it. This also facilitates editing since random editing can be done on
        the text block before it is sent. This also allows a block of text to
        be pasted into the text entry area and then edited before it is sent.
        This could be new text or a previous text entry that the user would
        like to resend with edits. The en bloc method SHALL NOT be the only
        method for sending. A 'real-time / block send' switch SHOULD be
        located near the local user's text entry field Real-time SHALL be the
        default method for sending but a user preference setting MAY change
        the default to en bloc.</t>
      </section>

      <section title="Auto-real-time for Emergency calls and Textphone calls">
        <t>When it is detected that the session is used for emergency
        purposes, the text transmission SHALL be switched to real-time
        regardless of its previous setting.</t>

        <t>When it is detected that the session is used for a connection with
        a PSTN textphone through a gateway, the text transmission SHOULD be
        switched to real-time regardless of its previous setting. The user
        SHOULD be given an indication on the situation that also may call for
        application of turn-taking habits and limitations in simultaneity of
        voice and text communication.</t>

        <t>The user SHALL still be provided with a possibility to switch to en
        bloc sending after the session is established.</t>
      </section>

      <section title="Reasons to finish an entry">
        <t>The default end of entry action SHOULD be a new line request from
        the user.</t>

        <t>A specific send button MAY also be used.</t>

        <t>Other end of entry actions SHOULD also be used when operating in
        real-time mode. <vspace blankLines="0" /> A list of such actions is:
        <list style="symbols">
            <t>Long inactivity ( e.g. 10 seconds ).</t>

            <t>Full stop "." followed by short inactivity (e.g. 5 seconds) MAY
            be used as end of entry action..</t>
          </list></t>

        <t>Especially in PSTN text gateways having user input from PSTN text
        telephones, the following sequences SHOULD be included among those
        causing an entry to be finished:</t>

        <t><list style="symbols">
            <t>Letters "GA" or "GASK" or "SKSK" followed by short inactivity
            (e.g. 3 seconds), for interaction with TTY users.</t>

            <t>Character "+" or "x" followed by short inactivity (e.g. 3
            seconds), for European textphone users.</t>

            <t>Characters "*" or "KOM" followed by short inactivity (e.g. 3
            seconds), for Northern Europe textphone users.</t>
          </list></t>

        <t>White spaces (space bar, New line, CR, and LF) after those
        characters SHALL be accepted and included in the finished entry. (Some
        users do type a space character after the turn-taking indicator and
        some textphones will send return after the turn-taking symbol).</t>
      </section>

      <section title="Erasure">
        <t>Erasure SHALL only be done from the last character entered per
        participant. Erasure SHALL NOT be possible once entries have been
        moved into the history field.</t>

        <t>Transmitted characters that take no position on the display (e.g.
        Bell or Alert in Session) SHALL not take any specific erasing action,
        but be regarded to be erased simultaneously with the succeeding
        character.</t>

        <t>Characters that are composed by multiple keystrokes SHALL be erased
        by one erasing action.</t>

        <t>New lines inserted by automatic line break and word wrap actions
        purely for display formatting purposes by the local system SHALL not
        require any specific erasing action.</t>

        <t>When erasing, the erasing action MUST be performed strictly
        according to the rules above, in order to maintain a synchronized view
        of the conversation for the participants, even if conversation
        participants use different display formats, such as the two-panel mode
        described in ITU-T T.140 <xref target="T140.refs">1</xref> and the
        real-time preview mode described here.</t>
      </section>

      <section title="Display formatting">
        <t>The display SHALL be word-wrapped within the limits of the
        window.</t>

        <t>The labels on the entries SHOULD display the user name of the
        participant. If this information is not available, labels indicating
        "Received" and "Transmitted" or other suitable names for the
        participants SHOULD be used.</t>

        <t>The following operations SHOULD be possible to do: <list
            style="symbols">
            <t>Select font size</t>

            <t>Select text colour and background colour for each
            participant.</t>

            <t>Set window size</t>

            <t>Select between real-time and en-bloc modes.</t>
          </list></t>

        <t>The real-time preview display area MAY follow the same display
        formatting regarding font size, colours etc as the display area or MAY
        be different.</t>

        <t>Each real-time preview area MAY have a fixed or adjustable size. It
        MAY also have no specific scrolling features or its own scrolling
        mechanism..</t>
      </section>
    </section>

    <section title="Transport and presentation considerations ">
      <t>It is RECOMMENDED that characters be buffered and transmitted in 300
      ms intervals on the transport level. It is permissible to buffer
      characters for transmission in up to 500 ms intervals. Display of
      received chunks of text SHOULD be done one character at a time spread
      over the transmission interval so that adding a chunk of text to the
      real-time preview window approximately covers the transmission interval
      to give a smoother flow. <vspace blankLines="0" /> It SHOULD be possible
      to select participants in a multi-party situation for whom text is
      displayed, while text entries from others are hidden.</t>

      <t>It SHOULD be possible to hide the real-time preview area for selected
      participants, but let text be displayed when entries are completed.</t>

      <t><vspace blankLines="0" /> The presentation method MAY be used with
      transport methods for real-time text and for all text message methods
      where it is possible to use timer based transmission to transmit
      fragments of message entries.<vspace blankLines="0" /></t>

      <t>The method is designed in order to be usable for real-time text
      conversation with coding and presentation according to ITU-T T.140
      including its amendment <xref target="T140.refs">1</xref>, and <xref
      target="RFC3550">IETF RTP</xref> transport with packetization as defined
      in <xref target="RFC4103">RFC 4103</xref>. These coding, presentation
      and transport specifications SHOULD be used whenever there is no strong
      reason to follow other specifications. The methods for applying this in
      a multi-party situation is described in IETF Text media handling in RTP
      based real-time and message conferences <xref
      target="I-D.hellstrom-text-conference">draft-hellstrom-text-conference</xref>
      .</t>

      <t>An example of another environment where the real-time text with
      preview presentation is feasible, is with the messaging protocol <xref
      target="RFC4975">IETF MSRP</xref>, where the message fragment concept
      MAY be used for a real-time transmission and presentation according to
      the description in this specification.</t>

      <t>The transport method SHALL allow identification of the source of
      text, so that text from different sources can be arranged for convenient
      and readable presentation at the receiving end. [e.g. to attach labels
      to the incoming text).</t>
    </section>

    <section title="Multi-party sessions">
      <t>A multi-party session can be presented in a similar manner as the
      two-party session. The chat-view with real-time entry at the bottom of
      the window is one possible view.</t>

      <t><figure align="left" anchor="example2"
          title="Three-party call with real-time preview.">
          <preamble>A three-party view is shown in this example .</preamble>

          <artwork><![CDATA[
              _________________________________________________
             |                                             |^|
             |                                             | |
             |                                             | |
             |                                             | |
             |[Alice]Hi, Alice here.                       | |
             |                                             | |
             |[Bob]Bob as well.                            | |
             |                                             | |
             |[Eve]Hi, this is Eve, calling from Paris.    | |
             |     I thought you should be here.           | |
             |                                             | |
             |[Alice]I am coming on Thursday, my           | |
             |    performance is not until Friday morning. | |
             |                                             | |
             |[Bob]And I on Wednesday evening.             | |
             |                                             | |
             |[Alice9Can we meet on Thursday evening?      | |
             |                                             | |
             |[Eve]Yes, definitely. How about 7pm.         | |
             |     at the entrance of the restaurant       | |
             |     Le Lion Blanc?                          | |
             |[Eve]we can have dinner and then take a walk | |
             |                                             | |
             |    <Eve-typing> But I need to be back to    | |
             |    the hotel by 11 because I need           | |
             |                                             |-|
             |    <Bob-typing> I wou                       |-|
             |_____________________________________________|v|
             | of course, I underst                          |
             |_______________________________________________|


]]></artwork>

          <postamble />
        </figure></t>

      <t><figure>
          <preamble>Figure 2: This figure shows how a coordinated column view
          MAY be presented on Alice&acute;s device.</preamble>

          <artwork><![CDATA[______________________________________________________________________
|       Bob          |       Eve            |       Alice            |
|____________________|______________________|________________________|
|                    |                      |I will arrive by TGV.   |
|My flight is to Orly|                      |Convenient to the main  |
|                    |Hi all, can we plan   |station.                |
|                    |for the seminar?      |                        |
|Eve, will you do    |                      |                        |
|your presentation on|                      |                        |
|Friday?             |Yes, Friday at 10.    |                        |
|Fine, wo            |                      |We need to meet befo    |
|____________________________________________________________________|


]]></artwork>

          <postamble>Figure 3: A coordinated column-view of a three-party
          session with entries ordered in approximate time-order.</postamble>
        </figure></t>

      <t>In the column view, the column showing text transmitted from the
      device where the presentation is made, SHOULD be placed to the right of
      all other columns, so that users recognize the operating environment
      between different devices.</t>

      <t>In an environment with less space in the display it MAY be necessary
      to give up on displaying the relative time order in the column view in
      order to display more of the conversation contents in available
      space.</t>

      <t>Yet other situations MAY call for display in separate windows for
      example underneath video images from each participant.</t>

      <t><figure>
          <preamble></preamble>

          <artwork><![CDATA[________________________   _____________________   ___________________
|          Bob         |   |         Eve       |   |     Alice        |
|______________________|   |___________________|   |__________________|
|         ooooo        |   |        888        |   |        ...       |
|        / o  o\       |   |      8/- -\8      |   |       |||||      |
|       (   _   |      |   |     0|  |  |0     |   |     || o o ||    |
|        \_____/       |   |      |  _  |      |   |     ||  v  ||    |
|                      |   |       \___/       |   |     ||\___/||    |
|______________________|   |___________________|   |__________________|
|Help me to spell      |   |necessary          |   |ne.... OK you take| 
|nessessarry,I always  |   |                   |   |it                |
|get it wrong          |   |                   |   |                  |
|______________________|   |___________________|   |__________________| 

]]></artwork>

          <postamble>Figure 4: Example of text conversation entries placed
          underneath video images from each participant.</postamble>
        </figure></t>

      <t>When implemented in an environment that supports multi-party calls,
      it may be felt less important to maintain a real-time preview view of
      text from all participants. It may be very important for some
      participants to have rapid real-time preview presentation of selected
      participants, e.g. for live captioning of the call by a third party.</t>

      <t>Thus it may be desirable to be able to turn on or off the preview
      presentation per user. When turning off real-time preview from one
      participant, its presentation SHALL disappear from the preview window,
      and text SHALL be entered en-bloc to the history display as they are
      finished for that participant.</t>

      <t></t>
    </section>

    <section title="Presence indication">
      <t>Appropriate SIP based presence features SHOULD be used to indicate
      status in the user interface, e.g. that the user is typing when in
      &lsquo;en bloc&rsquo; mode.</t>
    </section>

    <section title="Alerting">
      <t>In order to be useful for hearing impaired, deaf and deaf-blind users
      as well as all situations with all users, it is important to provide
      audible, visual and, where possible, tactile alerting from events in the
      text conversation application. <vspace blankLines="0" /> It should be
      possible for a user to get external alerting signals with a method
      preferred by the user. It may for example be vibration, light flashes or
      sound as selected by the user. It should also be possible to get
      alerting on the screen at certain events. <vspace blankLines="0" /> The
      signals to external alerting systems should be issued when an incoming
      request for session initiation is received. When the method is used in
      connection with <xref target="T140.refs">T.140</xref> presentation, it
      should also be issued when the alert-in-session T.140 control event is
      received. <vspace blankLines="0" /> For minor events, for example when
      an entry from a user is completed and displayed in the conversation
      display area, an indication MAY be given e.g. by an on-screen flashing
      or any other suitable alerting signal. <vspace blankLines="0" /> It may
      be useful to provide external alerting also for these minor events in
      specific situations. If the user has not touched the application for a
      number of minutes when the minor event occurs it may be of interest to
      get an external alert. Details of such arrangements are outside the
      scope of this document.<vspace blankLines="0" /></t>
    </section>

    <section title="IANA Considerations">
      <t>None.</t>
    </section>

    <section title="Security Considerations">
      <t>This specification does not introduce any procedures that change
      security issues from what is already specified for the session and
      transport environment where the presentation method is applied.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="T140.refs">
        <front>
          <title>Recommendation T.140, Protocol for Multimedia Application
          Text Conversation (including Addendum)</title>

          <author fullname="" initials="" surname="">
            <organization>ITU-T</organization>
          </author>

          <date month="February" year="2000" />
        </front>
      </reference>

      &rfc4103;

      &rfc3550;

      &rfc4975;

      &rfc2119;

      &I-D.hellstrom-text-conference;
    </references>
  </back>
</rfc>