coast-team / mute

a scalable collaborative document editor with CRDT, P2P and E2EE

Home Page:https://mute.loria.fr/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MUTE logo

MUTE: Multi User Text Editor

Edit documents collaboratively in real-time with hundreds of users on the same document, even with a light server. MUTE implements a CRDT-based consistency algorithm (LogootSplit) for large scale peer-to-peer collaboration on top of a peer-to-peer message layer (libp2p).

📦 Deployment

MUTE is browser-based, without any intermediary between you and your peers. However the peer-to-peer initial discovery and signaling requires at least a (lightweight) server.

Read more in our deployment documentation

📖 Development

✏️ - The project's package-lock.json was last generated with NPM@9.5.0 and Node@18.15.0. Developers on the app uses Docker Engine@20.10

Run npm install then npm start. The application is now available at localhost:4200, the signaling server at localhost:8010.

Development happens on the INRIA GitLab repository, but external contributions are very welcome on the GitHub mirror we maintain.

Read more in our development documentation

📊 Benchmark

Compared to existing web-based collaborative text editing tools, MUTE does not require a powerful central server since the server is not performing any computation. You can even work offline and reconnect later without losing your changes.

While centralized alternatives suffer significant performance drops after reaching tens of users on a document, MUTE remains unfazed. This is due to its architecture: MUTE doesn't process changes server-side, allowing much larger groups to collaboratively edit a document.

Memory/Latency

Load testing has been done for the core algorithms that represent the main computation done locally:

Mehdi Ahmed-Nacer, Claudia-Lavinia Ignat, Gérald Oster, Hyun-Gul Roh, and Pascal Urso. 2011. Evaluating CRDTs for real-time document editing. In Proceedings of the 11th ACM symposium on Document engineering (DocEng '11). Association for Computing Machinery, New York, NY, USA, 103–112. https://doi.org/10.1145/2034691.2034717

Loïck Briot, Pascal Urso, and Marc Shapiro. 2016. High Responsiveness for Group Editing CRDTs. In Proceedings of the 2016 ACM International Conference on Supporting Group Work (GROUP '16). Association for Computing Machinery, New York, NY, USA, 51–60. https://doi.org/10.1145/2957276.2957300

Protocol performance

We rely on pluggable network layers, so part of the real use performance not accounted for in our benchmarks can be attributed to the underlying protocols we use for message exchanges:

🛠️ Architecture

Document editing layer:

  • @coast-team/mute-core: core component ensuring typical document-editing operations are done in an orderly fashion
  • @coast-team/mute-structs: an implementation of the LogootSplit CRDT algorithm. This algorithm can be seen as an extension for variable-sized elements (e.g. strings) of one of the basic CRDT algorithms for unit elements (e.g. characters).

Security layer:

P2P Network layer:

Legacy P2P network layer:

Non-P2P network layer backup:

  • pulsar for increased reliability in networks banning WebRTC

License

Copyright (C) 2016-2023 COAST

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

About

a scalable collaborative document editor with CRDT, P2P and E2EE

https://mute.loria.fr/

License:GNU Affero General Public License v3.0


Languages

Language:TypeScript 62.6%Language:JavaScript 17.4%Language:HTML 9.4%Language:SCSS 8.9%Language:Shell 1.3%Language:Dockerfile 0.3%Language:Batchfile 0.1%