XEP-0319 -- fix typos, added clarifications and added acks section
[xmpp:xmpp.git] / extensions / xep-0319.xml
1 <?xml version='1.0' encoding='UTF-8'?>
2 <!DOCTYPE xep SYSTEM 'xep.dtd' [
3   <!ENTITY % ents SYSTEM 'xep.ent'>
4 %ents;
5 ]>
6 <?xml-stylesheet type='text/xsl' href='xep.xsl'?>
7 <xep>
8 <header>
9   <title>Last User Interaction in Presence</title>
10   <abstract>This specification defines a way to communicate time of last user interaction with her system using XMPP presence notifications.</abstract>
12   <number>0319</number>
13   <status>Draft</status>
14   <interim/>
15   <type>Standards Track</type>
16   <sig>Standards</sig>
17   <dependencies>
18     <spec>XMPP Core</spec>
19     <spec>XMPP IM</spec>
20     <spec>XEP-0082</spec>
21   </dependencies>
22   <supersedes>
23     <spec>XEP-0256</spec>
24   </supersedes>
25   <supersededby/>
26   <shortname>idle</shortname>
27   &tobias;
28   <revision>
29     <version>1.0rc1</version>
30     <date>2014-03-02</date>
31     <initials>XEP editor (mam)</initials>
32     <remark><p>Per a vote of the XMPP Council, advanced specification from Experimental to Draft.</p></remark>
33   </revision>
34   <revision>
35     <version>0.2</version>
36     <date>2013-08-27</date>
37     <initials>tobias</initials>
38     <remark><p>Fix issues raised in XMPP Council meeting.</p></remark>
39   </revision>
40   <revision>
41     <version>0.1</version>
42     <date>2013-03-04</date>
43     <initials>psa</initials>
44     <remark><p>Initial published version approved by the XMPP Council.</p></remark>
45   </revision>
46   <revision>
47     <version>0.0.1</version>
48     <date>2013-02-17</date>
49     <initials>tobias</initials>
50     <remark><p>Initial version.</p></remark>
51   </revision>
52 </header>
53 <section1 topic='Introduction' anchor='intro'>
54   <p>This protocol describes a way to communicate a user's last interaction time with other XMPP entities over &PRESENCE; stanzas. For the purposes of this document, user interaction here refers to a human end user interacting with her device by means of a keyboard, mouse, touch screen, and so on. Based on this information XMPP clients can display the time a contact went idle or a duration for how long a contact has been idle, thereby allowing end users to estimate the expected responsiveness of their contacts.</p>
55   <p>This protocol uses absolute timestamps formatted according to &xep0082;, indicated as value of the 'since' attribute in the &lt;idle/&gt; element.</p>
56   <p>Experience has shown a number of issues with &xep0256;:</p>
57   <ul>
58     <li>The use of relative durations is too vague. It requires additional information from &xep0203; to provide a reliable user experience.</li>
59     <li>Distinguishing between the idle and last online use cases is very difficult.</li>
60     <li>It is desirable to have idle time indiciated for &PRESENCE; &lt;show/&gt; values other than "away" and "xa".</li>
61   </ul>
62   <p>Updating <cite>XEP-0256</cite> directly would be problematic as it would break compatibility with existing implementations.  Instead a new protocol is described for handling the idle time use case; the last online use case is handled by &xep0312;.</p>
63 </section1>
64 <section1 topic='Use Cases' anchor='usecases'>
65   <p>There are two main use cases for this extension, explained in more detail in the following sections.</p>
66   <section2 topic='Presence with Last Interaction' anchor='last-interact'>
67   <p>After a user has not interacted with her device for some amount of time the user wants to inform her contacts about this fact. The client sends a &PRESENCE; stanza with time of last interaction.</p>
68   <example caption='Time of Last User Interaction in Auto-Away'><![CDATA[
69 <presence from='juliet@capulet.com/balcony'>
70   <show>away</show>
71   <idle xmlns='urn:xmpp:idle:1' since='1969-07-21T02:56:15Z'/>
72 </presence>
73     ]]></example>
74   <p>The amount of time the user has to be idle before a client sends this enhanced presence is application-specific; it is suggested that a sensible default interval of 5 minutes be used.</p>
75   </section2>
76   <section2 topic='Presence Indicating User Coming Back From Idle' anchor='back-from-idle'>
77     When a user comes back and uses her device again the client informs user's contacts by sending a normal presence stanza like shown in the following example, omiting the &lt;idle/&gt; element.
78     <example caption='Presence Indicating Return to Device'><![CDATA[
79 <presence from='juliet@capulet.com/balcony' />
80     ]]></example>
81   </section2>
82 </section1>
83 <section1 topic='Acknowledgements' anchor='ack'>
84   <p>Thanks to Florian Schmaus, Christian Schudt, and Lance Stout for their helpful comments.</p>
85 </section1>
86 <section1 topic='Security Considerations' anchor='security'>
87   <p>The security considerations of <cite>XEP-0082</cite> apply to this protocol.</p>
88   <p>This specification introduces no new security or privacy concerns. While including a last user interaction notation in &PRESENCE; updates can enable recipients to determine exactly when a user has stopped interacting with her XMPP client or even their system, this information is in essence already available if the user's client publishes timely presence updates.</p>
89 </section1>
90 <section1 topic='IANA Considerations' anchor='iana'>
91   <p>This document requires no interaction with &IANA;.</p>
92 </section1>
93 <section1 topic='XMPP Registrar Considerations' anchor='registrar'>
94   <section2 topic='Protocol Namespace'>
95     <p>The &REGISTRAR; shall add 'urn:xmpp:idle:1' to its registry at <link url='http://xmpp.org/registrar/namespaces.html'>http://xmpp.org/registrar/namespaces.html</link>.</p>
96   </section2>
97 </section1>
98 </xep>