diff --git a/xep-0201.xml b/xep-0201.xml new file mode 100644 index 00000000..4d7b4e98 --- /dev/null +++ b/xep-0201.xml @@ -0,0 +1,137 @@ + + +%ents; +]> + + +
+ Best Practices for Message Threads + This specification defines recommended handling of XMPP message threads. + &LEGALNOTICE; + 0201 + Experimental + Informational + Standards JIG + Council + + XMPP Core + + + + N/A + &stpeter; + &ianpaterson; + + 0.1 + 2006-12-20 + psa +

Initial version.

+
+ + 0.0.2 + 2006-12-14 + psa + Corrected SHIM example; added XMPP Registrar considerations. + + + 0.0.1 + 2006-12-13 + psa/ip + First draft. + +
+ + &RFC3921BISNOTE; +

Although message threads are re-used in XMPP extension protocols such as &xep0085; and &xep0155;, the semantics of message threads have never been well specified (e.g., in RFC 3921). This document attempts to clearly specify the meaning and handling of message threads for implementation by XMPP clients and possible incorporation into the successor to RFC 3921.

+
+ +

Threads matter because they enable XMPP clients to:

+ +
+ +

Section 2.1.2.3 of RFC 3920 currently states the following regarding the semantics of the ThreadID:

+

The <thread/> element contains non-human-readable XML character data specifying an identifier that is used for tracking a conversation thread (sometimes referred to as an "instant messaging session") between two entities.

+

The description in RFC 3921 is deemed to be too limiting, since it ignores the potential use of the ThreadID when exchanging message stanzas of types other than 'chat'. Therefore we proposal the following description:

+

The primary use of the XMPP <thread/> element is to uniquely identify a conversation thread or "chat session" between two entities instantiated by <message/> stanzas of type 'chat'. However, the XMPP <thread/> element may also be used to uniquely identify an analogous thread between two entities instantiated by <message/> stanzas of type 'headline' or 'normal', or among multiple entities in the context of a multi-user chat room instantiated by <message/> stanzas of type 'groupchat'.

+
+ +

Section 2.1.2.3 of RFC 3920 currently states the following uniqueness requirement:

+

The value of the <thread/> element ... MUST be unique to that conversation thread within the stream and MUST be consistent throughout that conversation (a client that receives a message from the same full JID but with a different thread ID MUST assume that the message in question exists outside the context of the existing conversation thread).

+

The uniqueness requirement in RFC 3921 is not deemed strong enough since it is desirable that a ThreadID could be used to (for instance) restart a conversation at a later date. Therefore we propose the following uniqueness requirement:

+

For messages of type 'chat', 'headline', or 'normal', the value of the <thread/> element MUST be unique for the combination of the sender's bare JID and recipient's bare JID (i.e., the thread MUST NOT ever be repeated in communications between the sender and recipient). For messages of type 'groupchat', the value of the <thread/> element MUST be unique in the context of the multi-user chat room, as long as the room remains in existence.

+
+ +

In the context of <message/> stanzas of type 'chat' exchanged between two entities, the value of the <thread/> element shall be considered equivalent to a unique identifier for the chat session or conversation thread. If an entity receives such a message with a new or unknown ThreadID, it SHOULD treat the message as part of a session with unnegotiated parameters (i.e., as equivalent to the first message in a chat session that has been negotiated via XEP-0155 with no parameters specified). An entity SHOULD destroy the thread when it sends or receives a XEP-0155 "terminate" action and MAY destroy the thread when it goes offline, but SHOULD NOT destroy the thread if a human user merely closes a window in a client interface.

+

To ensure the uniqueness of ThreadIDs in the context of a multi-user chat room, the multi-use chat service MAY provide a way for room occupants to request a unique ThreadID; definition of such methods is out of scope for this specification.

+

There are no special handling requirements related to threads in the context of <message/> stanzas of type 'headline' or 'normal'.

+
+ +

Depending on the type of the message (i.e., the value of the 'type' attribute), the <thread/> should be included as follows:

