First draft based on XEP-0423.
There is a growing number of XMPP Extension Protocols (XEPs) that provide different building blocks for XMPP-based applications. XMPP software developers are confronted with the challenge of finding the right combination of XEPs for a given application profile. Users need a way to compare applications without resorting to comparing for individual XEP numbers.
This document defines XMPP application Categories based on typical use cases (Core, Web, IM, Mobile) and Levels (Core, Advanced) based on functionality in the respective category. For each combination of those, the required XEPs are referenced. As the protocol landscape changes over time, this document is updated roughly once a year.
For developers, this document provides guidance on which specifications they need to consider when implementing an application of a certain kind. By completing a compliance test or performing a self-assessment, they can advertise their implementation as compliant with a given Category and Level.
For users, this provides an easy way to compare implementations based on their respective advertised compliance levels and year.
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).
The following changes were made to the Compliance Suites since XMPP Compliance Suites 2020 (XEP-0423)
The following changes were made to the Compliance Suites since XMPP Compliance Suites 2019 (XEP-0412)
Feature | Core Server | Core Client | Advanced Server | Advanced Client | Providers |
---|---|---|---|---|---|
Core features | ✓ | ✓ | ✓ | ✓ | RFC 6120 |
TLS | ✓ | ✓ | ✓ | ✓ | RFC 7590 |
Direct TLS | ✕ | ✕ | ✓ |
✓ | SRV records for XMPP over TLS (XEP-0368) |
Feature discovery | ✓ | ✓ | ✓ | ✓ | Service Discovery (XEP-0030) |
Feature broadcasts | ✕ | ✓ | ✓ | ✓ | Entity Capabilities (XEP-0115) |
Server Extensibility | ✓ | N/A | ✓ | N/A | Jabber Component Protocol (XEP-0114) |
Event publishing | ✕ | ✕ | ✓ |
✓ | Personal Eventing Protocol (XEP-0163) |
To be considered XMPP web compliant, all features from the core compliance category must be met, as well as all features in this suite.
Feature | Core Server | Core Client | Advanced Server | Advanced Client | Providers |
---|---|---|---|---|---|
Web Connection Mechanisms | ✓ |
✓ |
✓ |
✓ |
RFC 7395 |
Connection Mechanism Discovery | ✕ | ✕ | N/A | ✓ | Discovering Alternative XMPP Connection Methods (XEP-0156) |
To be considered XMPP IM compliant, all features from the core compliance category must be met, as well as all features in this suite.
Feature | Core Server | Core Client | Advanced Server | Advanced Client | Providers |
---|---|---|---|---|---|
Core features | ✓ | ✓ | ✓ | ✓ | RFC 6121 |
The /me Command | N/A | ✓ | N/A | ✓ | The /me Command (XEP-0245) |
User Avatars | N/A | ✕ | N/A | ✓ |
User Avatar (XEP-0084) |
User Avatar Compatibility | ✕ | ✕ | ✓ | ✓ |
User Avatar to vCard-Based Avatars Conversion (XEP-0398) |
vcard-temp | ✓ | ✓ | ✓ | ✓ | vcard-temp (XEP-0054) |
Outbound Message Synchronization | ✓ | ✓ | ✓ | ✓ | Message Carbons (XEP-0280) |
User Blocking | ✕ | ✕ | ✓ | ✓ | Blocking Command (XEP-0191) |
Group Chat | ✓ |
✓ |
✓ |
✓ |
Multi-User Chat (XEP-0045) |
Advanced Group Chat | ✕ | ✕ | ✓ |
✓ | Bookmark Storage (XEP-0048) |
Persistent Storage of Private Data via PubSub | ✕ | ✕ | ✓ |
✓ | Best Practices for Persistent Storage of Private Data via Publish-Subscribe (XEP-0223) |
Private XML Storage | ✕ | ✕ | ✓ |
✓ | Private XML Storage (XEP-0049) |
Stream Management | ✕ | ✕ | ✓ | ✓ | Stream Management (XEP-0198) |
Message Acknowledgements | N/A | ✕ | N/A | ✓ | Message Delivery Receipts (XEP-0184) |
History Storage / Retrieval | ✕ | ✕ | ✓ | ✓ | Message Archive Management (XEP-0313) |
Chat States | N/A | ✕ | N/A | ✓ | Chat State Notifications (XEP-0085) |
Message Correction | N/A | ✕ | N/A | ✓ | Last Message Correction (XEP-0308) |
File Upload | ✓ |
✓ | ✓ |
✓ | HTTP File Upload (XEP-0363) |
Direct File Transfer | N/A | ✕ | N/A | ✓ | Jingle File Transfer (XEP-0234) |
Further specifications of note, which are not required for compliance:
To be considered XMPP mobile compliant, all features from the core compliance category must be met, as well as all features in this suite.
Feature | Core Server | Core Client | Advanced Server | Advanced Client | Providers |
---|---|---|---|---|---|
Stream Management | ✓ | ✓ | ✓ | ✓ | Stream Management (XEP-0198) |
Client State Indication | ✓ | ✓ | ✓ | ✓ | Client State Indication (XEP-0352) |
Third Party Push Notifications | ✕ | ✕ | ✓ |
✓ |
Push Notifications (XEP-0357) |
Further specifications of note, which are not required for compliance:
To be considered XMPP A/V calling compliant, all features from the core compliance category must be met, as well as all features in this suite.
Feature | Core Server | Core Client | Advanced Server | Advanced Client | Providers |
---|---|---|---|---|---|
Call Setup | N/A | ✓ | N/A | ✓ | Jingle RTP Sessions (XEP-0167) |
Transport | N/A | ✓ | N/A | ✓ | Jingle ICE-UDP Transport Method (XEP-0176) |
Encryption | N/A | ✓ | N/A | ✓ | Use of DTLS-SRTP in Jingle Sessions (XEP-0320) |
STUN/TURN server discovery | ✓ | ✓ | ✓ | ✓ | External Service Discovery (XEP-0215) |
Quality and Performance improvements | N/A | ✕ | N/A | ✓ | Jingle RTP Feedback Negotiation (XEP-0293) |
This section outlines the protocol specifications that are relevant for developers, but are not ready yet to be required for Compliance. Developers are encouraged to implement those and to share their experience and feedback.
Some of the protocol specifications referenced herein have their own dependencies; developers need to consult the relevant specifications for further information.
This document introduces no additional security considerations above and beyond those defined in the documents on which it depends.
This document requires no interaction with the Internet Assigned Numbers Authority (IANA)
This document requires no interaction with the XMPP Registrar
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.