[Mimi] Matrix and MIMI

Matthew Hodgson <matthew@matrix.org> Mon, 25 July 2022 09:51 UTC

Return-Path: <matthew@matrix.org>
X-Original-To: mimi@ietfa.amsl.com
Delivered-To: mimi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EDFBFC157B36 for <mimi@ietfa.amsl.com>; Mon, 25 Jul 2022 02:51:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.91
X-Spam-Level:
X-Spam-Status: No, score=-4.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, PDS_OTHER_BAD_TLD=1.997, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=messagingengine.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 91wi5_b09bFF for <mimi@ietfa.amsl.com>; Mon, 25 Jul 2022 02:51:21 -0700 (PDT)
Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 164E7C14CF12 for <mimi@ietf.org>; Mon, 25 Jul 2022 02:51:02 -0700 (PDT)
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 5A8E85C0160 for <mimi@ietf.org>; Mon, 25 Jul 2022 05:51:01 -0400 (EDT)
Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Mon, 25 Jul 2022 05:51:01 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:date:feedback-id:feedback-id:from:from:in-reply-to :message-id:mime-version:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1658742661; x=1658829061; bh=uCQj7YiFOuZSY3JB0n8LLNQDe3rT suwSnK/1sNdqov0=; b=BSZAawmykWNev6pOzzDAHbx/3yDUSN/kiAAay68pZNx7 6PWu6ZyvUDMWuIfNdnPzoM4VN7Mvpm3YHI45FnvYZDavm3wd69BjgYcQ5jppt2nx xcSNifzkmkHESeurpFOVjyDaKFJmIO4c0kDGFvGLceTYptK38aWoI7e0S8dIE+8n 3/TduTEIWkQJz5qJhic/D9ondvBZHsnTyRWcXlK5SjrNbk48DfsppOaRYWoAsj/p QQY0I3v/64bi+9kT+gsIX810rJ9gNVYuveFTQQ6dAA/ga77ENfRK1xgzc3evFy+L T35ZwLjyydd0h82U8yWS4LHjftQh87fMC2f0hLDQaQ==
X-ME-Sender: <xms:hWfeYlnsfX1jS2nlZwhOEPMfrgsjNrtCraJN6VuoSZX9sj7GfFvSmw> <xme:hWfeYg209-g7AR3R0c3jICymEnya0AfN00xx3APiP37I4B_WqQcDTUL9lR7yWudiO W1hHnRY26syG-BRefU>
X-ME-Received: <xmr:hWfeYrqvl_ZIMp-hE_8BPf2kF1bdwpx-CyNHqlV56Vy_0u540WnZFaiG1Pq0U8RtNAHaVSgVBfUxyvrc2Qh_2b0pgFE>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrvddtkedgudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucgfrhhlucfvnfffucdludegmdenucfjughrpefkff ggfgfvhffutgfgsehtkeertddtfeejnecuhfhrohhmpeforghtthhhvgifucfjohgughhs ohhnuceomhgrthhthhgvfiesmhgrthhrihigrdhorhhgqeenucggtffrrghtthgvrhhnpe ejtdfhhedvkedtffefheehveejtddvjeeiieetfeefueffgeelfeffheetgeevgeenucff ohhmrghinhepihgvthhfrdhorhhgpdhmrghtrhhigidrohhrghdpuggvtggvnhhtrhgrlh hishgvugdrohhrghdpvghlvghmvghnthdrihhopdhsihhfthgvugdrvghupdgtohhmmhgt ohhnrdighiiipdhgihhthhhusgdrtghomhdprhgvrggumhgvrdhmugenucevlhhushhtvg hrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghtthhhvgifsehmrght rhhigidrohhrgh
X-ME-Proxy: <xmx:hWfeYlla0tbikTel1BI06yRR1kVEHBi6r-nJ7E_8qxRMfJKTiLKF0Q> <xmx:hWfeYj0yDCn-WTo_NDOoJJvC__kHIWQL_nT6oLcbrX7FOhfeogNpSA> <xmx:hWfeYkvOdibgfyt-zLaG5VPe4wrEcaVMAXhE9TKMFMEUnYQcW0izxQ> <xmx:hWfeYtoZk_xzuvoMb5LPtWeUvqd56hEnWCcO4hMhgFj7IYPCCSzXJw>
Feedback-ID: i2b1146ac:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA for <mimi@ietf.org>; Mon, 25 Jul 2022 05:51:00 -0400 (EDT)
Message-ID: <6ba4e382-b7f2-e039-98c7-801417bf2e88@matrix.org>
Date: Mon, 25 Jul 2022 10:50:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:103.0) Gecko/20100101 Thunderbird/103.0
To: mimi@ietf.org
From: Matthew Hodgson <matthew@matrix.org>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/mimi/T3diEGrSNKevyBJh-7xoVCUNzxI>
Subject: [Mimi] Matrix and MIMI
X-BeenThere: mimi@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: More Instant Messaging Interoperability <mimi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mimi>, <mailto:mimi-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/mimi/>
List-Post: <mailto:mimi@ietf.org>
List-Help: <mailto:mimi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mimi>, <mailto:mimi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 25 Jul 2022 09:51:26 -0000

