On Mon, Sep 21, 2020 at 03:25:38PM -0500, Karl Fogel wrote:
On 21 Sep 2020, Stefan Monnier wrote:
Just a question. I have seen in emacswiki the different alternatives for
collaborative editing and so far all of them look a bit hack so I
decided to ask if anyone is working in such a functionality for
emacs or have any hint. Maybe with tramp or emacsserver?
Discussed before.
Emacsserver/client is definitely not a good solution for it.
Rudel (in GNU ELPA) was a serious attempt to do it, but it's been
unmaintained for a long time, so it needs a fair bit of love.
I don't think there's a protocol for that with a good Emacs client (or
server) yet :-(
I'm very interested in this too, but don't have time to work on it.
However, I've been collecting references related to collaborative editing, especially in Emacs, in case I were ever to get time to work on it. Perhaps those references would be useful for you, Ergus, so here they are in Org Mode format:
* Collaborative Editing | Parallel Editing | OT, CDRT, and more
** [[https://github.com/holtzermann17/linepad][Linepad]] Emacs + Etherpad. But no progress since 2012?
** [[https://anarc.at/blog/2018-06-26-collaborative-editors-history/][Historical inventory of collaborative editors]] (2018)
** [[https://github.com/zk-phi/togetherly/][Togetherly]] Emacs-only; simple, but apparently works. Insecure. (2017)
** [[https://blog.kevinjahns.de/are-crdts-suitable-for-shared-editing/][Are CRDTs suitable for shared editing?]]
Author of [[https://github.com/yjs/yjs][Yjs]] talks about his optimizations.
"In this article, I will introduce you to a simple optimization for
CRDTs and examine the exact performance trade-off of using Yjs for
shared editing. I hope to convince you that the overhead is
actually very small even for large documents with long edit
histories."
** https://github.com/codimd/server
** [[https://floobits.com/help/plugins/emacs][Floobits client-side Emacs plugin]]
The server-side is proprietary (see https://floobits.com/) but the Emacs
client-side plugin is free software, under the Apache-2.0 license; you can do
'git clone https://github.com/Floobits/floobits-emacs.git' to get it.
This doesn't work without the proprietary server, of course, but it might help
as a guide to what's needed on the client side. I emailed Floobits and asked them
whether they would consider freeing their server-side code, perhaps for a fee,
but never received a response. Email reference:
From: Karl Fogel
To: Floobits Info Contact Address
Subject: An odd business inquiry.
Date: Wed, 06 May 2020 00:00:21 -0500
Message-ID: <87368d1wuy.fsf@red-bean.com>
*** [[https://github.com/codimd/server/blob/master/docs/dev/ot.md][Docs on Operational Transform]]
*** https://operational-transformation.github.io/
** [[https://martin.kleppmann.com/papers/pushpin-papoc20.pdf][PushPin: Towards Production-Quality Peer-to-PeerCollaboration]]
Peter van Hardenberg
Ink & Switch, LLCSan Francisco, CA, USA
Martin Kleppmann
University of Cambridge
Cambridge, United Kingdom
** [[https://lord.io/blog/2019/splicing-crdts/][Notes on Splicing CRDTs for Structured Hypertext]]
** https://github.com/typeintandem/tandem
** "Creating a Collaborative Editor" (Pierre Hedkvist, 11 June 2019)
https://www.pierrehedkvist.com/posts/1-creating-a-collaborative-editor
** "Data Laced with History: Causal Trees & Operational CRDTs"
Etherpad, Google Docs, etc
http://archagon.net/blog/2018/03/24/data-laced-with-history/
Very thanks Karl thanks to your link I found this:
https://conclave-team.github.io/conclave-site/
Which is indeed very detailed.