[dispatch] A State Synchronization Working Group

Michael Toomim <toomim@gmail.com> Wed, 25 October 2023 22:04 UTC

Return-Path: <toomim@gmail.com>
X-Original-To: dispatch@ietfa.amsl.com
Delivered-To: dispatch@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D128BC180DC1 for <dispatch@ietfa.amsl.com>; Wed, 25 Oct 2023 15:04:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.105
X-Spam-Level:
X-Spam-Status: No, score=-7.105 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, 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=gmail.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 n4f7t7i6gWWf for <dispatch@ietfa.amsl.com>; Wed, 25 Oct 2023 15:04:46 -0700 (PDT)
Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 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 9218EC1705FB for <dispatch@ietf.org>; Wed, 25 Oct 2023 15:04:46 -0700 (PDT)
Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-6b1e46ca282so213290b3a.2 for <dispatch@ietf.org>; Wed, 25 Oct 2023 15:04:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1698271485; x=1698876285; darn=ietf.org; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=KH9hidSuAus7wXmn+/IIhLwx+YGUYbIT8EzG1nZSapc=; b=Yx/4WMPDNTSqiMXN7NQgc9ODYW0zTjjxPlai5uEm95H820JuhmRoxXa0e1oD60Gu55 +eXFWd1ZttWEh2lPuQN3d9PUv5IkNdY9zFytlsJpk5JPKD+fIJeQ41UIGcVVZ+rJXhDA HeASTrGuFZh0xAwuazCmH02hxyRL1qQCMi0mYS/ShinVlzRAU6IDklgoz89kEhLjAM8U h4t3MNSZ8QE5ylaK2GhifrSZVjGGMiLE6qoQthrghCtqqBW32zN2oRQm+6K6lGE/3GBQ Dg03d1yXrBiGPmqJJln2i1BLDawSwtTmwC2EK0iemwvkLRlvuvDGqxP6Ida4kwrIRs/2 RLlA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698271485; x=1698876285; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=KH9hidSuAus7wXmn+/IIhLwx+YGUYbIT8EzG1nZSapc=; b=mrtZvq1sgMaqWpC0DrFV323D579MbiNWtijoH+kYhUYmyKnVZYUIV+yjzvb+pE+m7c HWaeFn1JaH+iC1OEUiiRSRLCmR6rgik6fFiGpRas9UJWW5YiYzL+Qk6iuQS7KCNrfbKU Nc5ihpxRnSv191ukJCalfs9RQwO0uQLLTkxquSv061HjyoO59bOkS6aSdieTyxbXJbkv tSVb8F+4z09SmsEzS02UKNnargrfOJ7rLjQ59AFpbn1e8l5XFCFBjKcNak0nOnZmzAJ4 liMBps5/rvQvAvQYt9iiQJjI9VH+uwbGBkoRQgrGE/EsmwUtRGhCrqKLRReRO9l2gAfc pbEA==
X-Gm-Message-State: AOJu0YyCfJKQZUPyZ3+LqZnDWRyPUf9Z78fXaEfbq0qweZgQnwGRiRmJ dBX3snUuAoKL6qURHA+95UhZuVrGJbQ=
X-Google-Smtp-Source: AGHT+IEfGLinEPMjc0l5t4R9La9WjE/15Tw2eLz1cdXzzAtpYKGIMa5rzoe5TLkH+UYWrVI6Jtrsyg==
X-Received: by 2002:a05:6a00:2e97:b0:692:a727:1fdd with SMTP id fd23-20020a056a002e9700b00692a7271fddmr20278580pfb.4.1698271484437; Wed, 25 Oct 2023 15:04:44 -0700 (PDT)
Received: from ?IPV6:2603:3024:1004:1900:e026:bb85:eff4:745? ([2603:3024:1004:1900:e026:bb85:eff4:745]) by smtp.gmail.com with ESMTPSA id x5-20020a654545000000b0057ab7d42a4dsm7917110pgr.86.2023.10.25.15.04.43 for <dispatch@ietf.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 25 Oct 2023 15:04:43 -0700 (PDT)
Content-Type: multipart/alternative; boundary="------------vMY8im75zHw0qkacQvdwaD0A"
Message-ID: <a301786e-c59d-f395-f752-bd2c94521e67@gmail.com>
Date: Wed, 25 Oct 2023 15:04:42 -0700
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.14.0
Content-Language: en-US
From: Michael Toomim <toomim@gmail.com>
To: "dispatch@ietf.org" <dispatch@ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/dispatch/wCrAiHwWvlK9netFi71nz3FF7Aw>
Subject: [dispatch] A State Synchronization Working Group
X-BeenThere: dispatch@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: DISPATCH Working Group Mail List <dispatch.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dispatch>, <mailto:dispatch-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dispatch/>
List-Post: <mailto:dispatch@ietf.org>
List-Help: <mailto:dispatch-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dispatch>, <mailto:dispatch-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 25 Oct 2023 22:04:50 -0000

