<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.33 (Ruby 3.1.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ralston-mimi-matrix-message-format-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="Matrix Message Format">Matrix Message Format</title>
    <seriesInfo name="Internet-Draft" value="draft-ralston-mimi-matrix-message-format-01"/>
    <author fullname="Travis Ralston">
      <organization>The Matrix.org Foundation C.I.C.</organization>
      <address>
        <email>travisr@matrix.org</email>
      </address>
    </author>
    <author fullname="Matthew Hodgson">
      <organization>The Matrix.org Foundation C.I.C.</organization>
      <address>
        <email>matthew@matrix.org</email>
      </address>
    </author>
    <date year="2023" month="May" day="09"/>
    <area>Applications and Real-Time</area>
    <workgroup>More Instant Messaging Interoperability</workgroup>
    <keyword>matrix</keyword>
    <keyword>mimi</keyword>
    <abstract>
      <?line 84?>

<t>This document describes the Matrix event format for use over a delivery protocol like Linearized Matrix.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://turt2live.github.io/ietf-mimi-matrix-message-format/draft-ralston-mimi-matrix-message-format.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ralston-mimi-matrix-message-format/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        More Instant Messaging Interoperability Working Group mailing list (<eref target="mailto:mimi@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mimi/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mimi/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/turt2live/ietf-mimi-matrix-message-format"/>.</t>
    </note>
  </front>
  <middle>
    <?line 89?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Interoperable instant messaging requires a common format for all participants to contribute to the conversation or state of the room.
Matrix is an open protocol for interoperable, decentralized, secure communication, and includes a "linearized" API surface to abstract
away the complexities of DAGs, described by <xref target="I-D.ralston-mimi-linearized-matrix"/>. Matrix defines a rich taxonomy of arbitrarily
extensible payloads of information called "events" to carry information between machines and users, which may in turn
be layered over end-to-end encryption. Matrix events have been designed for interoperability from the outset between
heterogenous messaging platforms, and define a real-world highest-common denominator set of message types,
including:</t>
      <ul spacing="normal">
        <li>Instant messages (plain &amp; rich text)</li>
        <li>End-to-end encrypted payloads</li>
        <li>File transfer</li>
        <li>Reactions (emoji, textual, image-based)</li>
        <li>Edits</li>
        <li>Replies</li>
        <li>Deletions</li>
        <li>Stickers</li>
        <li>Custom emoji</li>
        <li>Voice messages</li>
        <li>Polls</li>
        <li>Static location share</li>
        <li>Live location share (ephemeral)</li>
        <li>Live location share (persistent)</li>
        <li>Spoiler text</li>
        <li>Threaded messages</li>
        <li>Typing notifications</li>
        <li>Read receipts</li>
        <li>Read-up-to markers</li>
        <li>Presence</li>
        <li>1:1 VoIP signalling</li>
        <li>Multiparty VoIP signalling</li>
      </ul>
      <t>Matrix events are extensible, and proposals exist for additional event formats ranging from attaching 3D world geometry
to conversations (for openly standardized metaverse communication) through to transferring healthcare data (FHIR).</t>
    </section>
    <section anchor="matrix-events">
      <name>Matrix Events</name>
      <t><strong>TODO</strong>: Bring spec references into the I-D, like we did with Linearized Matrix.</t>
      <t>Events are JSON objects which by default follow the formal schemas defined in the Matrix Client Server API <xref target="MxEvents"/>,
also available as JSON Schema definitions <xref target="MxEventsSchema"/>.  Events are extensible and may contain additional off-schema
prefixed fields, or use prefixed event types not yet defined in the spec.  Events then get augumented
and signed by the server before being forwarded to other servers/users in the room.</t>
      <t>These JSON objects have a few key fields:</t>
      <ul spacing="normal">
        <li>
          <tt>type</tt>: A string the client can use to determine how to render the event. This is reverse-DNS namespaced, with <tt>m.</tt> as
a privileged prefix for event types formally adopted and defined within the Matrix specification.</li>
        <li>
          <tt>sender</tt>: The user ID (<tt>@alice:example.org</tt>) which sent the event.</li>
        <li>
          <tt>room_id</tt>: The room ID (<tt>!room:example.org</tt>) for where the event was sent.</li>
        <li>
          <tt>content</tt>: Type-specific JSON object.</li>
        <li>Other fields (TODO: define these in detail when more relevant to the doc).</li>
      </ul>
      <t>Under MSC1767 <xref target="MSC1767"/> (a spec change proposal in the existing Matrix open standard ecosystem), callers can combine
together multiple event types to provide fallback representations of an event, to provide backwards compatibility when
rendering unknown event types.</t>
      <t>An example of a simple text message would be:</t>
      <sourcecode type="json"><![CDATA[
{
    "type": "m.message",
    "content": {
        "m.text": "i am a fish",
        "m.html": "i am a <strong>fish</strong>"
    }
}
]]></sourcecode>
      <t>This can be made more complex if the sender chooses to mix in other mimetypes:</t>
      <sourcecode type="json"><![CDATA[
{
  "type": "m.message",
  "content": {
    "m.message": [
        { "mimetype": "text/html", "body": "i am a <strong>fish</strong>" },
        { "mimetype": "text/plain", "body": "i am a fish" },
        {
          "mimetype": "application/vnd.exampleorg.message+html",
          "body": "<content>i am a <strong>fish</strong></content>"
        }
    ]
  }
}
]]></sourcecode>
      <t>To demonstrate extensibility, a file upload <xref target="MSC3551"/> might look like:</t>
      <sourcecode type="json"><![CDATA[
{
  "type": "m.file",
  "content": {
    "m.text": "Upload: foo.pdf https://<download url> (12 KB)",
    "m.file": {
      "url": "mxc://example.org/abcd1234",
      "name": "foo.pdf",
      "mimetype": "application/pdf",
      "size": 12345
    }
  }
}
]]></sourcecode>
      <t>In this example, clients which do not understand <tt>m.file</tt> but do understand <tt>m.text</tt> (or <tt>m.message</tt>) would show just the plain text instead of
a download button. The alternative to falling back would be to hide the unrenderable event, causing the conversation history to be fragmented:
this has clear negative consequences on user experience. Instead, by defining a fallback mechanism the user is still able to participate
in the conversation, though might need to ask for more information. It is expected that the "base types" (text messages, images, videos, and
generic files) would be supported by all clients to ensure there are sufficient building blocks for future extensibility.</t>
      <t>A more complete use-case for extensible events is described by "MSC3381: Polls" <xref target="MSC3381"/> - clients which do not yet have support for polls
can present their users with text fallback for the question and the question asker can manually tally up "improper" responses (if those users
simply sent text messages in response to the question). Clients which do support polls would simply show the poll and its question/options for
the user to click on - their response would be sent to the room as a (deliberately) unrenderable event for other clients to tally up automatically.</t>
    </section>
    <section anchor="encryption">
      <name>Encryption</name>
      <t>Matrix has specified an encryption algorithm for events called Megolm, however for the purposes of MIMI it would be desirable to adopt MLS
<xref target="I-D.ietf-mls-protocol"/> instead. Some bookkeeping changes are required to support MLS in a decentralized environment like Matrix: those
are currently defined by <xref target="DMLS"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security. Future drafts should consider the encryption aspects in particular.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="MxEvents" target="https://spec.matrix.org/v1.4/client-server-api/#events">
          <front>
            <title>Events | Client-Server API</title>
            <author>
              <organization>The Matrix.org Foundation C.I.C.</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="MxEventsSchema" target="https://github.com/matrix-org/matrix-spec/tree/main/data/event-schemas/schema">
          <front>
            <title>Matrix Event JSON Schemas</title>
            <author>
              <organization>The Matrix.org Foundation C.I.C.</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="MSC1767" target="https://github.com/matrix-org/matrix-spec-proposals/blob/d6046d8402e7a3c7a4fcbc9da16ea9bad5968992/proposals/1767-extensible-events.md">
          <front>
            <title>Extensible event types &amp; fallback in Matrix (v2)</title>
            <author initials="M." surname="Hodgson" fullname="Matthew Hodgson">
              <organization>The Matrix.org Foundation C.I.C.</organization>
            </author>
            <author initials="T." surname="Ralston" fullname="Travis Ralston">
              <organization>The Matrix.org Foundation C.I.C.</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="MSC3551" target="https://github.com/matrix-org/matrix-spec-proposals/blob/5bf2118e8ac873e7845b1eedde8dd7bc187ed673/proposals/3551-extensible-events-files.md">
          <front>
            <title>Extensible Events - Files</title>
            <author initials="T." surname="Ralston" fullname="Travis Ralston">
              <organization>The Matrix.org Foundation C.I.C.</organization>
            </author>
            <date year="2021"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-mls-protocol">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Benjamin Beurdouche" initials="B." surname="Beurdouche">
              <organization>Inria &amp; Mozilla</organization>
            </author>
            <author fullname="Raphael Robert" initials="R." surname="Robert">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <author fullname="Jon Millican" initials="J." surname="Millican">
              <organization>Meta Platforms</organization>
            </author>
            <author fullname="Emad Omara" initials="E." surname="Omara">
              <organization>Google</organization>
            </author>
            <author fullname="Katriel Cohn-Gordon" initials="K." surname="Cohn-Gordon">
              <organization>University of Oxford</organization>
            </author>
            <date day="27" month="March" year="2023"/>
            <abstract>
              <t>   Messaging applications are increasingly making use of end-to-end
   security mechanisms to ensure that messages are only accessible to
   the communicating endpoints, and not to any servers involved in
   delivering messages.  Establishing keys to provide such protections
   is challenging for group chat settings, in which more than two
   clients need to agree on a key but may not be online at the same
   time.  In this document, we specify a key establishment protocol that
   provides efficient asynchronous group key establishment with forward
   secrecy and post-compromise security for groups in size ranging from
   two to thousands.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mls-protocol-20"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="MSC3381" target="https://github.com/matrix-org/matrix-spec-proposals/blob/95fdc44b904d2b4d2f227db99050e539e43f3509/proposals/3381-polls.md">
          <front>
            <title>Polls (mk II)</title>
            <author initials="T." surname="Ralston" fullname="Travis Ralston">
              <organization>The Matrix.org Foundation C.I.C.</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="DMLS" target="https://gitlab.matrix.org/matrix-org/mls-ts/-/blob/dd57bc25f6145ddedfb6d193f6baebf5133db7ed/decentralised.org">
          <front>
            <title>Decentralised MLS</title>
            <author initials="H." surname="Chathi" fullname="Hubert Chathi">
              <organization>The Matrix.org Foundation C.I.C.</organization>
            </author>
            <date year="2021"/>
          </front>
          <seriesInfo name="Web" value="https://gitlab.matrix.org/matrix-org/mls-ts/-/blob/dd57bc25f6145ddedfb6d193f6baebf5133db7ed/decentralised.org"/>
        </reference>
        <reference anchor="I-D.ralston-mimi-linearized-matrix">
          <front>
            <title>Linearized Matrix API</title>
            <author fullname="Travis Ralston" initials="T." surname="Ralston">
              <organization>The Matrix.org Foundation C.I.C.</organization>
            </author>
            <author fullname="Matthew Hodgson" initials="M." surname="Hodgson">
              <organization>The Matrix.org Foundation C.I.C.</organization>
            </author>
            <date day="25" month="March" year="2023"/>
            <abstract>
              <t>   Matrix is an existing openly specified decentralized secure
   communications protocol able to provide a framework for instant
   messaging interoperability.  Matrix rooms (aka conversations)
   currently use a Directed Acyclic Graph (DAG) for persisting events/
   messages.  Servers broadcast their changes to the DAG to every other
   server in order to create new events.

   This model provides excellent decentralization characteristics and
   conversation history replication, but proves complex when aiming to
   use Matrix strictly for interoperability between today's existing
   messaging service providers, which often do not persist chat history
   serverside, and do not seek to replicate it between servers.

   This document explores an API surface for Matrix which optimizes for
   ease of interoperability at the expense of decentralized conversation
   history at a per-room level.  We call this API surface "Linearized
   Matrix".

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ralston-mimi-linearized-matrix-00"/>
        </reference>
      </references>
    </references>
    <?line 217?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8VabXPcthH+zl+BXmYyknu88+ldN24ax7ITtXGcsZzmQ6dT
gSR4h4gkWACUdHWV395nFyCPkl/yOm0mke5IYLEvzz67CyVN08RrX6mlmLyU
3upb8VI5J1dKvDC2ln6SyCyz6vrD73Pp1crYzVLopjRJUpi8kTUEFlaWPrWy
ct40aa1rndYsIq2DiLRkEenjReK6rNbOadP4TYu958/fvBDiE4HNBkfrplCt
wo/GT6Zicv70C/wyFp9ev3kxSZquzpRdJgVUWSa5aZxqXOeWwttOJdB9P5FW
SQh62raVhsY4yAnZFOK1klX6RtdqktwYe7WypmvJVmOVOG+cl42PFutmhSde
WdMqKzNdab+ZJFdqg33FMhGpCNbxJxibXKumgzpC/GKhQgQvTL6HSrTkS5JA
z2upKzwn+Z9r5cuZsSt6Lm2+xvO1961bzue0jB7pazXrl83pwTyz5sapOQmY
08aV9usuw1bfWb9XYcOcNnwkXLSrgqOdHx047J4FgTNtfkrO/OfiY7b2dTVJ
Etn5tbHkaWggRNlVVQDaGyuvtROvgyR+CXtlo//NgcaCtRIBveQIILdrCn4l
ns3OZ89mvEUF33oWZj+vh/XvHghZfq1uxFemWLnffGIdpI1PTBq2HP4k/Ly8
fQ4sebfkXV7alYLve9e7VuWz7d759WJ2MM8rjR2pU/Za2VS2ev6JYhlBRMz4
IFb8RzwLyy94uXj67fmE13E+ib3He3v8dQgA/5OSyT/L0l7/i3wNk99vRYRN
bup5BAHZEj+SiXNvlSJgN3PIl3M2J3Us0s3D73vGRbrio8VfLl59I8L57ve1
7eLZ4vjo+FcalbZIfOMA3HlWmWxeHD0+OCpODh7vqWO5nx/LgzLP8tNCLo6U
PM1kcXh6dHJ6ujff7qPTU3XrwXg6q1Qawjyri/uRHhYIXsAE48SnopRVlcn8
CuQdTRU713u7P8tHH06GmBA/Mw+2st6Tyb9EFIKxf3i4+J2CcZiVe4vFiTqR
+cnxvjo+OTjMFkoVhTopiuMsX5wcq+LoeH8UDDr93WCkpa7Ux0IS8zAVL2jh
A98vPuL73+QvKtdjloHz9k9+L+edHpZFfnCQnT4+KPYy/Ffu7R0X2enp48PH
6nD/VB3sl/uHj0/HzsPpaWuq6h1XfUsPxU59Jc7Pfwk0fyOczl5+ffFBd1Qy
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

-->

</rfc>
