From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Karl Fogel Newsgroups: gmane.emacs.devel Subject: Re: Question collaborative editing. Date: Mon, 21 Sep 2020 15:25:38 -0500 Message-ID: <87eemuanct.fsf@red-bean.com> References: <20200921120518.35d56p747pr5mhta.ref@Ergus> <20200921120518.35d56p747pr5mhta@Ergus> Reply-To: Karl Fogel Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25776"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Ergus , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Sep 21 22:27:14 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kKSP2-0006SZ-6c for ged-emacs-devel@m.gmane-mx.org; Mon, 21 Sep 2020 22:27:12 +0200 Original-Received: from localhost ([::1]:42336 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kKSP1-0004tf-1q for ged-emacs-devel@m.gmane-mx.org; Mon, 21 Sep 2020 16:27:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36842) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kKSNb-0004LE-Pe for emacs-devel@gnu.org; Mon, 21 Sep 2020 16:25:43 -0400 Original-Received: from newsp.red-bean.com ([45.79.25.59]:42824 helo=sanpietro.red-bean.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kKSNZ-0005vE-DS for emacs-devel@gnu.org; Mon, 21 Sep 2020 16:25:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=red-bean.com; s=202005newsp; h=Content-Type:MIME-Version:Message-ID: In-Reply-To:Date:Reply-To:References:Subject:Cc:To:From:Sender: Content-Transfer-Encoding:Content-ID:Content-Description; bh=fywu4F0c8DqzZBVcbaZUr/R14zfhWDSUSG2Qn1Msq8E=; t=1600719940; x=1601929540; b=ijRprgq7VLvKAt2K0YQSIzOGxkmRTOnTjoKYvdJa19hRvgInIb4+UoQxWuYs1ckEDdrDu/lZ7M MWgBGuC/OL/JoNSMxIYDaVO9w7eWTbpS2G4Tb6umKbQhQA5wwIav96abtabYDskvq1Glj+FS06Ne6 5kRUifF+x8e9V1uPw+VPuWRHfFcYChg2HWa42JDTt5wIeJGetro2uwM4ckg6KS2ztr80cfZjCZviU kvav5vG772f6taOdk2b4O2Pvn968NJgHTnOsKbX3DsML8rblQ7rkUy7Ct5wlhVW8rWDLQSYGCntFM DQJ6OX8AqtpWq1W06EGoFgbQXXdjmze5Mj1YQ==; Original-Received: from 99-112-125-163.lightspeed.cicril.sbcglobal.net ([99.112.125.163]:48290 helo=floss) by sanpietro.red-bean.com with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kKSNX-0008R7-Aw; Mon, 21 Sep 2020 20:25:39 +0000 In-Reply-To: (Stefan Monnier's message of "Mon, 21 Sep 2020 09:35:13 -0400") Received-SPF: pass client-ip=45.79.25.59; envelope-from=kfogel@red-bean.com; helo=sanpietro.red-bean.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/21 16:15:09 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:256302 Archived-At: 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/