diff --git a/xep-0301.xml b/xep-0301.xml index 658fed56..28af6d92 100644 --- a/xep-0301.xml +++ b/xep-0301.xml @@ -26,9 +26,18 @@ Rejhon mark@realjabber.org markybox@gmail.com - RealJabber.org and Rejhon Technologies Inc. - http://www.realjabber.com + http://www.realjabber.org + + 0.6 + 2012-07-28 + MDR +

Changes and improvements in preparation for advance to Draft. Unified + <e/> element (Erase Text) to handle all possible text deletions. + Clarify the Unicode terminology used in this specification, and move + section 4.5.4 downwards to section 4.7 to improve reading + order.

+
0.5 2012-07-22 @@ -83,21 +92,21 @@

This document defines a specification for real-time text transmitted in-band over an XMPP network.

-

Real-time text is text transmitted instantly while it is being typed or created. The recipient can immediately read the sender's text as it is written, without waiting. Text can be used conversationally, similar to a telephone conversation, where one listens while the other is speaking. It eliminates waiting times found in messaging, and is favored by deaf and hard of hearing individuals who prefer text conversation. For a visual animation of real-time text, see RealJabber.org - RealJabber.org, the author's website covering this specification, including animation examples of what real time text looks like. <http://www.realjabber.org>..

+

Real-time text is text transmitted instantly while it is being typed or created. The recipient can immediately read the sender's text as it is written, without waiting. Text can be used conversationally, similar to a telephone conversation, where one listens while the other is speaking. It eliminates waiting times found in messaging, and is favored by deaf and hard of hearing individuals who prefer text conversation.

Real-time text has been around for decades in various implementations:

-

Real-time text is suitable for smooth and rapid mainstream communication in text, as an all-inclusive technology to complement instant messaging. It can also allow immediate conversation in situations where speech cannot be used (e.g. quiet environments, privacy, deaf and hard of hearing). Real-time text is also beneficial in emergency situations, due to its immediacy.

+

Real-time text is suitable for smooth and rapid mainstream communication in text, as an all-inclusive technology to complement instant messaging. It can also allow immediate conversation in situations where speech cannot be used (e.g. quiet environments, privacy, deaf and hard of hearing). Real-time text is also beneficial in emergency situations, due to its immediacy. For a visual animation of real-time text, see Real-Time Text Taskforce + Real-Time Text Taskforce, a foundation for real-time text standardization <http://www.realtimetext.org>..

