<?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.25 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ralston-mimi-messaging-requirements-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="Requirements of an Interoperable Messaging Protocol">Requirements of Interoperable Messaging</title>
    <seriesInfo name="Internet-Draft" value="draft-ralston-mimi-messaging-requirements-00"/>
    <author fullname="Travis Ralston">
      <organization>The Matrix.org Foundation C.I.C.</organization>
      <address>
        <email>travisr@matrix.org</email>
      </address>
    </author>
    <date year="2023" month="March" day="13"/>
    <area>Applications and Real-Time</area>
    <workgroup>More Instant Messaging Interoperability</workgroup>
    <keyword>mimi</keyword>
    <keyword>messaging</keyword>
    <keyword>requirements</keyword>
    <keyword>interoperability</keyword>
    <keyword>minimum</keyword>
    <abstract>
      <t>This document describes a set of requirements for messaging services to interoperate.</t>
      <t>These requirements are independent of any particular protocol or messaging service,
describing the set of features an interoperable messaging service should support.
Services should expect to go beyond the requirements listed here, as MIMI's future
content format evolves.</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-messaging-requirements/draft-ralston-mimi-messaging-requirements.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ralston-mimi-messaging-requirements/"/>.
      </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-messaging-requirements"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>MIMI's charter seeks to establish an extensible set of messaging features which make
use of a future content format published by MIMI. The charter also states that MIMI will
use End-to-End Encryption (E2EE), and that the content format must support E2EE.</t>
      <t>This document describes a possible set of features that messaging services should support.
By extension, it also includes what MIMI should support in its future content format.
This document also explores extensibility by contrasting a minimum and maximum feature
set for interoperability over MIMI.</t>
    </section>
    <section anchor="minimum-feature-set">
      <name>Minimum Feature Set</name>
      <t>The following are the minimum features for an interoperable messaging service. We consider
group communication on the basis that 1:1 communication can typically be modelled as a subset of
group communication.</t>
      <ul spacing="normal">
        <li>Encryption, as required by MIMI's charter, and all associated features (device tracking, etc).</li>
        <li>Reliable synchronisation of messages between messaging services, avoiding gaps.</li>
        <li>Text and rich text to represent nearly all features persisted to the conversation history.</li>
        <li>Ability to redact, remove, or delete a message, both as an individual and as a room moderator.</li>
        <li>Invite, kick, ban, and leave membership states within a conversation.</li>
        <li>Display names and avatars for users, to allow for personalization beyond their identifier or
username.</li>
        <li>Direct messaging, or conversations of exactly 2 users. The underlying protocol might choose
to treat DMs no different from multi-user conversations, though messaging services might
apply semantics to represent DMs usefully to users.</li>
        <li>Differentiation between users and their abilities. For example, roles for Moderators, Admins,
etc.</li>
      </ul>
    </section>
    <section anchor="maximum-feature-set">
      <name>Maximum Feature Set</name>
      <t>This list is not exhaustive, but outlines some examples for what the content format should be
capable of supporting. The features that messaging services currently support are:</t>
      <ul spacing="normal">
        <li>Names, topics/descriptions, and avatars for conversations for personalization. Messaging
services which don't support these aesthetic features would ignore them.</li>
        <li>Read receipts/indicators when others in the room have read the message. If a messaging service
doesn't support them, that service would not produce receipts and ignore received receipts.
This is a safe failure mode for the feature.</li>
        <li>Typing notifications when others in the room are writing a message. Like read receipts, services
have the same safe failure mode.</li>
        <li>Presence or online state. Like read receipts or typing notifications, presence has the same safe
fallback mode.</li>
        <li>Ability to reliably synchronize visible conversation history between messaging services.</li>
        <li>Ability to port conversation history between messaging services.</li>
        <li>Images, videos, files, and audio in messages. The content format would specify a fallback to
(rich) text to support messaging services that are primarily text-based, such as by specifying
a URL for users to click on to view the relevant media.</li>
        <li>Voice messages are semantically distinct from file transfers, but can be represented as
audio file uploads with minor decoration metadata in the content format.</li>
        <li>Replies (also called "rich quoting") to reference specific messages or parts of messages. A
content format specification might define a fallback format to ensure messaging services that
do not support replies can still render something which looks vaguely like a reply.</li>
        <li>Threads to organize a conversation. A content format specification might define a fallback
to Replies to keep a reader's context in tact when using a messaging service that doesn't
support threads.</li>
        <li>1:1 VoIP. Messaging services which don't support VoIP could be asked to say "a call is happening,
but you can't join on this device" under a content format, or, if the conference protocol
allows, a link for the user to click and join the call externally.</li>
        <li>Multi-party VoIP.</li>
        <li>Message editing. A content format could define a fallback which references the edited message
with a reply and using a difference syntax to highlight applicable changes.</li>
        <li>Reactions. A content format might decide to provide a fallback by using replies to associate an
emoji or textual reaction to a given message, or simply ignore it.</li>
      </ul>
      <t>As implied above, a future content format document would be responsible for describing the exact
details of how features fall back, if at all. This document offers non-binding suggestions.</t>
      <section anchor="moderation-and-personal-safety-functionality">
        <name>Moderation and Personal Safety Functionality</name>
        <t>Currently out of scope for MIMI, moderation, anti-spam, etc functionality would likely be considered
part of the "Maximum Feature Set". A suitable protocol could support functionality such as ignoring
or blocking individual users, "who can send invites to me" controls, and similar features without
needing to have a specific content format specification necessarily. For example, preventing invites
from being received could simply be a rejected action over the delivery and transport layer.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security considerations for these features would be handled by other documents, such as a content
format document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>






  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
