-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxep-0319.xml
135 lines (131 loc) · 6.34 KB
/
xep-0319.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE xep SYSTEM 'xep.dtd' [
<!ENTITY % ents SYSTEM 'xep.ent'>
%ents;
]>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep>
<header>
<title>Last User Interaction in Presence</title>
<abstract>This specification defines a way to communicate time of last user interaction with her system using XMPP presence notifications.</abstract>
&LEGALNOTICE;
<number>0319</number>
<status>Draft</status>
<type>Standards Track</type>
<sig>Standards</sig>
<dependencies>
<spec>XMPP Core</spec>
<spec>XMPP IM</spec>
<spec>XEP-0082</spec>
</dependencies>
<supersedes>
<spec>XEP-0256</spec>
</supersedes>
<supersededby/>
<shortname>idle</shortname>
&tobias;
<revision>
<version>1.0.2</version>
<date>2017-07-17</date>
<initials>egp</initials>
<remark><p>Make the schema more precise about a date being a xs:dateTime.</p></remark>
</revision>
<revision>
<version>1.0.1</version>
<date>2017-05-30</date>
<initials>egp</initials>
<remark><p>Be precise about the &xep0082; profile used.</p></remark>
</revision>
<revision>
<version>1.0</version>
<date>2015-04-02</date>
<initials>XEP editor (mam)</initials>
<remark><p>Per a vote of the XMPP Council, advanced specification from Experimental to Draft.</p></remark>
</revision>
<revision>
<version>0.2</version>
<date>2013-08-27</date>
<initials>tobias</initials>
<remark><p>Fix issues raised in XMPP Council meeting.</p></remark>
</revision>
<revision>
<version>0.1</version>
<date>2013-03-04</date>
<initials>psa</initials>
<remark><p>Initial published version approved by the XMPP Council.</p></remark>
</revision>
<revision>
<version>0.0.1</version>
<date>2013-02-17</date>
<initials>tobias</initials>
<remark><p>Initial version.</p></remark>
</revision>
</header>
<section1 topic='Introduction' anchor='intro'>
<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>
<p>This protocol uses absolute timestamps formatted according to the DateTime profile of &xep0082;, indicated as value of the 'since' attribute in the <idle/> element.</p>
<p>Experience has shown a number of issues with &xep0256;:</p>
<ul>
<li>The use of relative durations is too vague. It requires additional information from &xep0203; to provide a reliable user experience.</li>
<li>Distinguishing between the idle and last online use cases is very difficult.</li>
<li>It is desirable to have idle time indiciated for &PRESENCE; <show/> values other than "away" and "xa".</li>
</ul>
<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>
</section1>
<section1 topic='Use Cases' anchor='usecases'>
<p>There are two main use cases for this extension, explained in more detail in the following sections.</p>
<section2 topic='Presence with Last Interaction' anchor='last-interact'>
<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>
<example caption='Time of Last User Interaction in Auto-Away'><![CDATA[
<presence from='juliet@capulet.com/balcony'>
<show>away</show>
<idle xmlns='urn:xmpp:idle:1' since='1969-07-21T02:56:15Z'/>
</presence>
]]></example>
<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>
</section2>
<section2 topic='Presence Indicating User Coming Back From Idle' anchor='back-from-idle'>
<p>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 <idle/> element.</p>
<example caption='Presence Indicating Return to Device'><![CDATA[
<presence from='juliet@capulet.com/balcony' />
]]></example>
</section2>
</section1>
<section1 topic='XML Schema' anchor='schema'>
<code><![CDATA[
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="urn:xmpp:idle:1"
xmlns="urn:xmpp:idle:1">
<xs:annotation>
<xs:documentation>
The protocol documented by this schema is defined in
XEP-0319: http://www.xmpp.org/extensions/xep-0319.html
</xs:documentation>
</xs:annotation>
<xs:element name="idle">
<xs:complexType>
<xs:attribute name="since" use="required" type="xs:dateTime"/>
</xs:complexType>
</xs:element>
</xs:schema>
]]></code>
</section1>
<section1 topic='Acknowledgements' anchor='ack'>
<p>Thanks to Florian Schmaus, Christian Schudt, and Lance Stout for their helpful comments.</p>
</section1>
<section1 topic='Security Considerations' anchor='security'>
<p>The security considerations of <cite>XEP-0082</cite> apply to this protocol.</p>
<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>
</section1>
<section1 topic='IANA Considerations' anchor='iana'>
<p>This document requires no interaction with &IANA;.</p>
</section1>
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
<section2 topic='Protocol Namespace'>
<p>The ®ISTRAR; 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>
</section2>
</section1>
</xep>