The following is a summary of potentially material changes made between draft-ietf-xmpp-im-21 and draft-ietf-xmpp-im-22 (minor editorial fixes are not mentioned in this summary). 2. Syntax of XML Stanzas For consistency, changed "stanzas in the ... namespaces" to "stanzas qualified by the ... namespaces"; this change was made in several other sections as well. 2.1.2 Child Elements As in draft-ietf-xmpp-core-23, changed "CDATA" to "XML character data" here and throughout. 2.1.2.3 Thread Specified that the XML character data contained in the element is not intended to be human-readable. 2.2.1 Types of Presence Removed the word "notification" from the definition of unsubscribe, since presence notifications are restricted to "type='unavailable'" and no 'type' only. 2.2.2.1 Show Specified that the XML character data contained in the element is not intended to be human-readable. 2.2.2.3 Priority Specified that the XML character data contained in the element is not intended to be human-readable. 3. Session Establishment Corrected XML error in first example (bind and session elements were not closed). 4.2 Specifying a Message Type Added 'xml:lang' attribute to examples here and also in presence examples. 5. Exchanging Presence Information Corrected definition of "presence notification" since there is no such thing as type='available' (availability is implicit in the semantics of the presence stanza if no type is included). Also clarified that "directed presence" is a presence notification stanza with a 'to' address. 7.4 Adding a Roster Item Added the following clarifying note after the second example. As required by the semantics of the IQ stanza kind as defined in [XMPP-CORE], each resource that received the roster push MUST reply with an IQ stanza of type "result" (or "error"). 8.2 User Subscribes to Contact In step 2, specified exactly which resource receives the IQ result by changing "MUST reply with an IQ result related to the roster set" to "MUST reply to the sending resource with an IQ result indicating the success of the roster set"; this change was made in several other sections of the text. In step 6, corrected "user" to "contact" in several instances (copy and paste error). Also changed "configured preferences" to "the contact's configured preferences" so that it is clear that these preferences are determined by the human user and not "pre-configured" in some sense or set by the server; this change (addition of either "the user's" or "the contact's" was made in several other sections of the text. 8.3 Creating a Mutual Subscription As previously discussed, removed the very last sentence of this section ("The user's server MUST now send the user's current presence information to the contact.") since it merely repeats information from step 4 but lacks a necessary proviso regarding the enforcement of privacy lists. 8.5.1 Case #1: Cancelling When Subscription is Not Mutual In step 3, changed "(2) MUST deliver the "unsubscribed" state change notification to the user;" to "(2) MUST deliver the "unsubscribed" state change notification to all of the user's available resources;". This was done in order to clarify that such stanzas are delivered to all available resources. This change was also made in Sections 8.5.2 and 8.6. 8.6 Removing a Roster Item and Cancelling All Subscriptions Added 'id' attributes to examples. 10. Blocking Communication Made terminology consistent by changing "privacy rules" to "privacy lists" in several places within this and other sections. 10.1 Syntax and Semantics Changed "JIDs are matched in the following order:" to "JIDs SHOULD be matched in the following order:" since the lack of a conformance term was unnecessarily informal and potentially confusing. Per feedback from one WG member, specified that a subscription type of "none" includes entities that are totally unknown to the user and therefore not in the user's roster at all. Corrected several instances of "accept" to "allow" since the former is not an allowable value of the 'action' attribute. 10.6 and 10.8 Corrected juliet@example.com to romeo@example.net in the IQ results. In the narrative text associated with these and other examples, changed "user" to "entity" since not all blocked addresses will be associated with a human user. 11.1 Inbound Stanzas Changed "the hostname of the server itself" to "a hostname of the server itself", since virtual hosting is allowed and a server may be hosting more than one domain. This change was made in Section 11.2 as well. 11.2 Outbound Stanzas In step 2, changed "If the address record resolution fails" to "If the "xmpp-server" address record resolution fails". In step 3, changed "If the SRV lookup fails" to "If both SRV address record resolutions fail". 12.2 Clients Corrected reference to draft-ietf-xmpp-e2e-07. Appendix B. XML Schemas Added imports and error groups, fixed several errors.