[Standards] Combining XEP-0085 Chat states with XEP-0301 Real-Time Text

6 views
Skip to first unread message

Mark Rejhon

unread,
Mar 21, 2012, 10:33:27 AM3/21/12
to XMPP Standards
On Tue, Mar 20, 2012 at 1:32 PM, Mark Rejhon <mark...@gmail.com> wrote:
On Mon, Mar 19, 2012 at 2:17 PM, Mark Rejhon <mark...@gmail.com> wrote:
Version 0.2 of XEP-0301 (In-Band Real Time Text) has been released.
[snip]
[snip]
ChangeLog Summary:
[snip]
- Add "Multi-User Chat", "Simultaneous Logins", "Usage with Chat States", and several other sections

From testing my RealJabber software (demonstration XEP-0301 client), in terms of Chat States

XEP-0085 (http://xmpp.org/extensions/xep-0085.html) specifies not to transmit <composing/> repeatedly. That said, many chat programs such as Google Talk (GMAIL) and Pidgin, Adium, etc, automatically assume <active/> for any <message/> transmitted without an XEP-0085 chat state.  This is never properly clarified in XEP-0085 behaviour, about how to handle <messages/> not containing a chat state and what assumptions may safely be made.  Therefore, XEP-0301 recommends transmitting a <composing/> with every <message/> that contains a <rtt/> but without <body/> to maintain backwards compatibility with existing chat software.

To clarify with an example of combining XEP-0085 and XEP-0301 (which is simply early transmission of your typing before <body> is transmitted):

<message to='jul...@capulet.lit' from='ro...@montague.lit/orchard' type='chat' id='a01'>
  <rtt xmlns='urn:xmpp:rtt:0' seq='0' event='new'>
    <t>Hello, </t>
  </rtt>
  <composing/>
</message>

<message to='jul...@capulet.lit' from='ro...@montague.lit/orchard' type='chat' id='a02'>
  <rtt xmlns='urn:xmpp:rtt:0' seq='1'>
    <t>my </t>
  </rtt>
  <composing/>
</message>

<message to='jul...@capulet.lit' from='ro...@montague.lit/orchard' type='chat' id='a03'>
  <rtt xmlns='urn:xmpp:rtt:0' seq='2'>
    <t>Juliet!</t>
  </rtt>
  <composing/>
</message>

<message to='jul...@capulet.lit' from='ro...@montague.lit/orchard' type='chat' id='a04'>
  <body>Hello, my Juliet!</body>
  <active/>
</message>


As you can see, I have had to include <composing/> with every <rtt/> because not including <composing/> is automatically assumed by a majority of clients to be <active/> if an XEP-0085 chat state is missing from a <message/> 

Thanks
Mark Rejhon
 

Short summary: <message/> without <body/> and without any XEP-0085 chat state update, are still automatically assumed as <active/> (wrongly? or not?) by many existing software (i.e. GMAIL, Pidgin) which could be construed as wrong behaviour, but XEP-0085 does not seem to be directly clear about this specific situation.   Since real-time text transmits <message/> without <body/> and with <rtt/>, and <rtt/> is real time text of the typing being composed, this is a wrong assumption to say <message/> without <body/> is to be assumed to be an <active/> state.  A huge number of vendors seem to be doing this assumption, all the way from Pidgin thru GMAIL's Google Talk. 

It would be nice if XEP-0085 document can be updated to clarify in this area?

Thanks,
Mark Rejhon

Peter Saint-Andre

unread,
Mar 21, 2012, 10:51:35 AM3/21/12
to XMPP Standards
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I see your point. When XEP-0301 advances to Draft, we'll want to
update XEP-0085 as well. Essentially, a message with <rtt/> but no
<body/> is something in between a content message and a standalone
message, in the terminology of XEP-0085. We could think of it as an
interim message, and XEP-0085 doesn't talk about such messages because
we hadn't defined them back in 2003-2005.

Peter

- --
Peter Saint-Andre
https://stpeter.im/


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk9p6vcACgkQNL8k5A2w/vy55QCg2QwEj8YRhYpcd1jZFa3dzvif
eVMAoILwXxt8ZvD+4jyvzzoB3ByOk+4E
=uFoD
-----END PGP SIGNATURE-----

Reply all
Reply to author
Forward
0 new messages