+ + + + + + + + + + + + + + + + + + + + + +
Message TypeInclusion
chatRECOMMENDED
groupchatOPTIONAL
headlineOPTIONAL
normalOPTIONAL
+
+ +

In some contexts it may be desirable to enforce thread-like semantics when exchanging XMPP <iq/> stanzas. Because RFC 3920 disallows more than one direct child element of the <iq/> stanza, it is not possible to include the <thread/> element for tracking purposes. Therefore we define a "ThreadID" &xep0131; header with the same semantics as the <thread/> element, but with the syntax of a SHIM header:

+ + + +
e0ffe42b28561960c6b12b944a092794b9683a38
+
+
+ + ]]>
+
+ +

This document introduces no new security concerns or considerations above and beyond those specified in RFC 3920 and RFC 3921.

+
+ +

This document requires no interaction with &IANA;.

+
+ + +

The XMPP Registrar shall add "ThreadID" to its registry of SHIM headers. The submission is as follows:

+ + ThreadID + + This header has the same semantics as the thread child element + of the XMPP message stanza but is for use in IQ stanzas. + + XEP-0201 + + ]]> +
+
+
diff --git a/xep-0202.xml b/xep-0202.xml new file mode 100644 index 00000000..5c18feb3 --- /dev/null +++ b/xep-0202.xml @@ -0,0 +1,141 @@ + + +%ents; +]> + + +
+ Entity Time + This document defines an XMPP protocol extension for communicating the local time of an entity. + &LEGALNOTICE; + 0202 + Experimental + Standards Track + Standards JIG + Council + + XMPP Core + XEP-0082 + + + XEP-0090 + + + Not yet assigned + &stpeter; + + Maciej + Niedzielski + machekku@uaznia.net + machekku@uaznia.net + + + 0.1 + 2006-12-20 + psa +

Initial version; further specified security considerations; per Council feedback, removed tz and display elements.

+
+ + 0.0.2 + 2006-12-19 + psa +

Clarified text; adjusted protocol definition; corrected schema.

+
+ + 0.0.1 + 2006-12-05 + mn +

First draft.

+
+
+ +

Although the XMPP protocol extension defined in &xep0090; provides a way to discover the time at another entity, it has several limitations:

+ +

To overcome these limitations, this document defines a replacement for XEP-0090 which enables communication of an entity's UTC time and numeric time zone offset while adhering to XEP-0082.

+
+ +

The namespace defined herein provides a standard way for XMPP entities to exchange information about the local time. The information is communicated in a request/response pair using an &IQ; element that contains a <time/> element qualified by an XML namespace to be issued when this specification advances to a status of Draft (see Protocol Namespace). The following children of the <time/> element are defined for use in IQ stanzas of type 'result':

+ + + + + + + + + + + + + + + + +
ElementDefinitionInclusion
<tzo/>The entity's numeric time zone offset from UTC. The format MUST conform to Time Zone Definition (TZD) in XEP-0082.REQUIRED
<utc/>The UTC time according to the responding entity. The format MUST conform to the dateTime profile specified in XEP-0082 and MUST be expressed in UTC.REQUIRED
+
+ + + + + + + ]]> +

The standard error conditions described in &xep0086; apply (e.g., &unavailable; if the entity does not support the namespace).

+
+ +

This protocol was designed in a way that makes migration from XEP-0090 straightforward. This document specifies a different format for the XML character data of the <utc> element (compliant with XEP-0082) and specifies a new <tzo> element for the numeric offset from UTC, while removing the formerly optional and effectively useless <display/> and <tz/> elements.

+

Implementations that support XEP-0090 should support the protocol defined herein as soon as possible, but should continue to support the protocol defined in XEP-0090 for backwards compatibility until the status of that specification is changed to Obsolete.

+
+ +

Revealing an entity's numeric time zone offset may leak limited information about the entity's current location. If the entity's understanding of UTC is far off from actual UTC, revealing that discrepancy may make it possible for an attacker to send XML stanzas that appear to be in the past or future even though they are not; therefore an entity should use the Network Time Protocol (&rfc0958;) or a similar technology to stay synchronized with actual UTC.

