XMPP Extensions Editor wrote:

This message constitutes notice of a Last Call for comments on XEP-0136 (Message Archiving). Abstract: This document defines mechanisms and preferences for the archiving and retrieval of XMPP messages. URL: http://www.xmpp.org/extensions/xep-0136.html This Last Call begins today and shall end at the close of business on 2008-04-18. Please consider the following questions during this Last Call and send your feedback to the [email protected] discussion list: 1. Is this specification needed to fill gaps in the XMPP protocol stack or to clarify an existing protocol? 2. Does the specification solve the problem stated in the introduction and requirements? 3. Do you plan to implement this specification in your code? If not, why not? 4. Do you have any security concerns related to this specification? 5. Is the specification accurate and clearly written? Your feedback is appreciated!

In general I think the document is in a good shape. It contains some useful suggestions for implementors, which I like.

Below are my detailed comments from reviewing the document:

>2.2.4 Method Element
>Each <method/> element specifies the the user's preferences for one
>available archiving method. The <method/> element MUST be empty
>and MUST include both the 'type' and 'use' attributes. The <pref/>
>element MUST include at least three <method/> elements,
>differentiated by the value of the 'type' attribute.

It took me several passes to figure out what this text is trying to say. Maybe it would be better to say that <pref/> element MUST include <method/> element for each type defined in section 2.2.4.2.


>2.4 Setting Default Modes
[...]
>The server MAY be configured to return a <feature-not-implemented/> error in the following cases: >• If it does not allow the saving of full message stanza content, and the client set the value of the 'save' >attribute to 'message' or 'stream', and any of the user's connected resources have Automated Archiving enabled. >• If administrator policies require that at least the <body/> elements (or the full content) of every message >are logged automatically, and the client sets the value of the 'save' attribute to 'false' (or 'body').

Should the second case return something other than <feature-not-implemented/>? Examples show that changes to settings by a resource are pushed out to the resource that caused the change. Should this be optimized out?

2.6 Setting Archiving Method Preferences
Example 12. Client Sets Method Preferences
<iq type='set' id='pref4'>
<pref xmlns='urn:xmpp:tmp:archive'>
<method type='auto' use='concede'/>
<method type='local' use='forbid'/>
<method type='manual' use='prefer'/>
</pref>
</iq>

This section doesn't describe if it is Ok for the client to only modify one archiving type at a time (.e.g. if <pref> contains just one <method>) and if not, what should be the error response

3.1 OTR Negotiation

[...]

Note: A client MUST NOT propose or agree to enable OTR (i.e., disallow message logging) unless it has confirmed that its server will allow it to switch off Automated Archiving.

An example of how this can be done (or a reference to a section describing how this can be done) would be helpful here.


>The following table shows what stanza session negotiation values
> the initating party (i.e., the "user")

typo: initiating

>should send for the 'logging' field in the initial data form for
>a stanza session negotiation (note: 'may' means that the receiving
>party MAY enable message logging and 'mustnot' means that
>the receiving party MUST NOT enable logging).

While I think this sentence is correct, is it possible to simplify/split it into multiple, as it is hard to understand?


In section 4.2:

Note: The content of <message/> elements that have different thread IDs SHOULD be archived in separate collections.

Is this a requirement on the client or on the server? If this is a requirement on the server, than an example demonstrating what the server should do if it finds a <message/> with non matching tread ID.

4.6 Groupchat Messages
A client MAY archive messages that it receives from Multi-User Chat [8] rooms. The 'with' attribute MUST be the bare JID of the room. The client MUST include a 'name' attribute for each <from/> element to specify the room nickname (and, if available, bare JID) of the message sender:

Before I saw the example, I misread this as "the name attribute can contain either nickname and/or bare JID". Please clarify that any JID is recorded in the 'jid' attribute.

5.1 Toggling Auto-Archiving
If server administration policies require that every message is logged automatically (see Security Considerations) then:
• The server MUST enable automatic archiving when each stream is opened.
• Clients MUST NOT be allowed to disable automatic archiving.
• Automatic archiving MUST NOT be subject to users' Archiving Preferences.

I don't think the last requirement is entirely clear. How is this different from the previous requirement?

5.2 Not-Implemented Responses
The server MUST return a <feature-not-implemented/> error in the following cases: • If the client is trying to enable automatic archiving, but the server does not allow the saving of full message stanza content, and the user has specified the 'message' Save Mode in one of its Archiving Preferences. • If administrator policies require that every message is logged automatically, and the client is trying to disable automatic archiving. • If the client is trying to enable encryption, but the server does not support encryption or the user did not specify a public key and is not publishing any keys using XEP-0189.

The last listed case (user didn't specify a public key) is not "not-implemented". This is a distinct error condition and another error code should be used, if possible.

6.1 Retrieving a List of Collections
To request a list of collections the client sends a <list/> element. The 'start' and 'end' attributes MAY be specified to indicate a date range (the values of these attributes MUST be UTC and adhere to the DateTime format specified in XEP-0082). The 'with' attribute MAY be specified to limit the list to a single participating full JID, bare JID or domain.

So if the client specifies a domain, does it mean that the server should return all collections with any JID in that domain?


I think <changed> and <removed> are only mentioned in passing before section 9.4 (Replication), so some explanation early on (where they referenced for the first time) would be helpful.

Regards,
Alexey

Reply via email to