2017-01-29 09:40:56 -05:00
<?xml version='1.0' encoding='UTF-8'?>
< !DOCTYPE xep SYSTEM 'xep.dtd' [
<!ENTITY % ents SYSTEM 'xep.ent'>
%ents;
2018-01-10 13:51:07 -05:00
<!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> ">
2017-01-29 09:40:56 -05:00
<!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> ">
2018-01-10 13:51:07 -05:00
<!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> ">
2017-01-29 09:40:56 -05:00
]>
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep >
<header >
2017-11-01 23:45:08 -04:00
<title > XMPP Compliance Suites 2018</title>
2017-01-29 09:40:56 -05:00
<abstract >
2017-11-01 23:45:08 -04:00
This document defines XMPP protocol compliance levels.
2017-01-29 09:40:56 -05:00
</abstract>
&LEGALNOTICE;
2017-02-08 18:18:23 -05:00
<number > 0387</number>
2018-01-25 02:54:39 -05:00
<status > Draft</status>
2017-12-07 10:28:47 -05:00
<lastcall > 2017-12-21</lastcall>
2017-11-01 12:20:32 -04:00
<lastcall > 2017-11-15</lastcall>
2017-01-29 09:40:56 -05:00
<type > Standards Track</type>
<sig > Standards</sig>
<dependencies >
<spec > RFC 6120</spec>
<spec > RFC 6121</spec>
<spec > RFC 7395</spec>
<spec > RFC 7590</spec>
2017-11-14 16:55:00 -05:00
<spec > RFC 7622</spec>
2017-01-29 09:40:56 -05:00
<spec > XEP-0030</spec>
<spec > XEP-0045</spec>
2018-01-10 13:51:07 -05:00
<spec > XEP-0048</spec>
<spec > XEP-0049</spec>
2017-01-29 09:40:56 -05:00
<spec > XEP-0084</spec>
2017-02-08 20:53:20 -05:00
<spec > XEP-0085</spec>
2017-01-29 09:40:56 -05:00
<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>
2018-01-10 13:51:07 -05:00
<spec > XEP-0223</spec>
2017-02-08 20:53:20 -05:00
<spec > XEP-0249</spec>
2017-01-29 09:40:56 -05:00
<spec > XEP-0280</spec>
<spec > XEP-0313</spec>
<spec > XEP-0352</spec>
2017-02-10 10:20:04 -05:00
<spec > XEP-0368</spec>
2017-01-29 09:40:56 -05:00
</dependencies>
<supersedes >
<spec > XEP-0375</spec>
</supersedes>
<supersededby />
2017-11-01 23:45:08 -04:00
<shortname > CS2018</shortname>
2017-01-29 09:40:56 -05:00
&sam;
2018-01-23 09:08:01 -05:00
&jonaswielicki;
2018-01-25 02:54:39 -05:00
<revision >
<version > 1.0.0</version>
<date > 2018-01-25</date>
<initials > XEP Editor (jwi)</initials>
<remark > <p > Move to Draft as per Council vote on 2018-01-24.</p> </remark>
</revision>
2018-01-25 02:53:38 -05:00
<revision >
<version > 0.4</version>
<date > 2018-01-25</date>
<initials > kis</initials>
<remark > <p > Address recent feedback</p> </remark>
</revision>
2018-01-23 09:08:01 -05:00
<revision >
<version > 0.3.3</version>
<date > 2018-01-23</date>
<initials > XEP Editor (jwi)</initials>
<remark > <p > Add Jonas as author.</p> <p > Move back to experimental.</p> </remark>
</revision>
2018-01-23 09:07:54 -05:00
<revision >
<version > 0.3.2</version>
<date > 2018-01-18</date>
<initials > XEP Editor (ssw, revision added by jwi)</initials>
<remark > <p > Rejected by council</p> </remark>
</revision>
2017-11-14 16:55:00 -05:00
<revision >
<version > 0.3.1</version>
<date > 2017-11-04</date>
<initials > ssw</initials>
<remark > <p > Update RFC 6122 references to RFC 7622</p> </remark>
</revision>
2017-11-01 23:45:08 -04:00
<revision >
<version > 0.3.0</version>
<date > 2017-11-01</date>
<initials > ssw</initials>
<remark > <p > Bump year to 2018</p> </remark>
</revision>
2017-02-10 10:42:19 -05:00
<revision >
<version > 0.2.0</version>
<date > 2017-02-10</date>
<initials > ssw</initials>
<remark >
<ul >
<li > Add XEP-0085: Chat State Notifications</li>
<li > Add XEP-0249: Direct MUC Invitations</li>
<li > Add XEP-0368: SRV records for XMPP over TLS</li>
<li > Typo fixes (thanks to Georg Lucas)</li>
</ul>
</remark>
</revision>
2017-01-29 09:40:56 -05:00
<revision >
2017-02-08 18:31:18 -05:00
<version > 0.1.0</version>
2017-02-08 18:18:23 -05:00
<date > 2017-02-08</date>
2017-01-29 09:40:56 -05:00
<initials > ssw</initials>
2017-02-08 18:31:18 -05:00
<remark >
<p > First draft updated from XEP-0375 accepted by the council.</p>
</remark>
2017-01-29 09:40:56 -05:00
</revision>
</header>
<section1 topic= 'Introduction' anchor= 'intro' >
<p >
The &XSF; defines protocol suites for the purpose of compliance testing
and software certification.
2017-11-01 23:45:08 -04:00
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.
2017-01-29 09:40:56 -05:00
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 Levels' anchor= 'levels' >
<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>
2017-11-14 16:55:00 -05:00
<td > &rfc6120; , &rfc7622; </td>
2017-01-29 09:40:56 -05:00
</tr>
<tr >
<td > <strong > TLS</strong> </td>
<td align= 'center' > ✓ </td>
<td align= 'center' > ✓ </td>
<td align= 'center' > ✓ </td>
<td align= 'center' > ✓ </td>
2017-02-10 10:36:31 -05:00
<td > &rfc7590; , &xep0368; <note > Server support means having the ability to accept direct TLS connections.</note> </td>
2017-01-29 09:40:56 -05:00
</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>
2017-02-09 10:41:05 -05:00
<td align= 'center' > ✓ </td>
2017-01-29 09:40:56 -05:00
<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>
2018-01-10 13:51:07 -05:00
<td align= 'center' > ✓ &pubsubjid; </td>
2017-01-29 09:40:56 -05:00
<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 suite 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 suite 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>
2018-01-10 13:51:07 -05:00
<td align= 'center' > ✓ &nocli; &avatar; </td>
2017-01-29 09:40:56 -05:00
<td align= 'center' > N/A</td>
2018-01-10 13:51:07 -05:00
<td align= 'center' > ✓ &nocli; &avatar; </td>
<td > &xep0084; &xep0153; </td>
</tr>
<tr >
<td > <strong > vcard-temp</strong> </td>
<td align= 'center' > ✓ </td>
<td align= 'center' > ✓ &nocli; </td>
<td align= 'center' > ✓ </td>
2017-01-29 09:40:56 -05:00
<td align= 'center' > ✓ &nocli; </td>
2018-01-10 13:51:07 -05:00
<td > &xep0054; </td>
2017-01-29 09:40:56 -05:00
</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>
2017-02-08 20:53:20 -05:00
<td > &xep0045; <note > Implementations should take note that future versions of these compliance suites may rely on &xep0369; instead.</note> , &xep0249; </td>
2017-01-29 09:40:56 -05:00
</tr>
<tr >
<td > <strong > Bookmarks</strong> </td>
<td align= 'center' > ✕ </td>
<td align= 'center' > ✕ </td>
<td align= 'center' > ✓ &component; </td>
<td align= 'center' > ✓ </td>
<td > &xep0048; </td>
</tr>
2018-01-10 13:51:07 -05:00
<tr >
<td > <strong > Persistent Storage of Private Data via PubSub</strong> </td>
<td align= 'center' > ✕ </td>
2018-01-12 07:35:34 -05:00
<td align= 'center' > ✕ </td>
2018-01-10 13:51:07 -05:00
<td align= 'center' > ✓ &component; </td>
2018-01-12 07:35:34 -05:00
<td align= 'center' > ✓ </td>
2018-01-10 13:51:07 -05:00
<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>
2017-01-29 09:40:56 -05:00
<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 > 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>
2017-02-08 20:53:20 -05:00
<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>
2017-01-29 09:40:56 -05:00
</table>
</section2>
<section2 topic= 'Mobile Compliance Suite' anchor= 'mobile' >
<p >
To be considered XMPP mobile compliant, all features from the core
compliance suite 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 Indiciation</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' >
2017-02-08 18:18:23 -05:00
<p > This document requires no interaction with the ®ISTRAR; .</p>
2017-01-29 09:40:56 -05:00
</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 Georg Lukas for their suggestions.
</p>
</section1>
</xep>