Hi all,

Many thanks for taking the initiative to improve standardisation around 
comms interop!  It's very clear that the Digital Markets Act has shifted 
messaging interop from being an aspirational goal to something much more 
concrete and timely, and the IETF is well positioned to support such work.

Particularly, there are some very significant unsolved problems 
surrounding decentralised identity (discovering which services a given 
user has actually authorised to host their communication) and 
decentralised reputation/abuse (ensuring that open interoperable APIs 
aren't used as a mechanism for spam).  On the identity side, MIMI's 
problem space statement at 
https://www.ietf.org/archive/id/draft-mahy-mimi-identity-00.html is 
great - and it's also fantastic to see SPIN emerging as a potential 
concrete approach at 
https://www.ietf.org/archive/id/draft-rosenberg-dispatch-spin-00.txt.

Finally, it's clear that we also need a common application-layer 
communication protocol on top of MLS: it's no use having end-to-end 
encryption if everyone speaks different languages on top, necessitating 
bridges which then undermine E2EE.

However, this is also an area with significant prior art - and I'm 
really surprised to see CPIM being proposed as the content layer in 
MIMI. CPIM is almost 20 years old, and its approach reflects the 
previous generation of communication apps. Specifically, the proposal 
here seems to be to pass CPIM envelopes between participants in a 
conversation.  However, the reality is that these days the majority of 
modern collaborative communication apps (Slack, Teams, Wire, Telegram, 
etc) are focused on *consistently synchronising message history* (i.e. 
scrollback, and per-conversation metadata) across the users and devices 
participating in a conversation.

Back in 2014 we started working on Matrix (https://matrix.org) as an 
independent open standard to establish an application layer protocol for 
these semantics: specifically, modelling communication as conversation 
history which should be replicated over the participants.  Matrix 
expresses each conversation not as a loose stream of messages, but as a 
Merkle DAG (directed acyclic graph) of conversation history very similar 
to a Git repository. This gives the following main advantages over a 
message-passing approach such as XMPP MUCs, MSRP, SMTP, etc:

  * Conversation history becomes the primary first-class citizen: all 
clients automatically get synchronised consistent scrollback; lazily 
loading it in from other nodes as needed; automatically providing 
resilience to network partitions.  Everyone is guaranteed to see a 
maximally consistent view of the same conversation.

  * Conversation history is democratised and shared equitably over all 
participants - no single entity ends up becoming a defacto privileged 
node thanks to storing or relaying history: in fact, you can't 
communicate with others without equally sharing ownership of the 
conversation with them.  This is highly aligned with the various 
'avoiding internet centralisation' initiatives within IETF.

  * This highly decentralised structure also ensures that the underlying 
protocols must also be decentralised.  For instance, we've been gently 
contributing to MLS standardisation work, and particularly Decentralised 
MLS 
(https://gitlab.matrix.org/matrix-org/mls-ts/-/blob/decentralised2/decentralised.org) 
- to ensure that MLS sequencing does not create an unnecessary form of 
centralisation.

  * Conversations automatically benefit from decentralised access 
controls - given there is no central point of control over rooms, access 
control is provided in a byzantine-fault tolerant manner by requiring 
each participant to include a simple proof of their permission to emit 
each event: 
https://matrix.org/blog/2020/06/16/matrix-decomposition-an-independent-academic-analysis-of-matrix-state-resolution

  * Conversations are decorated with structured key/value data, 
versioned in the timeline of the room, providing an incredibly useful 
decentralised key-value store as a first-class primitive alongside the 
conversational data itself (e.g. for room names, topics, icons, or much 
much more)

  * Account portability and multi-homed accounts become much easier: 
user history is automatically replicated onto whatever servers that host 
a given user's identity (currently WIP).

We built Matrix as a protocol for interoperability both between native 
Matrix implementations and existing communication systems. In fact, the 
name Matrix was picked because it acts as a matrix that can connect N 
platforms together in an NxN matrix.  The direct inspiration for 
Matrix's improved semantics was learning from our experiences 
implementing various RCS/IMS/MSRP/CPIM and XMPP based communication 
systems for the telco industry in 2010-2014.  We hope these learnings 
might be relevant here!

Matrix has turned out to be successful as an approach: with a vibrant 
and highly hetrogenous ecosystem, there are hundreds of bridges now 
implemented which link existing communication systems via Matrix; three 
major independently-developed server implementations (in Python, Go and 
Rust); and hundreds of clients which natively speak the protocol.  The 
public network can see over 64M addresses (of which 30M are natively on 
Matrix, and about 15M are long-term users) - spread over around 95K 
server instances.

Meanwhile, an ever increasing number of independent (and sometimes 
competitive) commercial organisations have been successfully using the 
protocol for interoperability, including IBM, Ericsson, Thales, 
Palantir, LivePerson, Beeper, Famedly, Rocket.Chat, Element and many 
more.  The French state has adopted Matrix as its official communication 
system (https://element.io/case-studies/tchap), as has the German armed 
forces (https://sifted.eu/articles/european-armies-matrix/), German 
healthcare industry 
(https://matrix.org/blog/2021/07/21/germanys-national-healthcare-system-adopts-matrix), 
and significant uptake in the UK, US and Scandanavia.  The protocol has 
also proven to go far beyond basic instant messaging, supporting 
decentralised VoIP/Video conferencing 
(https://2021.commcon.xyz/talks/extending-matrix-s-e2ee-calls-to-multiparty) 
and even interoperable spatial collaboration 
(https://github.com/matrix-org/thirdroom/blob/main/README.md).

Matrix itself is currently published as an open standard 
(https://spec.matrix.org) by an independent non-profit foundation 
(https://matrix.org/foundation) and the spec evolves via an open 
governance process (https://spec.matrix.org/unstable/proposals/). 
However, we are approaching the point of maturity where Matrix could be 
ratified by a dedicated international standards body - and as such we'd 
be very interested to hear if there is interest in Matrix being 
considered as the application layer on top of MLS for interoperable 
communication.  We are already working on using MLS for Matrix's E2EE - 
and after all; we have a proven track record to date of running code and 
rough consensus as an interoperable comms standard.  We did present 
Matrix as an HotRFC at IETF-101, but at the point the protocol was still 
very much in fux - whereas nowadays we're in a much better position to 
discuss if/how Matrix could exist in IETF.

I was hoping to be present at the BOF in Philly today and raise this for 
discussion there: however, it looks like i am not going to be able to 
make it - instead Travis Ralston from the Matrix spec core team will 
hopefully be there to represent (or failing that we will try to do 
remote participation).

Otherwise, thoughts would be very welcome here on whether Matrix could 
provide a better application layer than a linear CPIM-based approach for 
MIMI?

thanks,

Matthew

-- 
Matthew Hodgson
Project Lead
Matrix.org