+
+ +

This document requires no interaction with &IANA;.

+
+ + +

Until this specification advances to a status of Draft, its associated namespace shall be "http://www.xmpp.org/extensions/xep-0202.html#ns"; upon advancement of this specification, the XMPP Registrar shall issue a permanent namespace in accordance with the process defined in Section 4 of &xep0053;.

+
+
+ + + + + + + + + + + + + + + + ]]> + +
diff --git a/xep-0203.xml b/xep-0203.xml new file mode 100644 index 00000000..2e8673a9 --- /dev/null +++ b/xep-0203.xml @@ -0,0 +1,154 @@ + + +%ents; +]> + + +
+ Delayed Delivery + This document defines an XMPP protocol extension for communicating the fact that an XML stanza has been delivered with a delay. + &LEGALNOTICE; + 0203 + ProtoXEP + Standards Track + Standards JIG + Council + + XMPP Core + XEP-0082 + + + XEP-0091 + + + Not yet assigned + &stpeter; + + 0.1 + 2006-12-20 + psa +

Initial version.

+
+ + 0.0.1 + 2006-12-19 + psa + First draft. + +
+ +

Although the XMPP protocol extension defined in &xep0091; provides a way to communicate that an XML stanza (typically a &MESSAGE; or &PRESENCE; stanza) has been delivered with a delay, the timestamp format defined in that document does not adhere to the recommended date and time profiles for XMPP protocols defined in &xep0082;. Therefore, this document defines a replacement for XEP-0091 which enables communication of delayed delivery information while adhering to XEP-0082.

+
+ +

The XML namespace defined herein is used to provide timestamp information about data stored for later delivery. The most common uses of this namespace are to stamp:

+ +

Information about the delivery delay is communicated by adding to the <message/> or <presence/> stanza one and only one <delay/> child qualified by a namespace to be issued when this specification advances to a status of Draft. This information is added by the server or component that delivers the stanza. The following attributes are defined for the <delay/> element:

+ + + + + + + + + + + + + + + + +
ElementDefinitionInclusion
<from/>The Jabber ID of the entity that originally sent the XML stanza or that delayed the delivery of the stanza (e.g., the address of a multi-user chat room).RECOMMENDED
<stamp/>The time when the XML stanza was originally sent. The format MUST adhere to the dateTime format specified in XEP-0082 and MUST be expressed in UTC.REQUIRED
+

In addition, the <delay/> element MAY contain XML character data that provides a natural-language description of the reason for the delay.

+
+ + + + O blessed, blessed night! I am afeard. + Being in night, all this is but a dream, + Too flattering-sweet to be substantial. + + + Offline Storage + + + ]]> + + anon! + xa + 1 + + + ]]> + + + By the pricking of my thumbs, + Something wicked this way comes. + Open, locks, + Whoever knocks! + + + + ]]> + + +

This protocol was designed in a way that makes migration from XEP-0091 straightforward. All attributes present in the 'jabber:x:delay' namespace are present in the namespace defined herein. However, this document specifies a different format for the value of the <stamp> attribute (compliant with XEP-0082).

+

Implementations that support XEP-0091 should support the protocol defined herein as soon as possible, but should continue to support the protocol defined in XEP-0091 for backwards compatibility until the status of that specification is changed to Obsolete.

+
+ +

Delayed delivery data can expose information about the sender's presence on the network at some time in the past. However, this introduces no new vulnerabilities, since the same information would have been available in real time.

+
+ +

This document requires no interaction with &IANA;.

+
+ + +

Until this specification advances to a status of Draft, its associated namespace shall be "http://www.xmpp.org/extensions/xep-0203.html#ns"; upon advancement of this specification, the XMPP Registrar shall issue a permanent namespace in accordance with the process defined in Section 4 of &xep0053;.

+
+
+ + + + + + + + + + + + + + + + + + ]]> + +