I would like to dispatch the idea of forming a general State 
Synchronization Working Group, to coordinate duplicate efforts in 
defining various state synchronization protocols across existing IETF 
working groups.

Many networking protocols implement some form of state synchronization.  
At the application layer, SCIM, SIP, COAP, ALTO, NETCONF, JMAP, CalDAV, 
and IPP all define state synchronization protocols over HTTP.  Many 
non-IETF protocols also implement sync-over-HTTP for specific uses, such 
as WebSub (to synchronize blogs), ActivityPub (to synchronize social 
feeds), and Matrix (to synchronize chat).  Outside of HTTP, we do state 
synchronization in DNS, IMAP, LDAP, NFS, RSYNC, and Git.  Dropping to 
the lower-level OSI layers, we have protocols to synchronize IP routing 
tables, network reachability, and header compression dictionaries like 
ROHC, OSPFv2, IS-IS, and BGP.  State synchronization also comes up in 
distributed systems and databases, with algorithms such as OT and CRDT, 
and each system defines its own distinct protocol.

We design these as separate protocols because the *general* version of 
the State Synchronization Problem has seemed too challenging to tackle. 
However, the last decade of research has brought breakthroughs in 
general state synchronization algorithms that allow (a) multiple 
editors, (b) editing arbitrary data types, (c) over a distributed 
network, (d) of arbitrary network topology, (e) experiencing arbitrary 
network partitions and delays, (f) with arbitrary merge resolution 
semantics—all with reasonable (and improving) performance.  These 
general algorithms bring up the possibility of designing general 
*protocols* for state sync.

If IETF working groups could rely on general standards for state sync, 
they could eliminate redundant consensus and specification work, as well 
as implementation work, because implementers could re-use common 
libraries and algorithms instead of writing their own algorithms.  
Furthermore, general libraries could afford investment in advanced sync 
features such as peer-to-peer networking, offline modes, 
delta-compression, merge resolution, consistency guarantees, and 
fast-replay; which applications might not implement on their own, but 
now could benefit from for free. This would improve networking 
robustness across the board. Finally, interoperability would improve.  
Network sysadmins, for example, could inspect and debug the state and 
history of their routers, emails, web applications, email, and file 
systems with intercompatible tools over a general protocol.

This new working group would integrate research with practice by working 
in symbiosis with existing IETF Working Groups.  Our new group would 
gather experts and researchers in state synchronization and interface 
with individual Working Groups.  It would learn the needs of individual 
working groups, and produce general knowledge, protocols, and libraries 
in return.

We have had initial success with this model in the informal Braid.org 
group, which was roughly modeled on an IETF Working Group, and has 
produced the Braid-HTTP internet draft that is coming up for discussion 
in HTTPbis.  The Braid group has met every two weeks for 2.5 years on 
zoom, with average attendance of 4 or 5 people, and has produced a 
number of research results in generalizing performant state synchronization:

   - Diamond-Types <https://github.com/josephg/diamond-types>: World's 
fastest P2P text editing CRDT
   - List-CRDTs <https://github.com/josephg/reference-crdts>: First text 
editing CRDT with general pluggable merge semantics (video presentation 
<https://braid.org/video/https://invisiblecollege.s3-us-west-1.amazonaws.com/braid-meeting-10.mp4#305>)
   - Antimatter: World's first history-pruning P2P text editing CRDT 
(draft <https://braid.org/antimatter>) (implementation 
<https://www.npmjs.com/package/@braid.org/antimatter>)
   - Sync9 <https://braid.org/sync9>: First true replace text CRDT
   - Portals <https://braid.org/meeting-62/portals>: Generalized patch 
semantics for moves, replaces, splices
   - Time Machines <https://braid.org/drafts/time-machines>: 
Generalization of OT & CRDT theory
   - Braid-HTTP 
<https://datatracker.ietf.org/doc/html/draft-toomim-httpbis-braid-http>: 
Synchronization for HTTP

We could imagine formalizing the Braid group into this State 
Synchronization group. It would look more broadly at synchronization 
than any individual application, and would produce specs that could be 
offered to other groups for standardization, similar to how the QUIC 
group seeded HTTP/3.

I am very curious what the IETF thinks about this idea for a working 
group, and would be very grateful to hear thoughts and opinions from 
everyone.  Thank you very much!

Michael

[1] Relevant Braid-HTTP draft: 
https://datatracker.ietf.org/doc/html/draft-toomim-httpbis-braid-http