|
|
|
.. Copyright 2016 OpenMarket Ltd
|
|
|
|
.. Copyright 2019 The Matrix.org Foundation C.I.C.
|
|
|
|
..
|
|
|
|
.. Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
.. you may not use this file except in compliance with the License.
|
|
|
|
.. You may obtain a copy of the License at
|
|
|
|
..
|
|
|
|
.. http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
..
|
|
|
|
.. Unless required by applicable law or agreed to in writing, software
|
|
|
|
.. distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
.. See the License for the specific language governing permissions and
|
|
|
|
.. limitations under the License.
|
|
|
|
|
|
|
|
Feature Profiles
|
|
|
|
================
|
|
|
|
|
|
|
|
.. _sect:feature-profiles:
|
|
|
|
|
|
|
|
Matrix supports many different kinds of clients: from embedded IoT devices to
|
|
|
|
desktop clients. Not all clients can provide the same feature sets as other
|
|
|
|
clients e.g. due to lack of physical hardware such as not having a screen.
|
|
|
|
Clients can fall into one of several profiles and each profile contains a set
|
|
|
|
of features that the client MUST support. This section details a set of
|
|
|
|
"feature profiles". Clients are expected to implement a profile in its entirety
|
|
|
|
in order for it to be classified as that profile.
|
|
|
|
|
|
|
|
Summary
|
|
|
|
-------
|
|
|
|
|
|
|
|
===================================== ========== ========== ========== ========== ==========
|
|
|
|
Module / Profile Web Mobile Desktop CLI Embedded
|
|
|
|
===================================== ========== ========== ========== ========== ==========
|
|
|
|
`Instant Messaging`_ Required Required Required Required Optional
|
|
|
|
`Direct Messaging`_ Required Required Required Required Optional
|
|
|
|
`Mentions`_ Required Required Required Optional Optional
|
|
|
|
`Presence`_ Required Required Required Required Optional
|
|
|
|
`Push Notifications`_ Optional Required Optional Optional Optional
|
|
|
|
`Receipts`_ Required Required Required Required Optional
|
|
|
|
`Fully read markers`_ Optional Optional Optional Optional Optional
|
|
|
|
`Typing Notifications`_ Required Required Required Required Optional
|
|
|
|
`VoIP`_ Required Required Required Optional Optional
|
|
|
|
`Ignoring Users`_ Required Required Required Optional Optional
|
|
|
|
`Reporting Content`_ Optional Optional Optional Optional Optional
|
|
|
|
`Content Repository`_ Required Required Required Optional Optional
|
|
|
|
`Managing History Visibility`_ Required Required Required Required Optional
|
|
|
|
`Server Side Search`_ Optional Optional Optional Optional Optional
|
|
|
|
`Room Upgrades`_ Required Required Required Required Optional
|
|
|
|
`Server Administration`_ Optional Optional Optional Optional Optional
|
|
|
|
`Event Context`_ Optional Optional Optional Optional Optional
|
|
|
|
`Third Party Networks`_ Optional Optional Optional Optional Optional
|
|
|
|
`Send-to-Device Messaging`_ Optional Optional Optional Optional Optional
|
|
|
|
`Device Management`_ Optional Optional Optional Optional Optional
|
|
|
|
`End-to-End Encryption`_ Optional Optional Optional Optional Optional
|
|
|
|
`Guest Accounts`_ Optional Optional Optional Optional Optional
|
|
|
|
`Room Previews`_ Optional Optional Optional Optional Optional
|
|
|
|
`Client Config`_ Optional Optional Optional Optional Optional
|
|
|
|
`SSO Login`_ Optional Optional Optional Optional Optional
|
|
|
|
`OpenID`_ Optional Optional Optional Optional Optional
|
|
|
|
`Stickers`_ Optional Optional Optional Optional Optional
|
|
|
|
`Server ACLs`_ Optional Optional Optional Optional Optional
|
|
|
|
`Server Notices`_ Optional Optional Optional Optional Optional
|
|
|
|
`Moderation policies`_ Optional Optional Optional Optional Optional
|
|
|
|
===================================== ========== ========== ========== ========== ==========
|
|
|
|
|
|
|
|
*Please see each module for more details on what clients need to implement.*
|
|
|
|
|
|
|
|
.. _Instant Messaging: `module:im`_
|
|
|
|
.. _Direct Messaging: `module:dm`_
|
|
|
|
.. _Mentions: `module:mentions`_
|
|
|
|
.. _Presence: `module:presence`_
|
|
|
|
.. _Push Notifications: `module:push`_
|
|
|
|
.. _Receipts: `module:receipts`_
|
|
|
|
.. _Fully read markers: `module:read-markers`_
|
|
|
|
.. _Typing Notifications: `module:typing`_
|
|
|
|
.. _VoIP: `module:voip`_
|
|
|
|
.. _Ignoring Users: `module:ignore_users`_
|
|
|
|
.. _Reporting Content: `module:report_content`_
|
|
|
|
.. _Content Repository: `module:content`_
|
|
|
|
.. _Managing History Visibility: `module:history-visibility`_
|
|
|
|
.. _Server Side Search: `module:search`_
|
|
|
|
.. _Room Upgrades: `module:room-upgrades`_
|
|
|
|
.. _Server Administration: `module:admin`_
|
|
|
|
.. _Event Context: `module:event-context`_
|
|
|
|
.. _Third Party Networks: `module:third-party-networks`_
|
|
|
|
.. _Send-to-Device Messaging: `module:to_device`_
|
|
|
|
.. _Device Management: `module:device-management`_
|
|
|
|
.. _End-to-End Encryption: `module:e2e`_
|
|
|
|
.. _Guest Accounts: `module:guest-access`_
|
|
|
|
.. _Room Previews: `module:room-previews`_
|
|
|
|
.. _Client Config: `module:account_data`_
|
|
|
|
.. _SSO Login: `module:sso_login`_
|
|
|
|
.. _OpenID: `module:openid`_
|
|
|
|
.. _Stickers: `module:stickers`_
|
|
|
|
.. _Server ACLs: `module:server-acls`_
|
|
|
|
.. Server Notices already has a link elsewhere.
|
|
|
|
.. _Moderation Policies: `module:moderation-policies`_
|
|
|
|
|
|
|
|
Clients
|
|
|
|
-------
|
|
|
|
|
|
|
|
Stand-alone web (``Web``)
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
This is a web page which heavily uses Matrix for communication. Single-page web
|
|
|
|
apps would be classified as a stand-alone web client, as would multi-page web
|
|
|
|
apps which use Matrix on nearly every page.
|
|
|
|
|
|
|
|
Mobile (``Mobile``)
|
|
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
This is a Matrix client specifically designed for consumption on mobile devices.
|
|
|
|
This is typically a mobile app but need not be so provided the feature set can
|
|
|
|
be reached (e.g. if a mobile site could display push notifications it could be
|
|
|
|
classified as a mobile client).
|
|
|
|
|
|
|
|
Desktop (``Desktop``)
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
This is a native GUI application which can run in its own environment outside a
|
|
|
|
browser.
|
|
|
|
|
|
|
|
Command Line Interface (``CLI``)
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
This is a client which is used via a text-based terminal.
|
|
|
|
|
|
|
|
Embedded (``Embedded``)
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
This is a client which is embedded into another application or an embedded
|
|
|
|
device.
|
|
|
|
|
|
|
|
Application
|
|
|
|
+++++++++++
|
|
|
|
|
|
|
|
This is a Matrix client which is embedded in another website, e.g. using
|
|
|
|
iframes. These embedded clients are typically for a single purpose
|
|
|
|
related to the website in question, and are not intended to be fully-fledged
|
|
|
|
communication apps.
|
|
|
|
|
|
|
|
Device
|
|
|
|
++++++
|
|
|
|
|
|
|
|
This is a client which is typically running on an embedded device such as a
|
|
|
|
kettle, fridge or car. These clients tend to perform a few operations and run
|
|
|
|
in a resource constrained environment. Like embedded applications, they are
|
|
|
|
not intended to be fully-fledged communication systems.
|