@@ -121,7 +130,7 @@
  • Allow use within existing instant-messaging user interfaces, with minimal UI modifications.
  • Allow alternate optional presentations of real-time text, including split screen and/or other layouts.
  • Protocol design ensures integrity of real-time text, and allows extensions for new features.
  • -
  • Be interoperable with other real-time text protocols via gateways, including RFC 4103 and ITU-T T.140.
  • +
  • Allow use within gateways to interoperate with other real-time text protocols, including RFC 4103 and ITU-T T.140.
  • @@ -129,7 +138,7 @@
  • Allow XMPP to follow the ITU-T Rec. F.703 ITU-T Rec. F.703: Multimedia conversational services. <http://www.itu.int/rec/T-REC-F.703>. Total Conversation standard for simultaneous voice, video, and real-time text.
  • Be a candidate technology for use with Next Generation 9-1-1 / 1-1-2 emergency services.
  • Be suitable for transcription services and (when coupled with voice at user's choice) for TTY/text telephone alternatives, relay services, and captioned telephone systems.
  • -
  • Be an accessible enhancement for mobile phone text messaging and mainstream instant messaging.
  • +
  • Allow immediate conversational text through mobile phone text messaging and mainstream instant messaging.
  • @@ -142,7 +151,7 @@ -

    Real-time text is transmitted via an <rtt/> child element of a <message/> stanza. The <rtt/> element is transmitted at regular intervals by the sender client while a message is being composed, to allow the recipient to see the sender type the message, without waiting for the full message sent in a <body/> element.

    +

    Real-time text is transmitted via an <rtt/> child element of a <message/> stanza. The <rtt/> element is transmitted at regular intervals by the sender client while a message is being composed, to allow the recipient to see the latest message text, without waiting for the full message sent in a <body/> element.

    This is a basic example of a real-time message "Hello, my Juliet!” transmitted in real-time while it is being typed, before a final message delivery in a <body/> element (to remain Backwards Compatible):

    Example 1: Introductory Example

    @@ -177,11 +186,11 @@

    This REQUIRED attribute is a counter to maintain the integrity of real-time text. (The bounds of seq is 31-bits, the range of positive values of a signed integer.)

    -

    Senders MUST increment the seq attribute by 1 in each subsequent <rtt/> transmitted without an event attribute. When an <rtt/> element has an event attribute, senders MAY instead use any value as the new starting value for seq. A random starting seq value is RECOMMENDED for best integrity during Usage with Multi-User Chat and Simultaneous Logins. Senders MAY limit the size of the new starting seq value, to keep <rtt/> compact while allowing plenty of incrementing room without overflow.

    +

    Senders MUST increment the seq attribute by 1 in each subsequent <rtt/> transmitted without an event attribute. When an <rtt/> element has an event attribute, senders MAY instead use any value as the new starting value for seq. A random starting seq value is RECOMMENDED for best integrity during Usage with Multi-User Chat and Simultaneous Logins. Senders SHOULD limit the size of the new starting seq value, to keep <rtt/> compact while allowing plenty of incrementing room, and prevent wraparound from ever happening.

    Recipients MUST monitor the seq value to verify the integrity of real-time text. See Keeping Real-Time Text Synchronized.

    -

    This attribute signals events for real-time text, such as the start of a new real-time message. The event attribute MAY be omitted from the <rtt/> element during regular real-time text transmission. Recipients MUST ignore <rtt/> containing unsupported event values.

    +

    This attribute signals events for real-time text, such as the start of a new real-time message. Recipient clients MUST ignore <rtt/> containing unsupported event values. The use of <rtt/> elements without an event attribute is for transmitting changes to an existing real-time message. The event attribute is used in the situations specified below:

    @@ -198,38 +207,38 @@ - + - + - +
    event
    reset Reset the current real-time message.RECOMMENDEDRECOMMENDED REQUIRED
    init Initiate a real-time text session. OPTIONALOPTIONALRECOMMENDED
    cancel End a real-time text session. OPTIONALOPTIONALRECOMMENDED

    event='new'
    Senders MUST use this value when transmitting the first <rtt/> element containing Action Elements (i.e. the first character(s) of a new message). Recipient clients MUST initialize a new real-time message for display, and then process action elements within the <rtt/> element. If a real-time message already exists in the same chat session, its content MUST be replaced (i.e. cleared prior to processing action elements). Senders MAY send subsequent <rtt/> elements that do not contain an event attribute.

    event='reset'
    - Recipients MUST treat 'reset' the same as 'new'. Senders MUST use 'new' only when the sender has started composing a new message, and use 'reset' when re-transmitting a real-time message. See Message Reset, used for Keeping Real-Time Text Synchronized and Basic Real-Time Text.

    + For recipients, both 'new' and 'reset' are logically identical, and differ only for implementation purposes (e.g. highlighting newly-started messages). Recipient clients MUST initialize a new real-time message for display, and then process action elements within the <rtt/> element. If a real-time message already exists in the same chat session, its content MUST be replaced (i.e. cleared prior to processing action elements). Senders MAY send subsequent <rtt/> elements that do not contain an event attribute. Recipients MUST be able to process 'reset' without first receiving 'new'. See Message Reset, used for Keeping Real-Time Text Synchronized and Basic Real-Time Text.

    event='init'
    - Clients MAY use this value to signal the other end that real-time text is being activated. If used, this <rtt/> element MUST be empty with no action elements. See Activating and Deactivating Real-Time Text.

    + Clients MAY use this value to signal the other end that real-time text is being activated. It can be used to signal activation of real-time text before starting a new real-time message. If used, this <rtt/> element MUST be empty with no action elements. See Activating and Deactivating Real-Time Text.

    event='cancel'
    Clients MAY use this value to signal the other end to stop transmitting real-time text. If used, this <rtt/> element MUST be empty with no action elements. Recipients SHOULD discontinue sending back <rtt/> elements for the remainder of the same chat session (or unless 'init' is used again). See Activating and Deactivating Real-Time Text.

    -

    This OPTIONAL attribute is used only if &xep0308; (XEP-0308) is implemented. Sender clients MAY use this attribute to allow recipient clients to have improved presentation of real-time text during message correction (e.g. shown as in-place editing of previous message).

    -

    This id attribute refers to the <message/> stanza containing the <body/> that is being edited (See 'Business Rules' in XEP-0308). If used at all, then id MUST be included in all <rtt/> elements transmitted during message correction of the previous message. When switching messages being edited (i.e. editing the current message versus editing the previous message), the first <rtt/> element MUST contain an event attribute value, such as 'reset' (See Message Reset).

    +

    This attribute is used only if &xep0308; (XEP-0308) is implemented at the same time as this specification. If a client supports both XEP-0301 and XEP-0308, clients SHOULD use this attribute to allow recipient clients to have improved presentation of real-time text during message correction (e.g. shown as in-place editing of previous message).

    +

    This id attribute refers to the <message/> stanza containing the <body/> that is being edited (See 'Business Rules' in XEP-0308). When used, id MUST be included in all <rtt/> elements transmitted during message correction of the previous message. A Message Reset MUST be used when switching between messages being edited (i.e. switching between editing the new partially-composed message versus editing of the previously delivered message).

    -

    The real-time message is considered complete upon receipt of a <body/> element in a message stanza. The delivered message in the <body/> element is displayed instead of the real-time message. In the ideal case, the message from <body/> is redundant since this delivered message is identical to the final contents of the real-time message.

    +

    The real-time message is considered complete upon receipt of a <body/> element in a <message/> stanza. The delivered text in the <body/> element is considered the final message text, and supersedes the real-time message. In the ideal case, the text from <body/> is redundant since this delivered text is identical to the final contents of the real-time message.

    Senders MUST include an event attribute in the next <rtt/> element that is transmitted after a message stanza containing a <body/> element.

    The real-time text standard simply provides early delivery of text before the <body/> element. The <body/> element continues to follow the &xmppcore; specification. In particular, XMPP implementations need to ignore XML elements they do not understand. Clients, that do not support real-time text, will continue to behave normally, displaying complete lines of messages as they are delivered.

    @@ -237,8 +246,7 @@

    For the best balance between interoperability and usability, the default transmission interval of <rtt/> elements for a continuously-changing message SHOULD be approximately 0.7 second. This interval meets ITU-T Rec. F.700 Section A.3.2.1 for good quality real-time conversation. If a different transmission interval needs to be used, the interval SHOULD be between 0.3 second and 1 second.

    -

    A longer interval will lead to a less optimal user experience in most network conditions. Conversely, a much shorter interval may more frequently trigger throttling or flooding protection algorithms in public XMPP servers, leading to dropped <message/> elements and/or Congestion Considerations.

    -

    To provide fluid real-time text, one or more of the following methods can be used:

    +

    A longer interval will lead to a less optimal user experience in most network conditions. Conversely, a much shorter interval can lead to Congestion Considerations. To provide fluid real-time text, one or more of the following methods can be used: