mirror of https://github.com/moparisthebest/xeps
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
445 lines
17 KiB
445 lines
17 KiB
<?xml version='1.0' encoding='UTF-8'?> |
|
<!DOCTYPE xep SYSTEM 'xep.dtd' [ |
|
<!ENTITY % ents SYSTEM 'xep.ent'> |
|
%ents; |
|
<!ENTITY component "<note>Support can be enabled via an external component or an internal server module/plugin. If claiming compliance using such an addition, the necessary components/modules/plugins MUST be detailed.</note>"> |
|
<!ENTITY usecases "<note>Support for the Entity Use Cases and Occupant Use Cases is REQUIRED; support for the remaining use cases is RECOMMENDED.</note>"> |
|
<!ENTITY onlyone "<note>Only one of the recommended providers must be implemented for compliance.</note>"> |
|
<!ENTITY nocli "<note>Not required for command line or terminal based interfaces.</note>"> |
|
<!ENTITY avatar "<note>While 'User Avatars' is more modern, 'vCard-Based Avatars' is more widely deployed. Although it is suggested that to maximise interoperability with existing software a client fully supports both it is sufficient to claim compliance with this suite if the support for 'vCard-Based Avatars' is read-only.</note>"> |
|
<!ENTITY pubsubjid "<note>While 'Personal Eventing Protocol' does not require all the features of 'Publish-Subscribe' to be available on the users' JIDs, and nor does this suite, it is desirable for this to be the case and it is expected that this will a requirement of future Compliance Suites.</note>"> |
|
]> |
|
<?xml-stylesheet type='text/xsl' href='xep.xsl'?> |
|
<xep> |
|
<header> |
|
<title>XMPP Compliance Suites 2019</title> |
|
<abstract> |
|
This document defines XMPP protocol compliance levels. |
|
</abstract> |
|
&LEGALNOTICE; |
|
<number>0412</number> |
|
<status>Obsolete</status> |
|
<lastcall>2019-02-29</lastcall> |
|
<type>Standards Track</type> |
|
<sig>Standards</sig> |
|
<dependencies> |
|
<spec>RFC 6120</spec> |
|
<spec>RFC 6121</spec> |
|
<spec>RFC 7395</spec> |
|
<spec>RFC 7590</spec> |
|
<spec>RFC 7622</spec> |
|
<spec>XEP-0030</spec> |
|
<spec>XEP-0045</spec> |
|
<spec>XEP-0048</spec> |
|
<spec>XEP-0049</spec> |
|
<spec>XEP-0084</spec> |
|
<spec>XEP-0085</spec> |
|
<spec>XEP-0114</spec> |
|
<spec>XEP-0115</spec> |
|
<spec>XEP-0124</spec> |
|
<spec>XEP-0163</spec> |
|
<spec>XEP-0191</spec> |
|
<spec>XEP-0198</spec> |
|
<spec>XEP-0206</spec> |
|
<spec>XEP-0223</spec> |
|
<spec>XEP-0249</spec> |
|
<spec>XEP-0280</spec> |
|
<spec>XEP-0313</spec> |
|
<spec>XEP-0352</spec> |
|
<spec>XEP-0368</spec> |
|
</dependencies> |
|
<supersedes> |
|
<spec>XEP-0387</spec> |
|
</supersedes> |
|
<supersededby> |
|
<spec>XEP-0423</spec> |
|
</supersededby> |
|
<shortname>CS2019</shortname> |
|
<author> |
|
<firstname>Georg</firstname> |
|
<surname>Lukas</surname> |
|
<email>georg@op-co.de</email> |
|
<jid>georg@yax.im</jid> |
|
</author> |
|
<revision> |
|
<version>1.0.1</version> |
|
<date>2020-01-28</date> |
|
<initials>XEP Editor (jsc)</initials> |
|
<remark>Deprecate and Obsolete per Council vote on 2020-01-22</remark> |
|
</revision> |
|
<revision> |
|
<version>1.0.0</version> |
|
<date>2019-04-04</date> |
|
<initials>XEP Editor</initials> |
|
<remark>Accepted as Draft per Council vote on 2019-03-27</remark> |
|
</revision> |
|
<revision> |
|
<version>0.5.0</version> |
|
<date>2019-03-25</date> |
|
<initials>gl</initials> |
|
<remark><ul><li>Taken over ownership.</li><li>Improved structure of category and level names.</li><li>Added XEP-0313 and XEP-0410 to 'Advanced Group Chat'</li></ul></remark> |
|
</revision> |
|
<revision> |
|
<version>0.4.0</version> |
|
<date>2019-01-13</date> |
|
<initials>jsc</initials> |
|
<remark><ul><li>Fix mess-up with TLS: TLS itself is of course required, it is just Direct TLS which is supposed to be advanced.</li><li>Add XEP-0308 (Last Message Correction) for Advanced Client</li><li>Minor typographical fixes</li></ul></remark> |
|
</revision> |
|
<revision> |
|
<version>0.2.0</version> |
|
<date>2019-01-13</date> |
|
<initials>jsc</initials> |
|
<remark><ul><li>Remove XEP-0184 from server support (doesn't make sense)</li><li>Do not require Avatars for Core clients</li><li>Add a note for RFC 7622 and do not require it</li><li>Do not require XEP-0368 in core servers</li></ul></remark> |
|
</revision> |
|
<revision> |
|
<version>0.1.0</version> |
|
<date>2018-12-16</date> |
|
<initials>XEP Editor (jsc)</initials> |
|
<remark>Accepted by vote of Council on 2018-12-19.</remark> |
|
</revision> |
|
<revision> |
|
<version>0.0.1</version> |
|
<date>2018-12-08</date> |
|
<initials>jsc</initials> |
|
<remark> |
|
<p>First draft based on XEP-0378. Non-editorial Changes:</p> |
|
<ul> |
|
<li>Prefer XEP-0084 for Avatars, use XEP-0398 for compat.</li> |
|
<li>Add XEP-0184</li> |
|
</ul> |
|
</remark> |
|
</revision> |
|
</header> |
|
<section1 topic='Introduction' anchor='intro'> |
|
<p> |
|
The &XSF; defines protocol suites for the purpose of compliance testing |
|
and software certification. |
|
This document specifies compliance levels for XMPP clients and servers; it |
|
is hoped that this document will advance the state of the art, and provide |
|
guidance and eventual certification to XMPP client and server authors. |
|
</p> |
|
<p> |
|
This document defines <strong>Categories</strong> based on |
|
typical use cases (Core, Web, IM, Mobile) and <strong>Levels</strong> |
|
(Core, Advanced) based on functionality in the respective category. |
|
</p> |
|
<p> |
|
Unless explicitly noted, support for the listed specifications is REQUIRED |
|
for compliance purposes. |
|
A feature is considered supported if all comma separated feature providers |
|
listed in the "Providers" column are implemented (unless otherwise noted). |
|
</p> |
|
</section1> |
|
<section1 topic='Compliance Categories' anchor='categories'> |
|
<section2 topic='Core Compliance Suite' anchor='core'> |
|
<table caption='XMPP Core Compliance Levels'> |
|
<tr> |
|
<th>Feature</th> |
|
<th>Core Server</th> |
|
<th>Core Client</th> |
|
<th>Advanced Server</th> |
|
<th>Advanced Client</th> |
|
<th>Providers</th> |
|
</tr> |
|
<tr> |
|
<td><strong>Core features</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&rfc6120; <note>&rfc7622; is not listed due to the unclear interoperability impact of using PRECIS and Stringprep in the same ecosystem.</note></td> |
|
</tr> |
|
<tr> |
|
<td><strong>TLS</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&rfc7590;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Direct TLS</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓<note>Server support of XEP-0368 means having the ability to accept direct TLS connections.</note></td> |
|
<td align='center'>✓</td> |
|
<td>&xep0368;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Feature discovery</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0030;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Feature broadcasts</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0115;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Server Extensibility</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>N/A</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>N/A</td> |
|
<td>&xep0114;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Event publishing</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓&pubsubjid;</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0163;</td> |
|
</tr> |
|
</table> |
|
</section2> |
|
<section2 topic='Web Compliance Suite' anchor='web'> |
|
<p> |
|
To be considered XMPP web compliant, all features from the core |
|
compliance category must be met, as well as all features in this suite. |
|
</p> |
|
<table caption='XMPP Web Compliance Levels'> |
|
<tr> |
|
<th>Feature</th> |
|
<th>Core Server</th> |
|
<th>Core Client</th> |
|
<th>Advanced Server</th> |
|
<th>Advanced Client</th> |
|
<th>Providers</th> |
|
</tr> |
|
<tr> |
|
<td><strong>Web Connection Mechanisms</strong></td> |
|
<td align='center'>✓&component;</td> |
|
<td align='center'>✓&onlyone;</td> |
|
<td align='center'>✓&component;</td> |
|
<td align='center'>✓&onlyone;</td> |
|
<td>&rfc7395;, &xep0206; (See also: &xep0124;)</td> |
|
</tr> |
|
</table> |
|
</section2> |
|
<section2 topic='IM Compliance Suite' anchor='im'> |
|
<p> |
|
To be considered XMPP IM compliant, all features from the core |
|
compliance category must be met, as well as all features in this suite. |
|
</p> |
|
<table caption='XMPP IM Compliance Levels'> |
|
<tr> |
|
<th>Feature</th> |
|
<th>Core Server</th> |
|
<th>Core Client</th> |
|
<th>Advanced Server</th> |
|
<th>Advanced Client</th> |
|
<th>Providers</th> |
|
</tr> |
|
<tr> |
|
<td><strong>Core features</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&rfc6121;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>User Avatars</strong></td> |
|
<td align='center'>N/A</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>N/A</td> |
|
<td align='center'>✓&nocli;</td> |
|
<td>&xep0084;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>User Avatar Compatibility</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓&nocli;</td> |
|
<td>&xep0398;, &xep0153;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>vcard-temp</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0054;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Outbound Message Synchronization</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0280;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>User Blocking</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0191;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Group Chat</strong></td> |
|
<td align='center'>✓&component;</td> |
|
<td align='center'>✓&usecases;</td> |
|
<td align='center'>✓&component;</td> |
|
<td align='center'>✓&usecases;</td> |
|
<td>&xep0045;<note>Implementations should take note that future versions of these compliance suites may rely on &xep0369; instead.</note>, &xep0249;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Advanced Group Chat</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓&component;</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0048;, &xep0313;<note>Support for requesting history from a MUC archive as opposed to from the user's account.</note>, &xep0410;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Persistent Storage of Private Data via PubSub</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓&component;</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0223;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Private XML Storage</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓&component;</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0049;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Session Resumption</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0198;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Stanza Acknowledgements</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0198;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Message Acknowledgements</strong></td> |
|
<td align='center'>N/A</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>N/A</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0184;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>History Storage / Retrieval</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0313;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Chat States</strong></td> |
|
<td align='center'>N/A</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>N/A</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0085;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Message Correction</strong></td> |
|
<td align='center'>N/A</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>N/A</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0308;</td> |
|
</tr> |
|
</table> |
|
</section2> |
|
<section2 topic='Mobile Compliance Suite' anchor='mobile'> |
|
<p> |
|
To be considered XMPP mobile compliant, all features from the core |
|
compliance category must be met, as well as all features in this suite. |
|
</p> |
|
<table caption='XMPP Mobile Compliance Levels'> |
|
<tr> |
|
<th>Feature</th> |
|
<th>Core Server</th> |
|
<th>Core Client</th> |
|
<th>Advanced Server</th> |
|
<th>Advanced Client</th> |
|
<th>Providers</th> |
|
</tr> |
|
<tr> |
|
<td><strong>Session Resumption</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0198;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Stanza Acknowledgements</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0198;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Client State Indication</strong></td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0352;</td> |
|
</tr> |
|
<tr> |
|
<td><strong>Third Party Push Notifications</strong></td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✕</td> |
|
<td align='center'>✓&component;</td> |
|
<td align='center'>✓</td> |
|
<td>&xep0357;</td> |
|
</tr> |
|
</table> |
|
</section2> |
|
</section1> |
|
<section1 topic='Implementation Notes' anchor='impl'> |
|
<p> |
|
Some of the protocol specifications referenced herein have their own |
|
dependencies; developers need to consult the relevant specifications for |
|
further information. |
|
</p> |
|
</section1> |
|
<section1 topic='Security Considerations' anchor='security'> |
|
<p> |
|
This document introduces no additional security considerations above and |
|
beyond those defined in the documents on which it depends. |
|
</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'> |
|
<p>This document requires no interaction with the ®ISTRAR;.</p> |
|
</section1> |
|
<section1 topic='Acknowledgements' anchor='ack'> |
|
<p> |
|
The author would like to thank Guus der Kinderen, Dele Olajide, Marc |
|
Laporte, Dave Cridland, Daniel Gultsch, Florian Schmaus, Tobias Markmann, |
|
and Jonas Schäfer for their suggestions. |
|
</p> |
|
</section1> |
|
</xep>
|
|
|