From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Fermin Newsgroups: gmane.emacs.devel Subject: Re: Question collaborative editing. Date: Thu, 24 Sep 2020 23:41:27 +0200 Message-ID: <2ACED303-9A2C-4363-BE56-2E9AF0B8DC85@posteo.net> References: <20200921120518.35d56p747pr5mhta.ref@Ergus> <20200921120518.35d56p747pr5mhta@Ergus> <87eemuanct.fsf@red-bean.com> <20200924013655.asv2tem25cbwv5et@Ergus> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="----2GLAY8KD0ZEAI96S3SAB49LTPZTMR5" Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="19520"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: K-9 Mail for Android Cc: Stefan Monnier To: emacs-devel@gnu.org, Ergus , Karl Fogel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Sep 24 23:42:13 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 1kLZ0H-0004nU-HL for ged-emacs-devel@m.gmane-mx.org; Thu, 24 Sep 2020 23:42:13 +0200 Original-Received: from localhost ([::1]:55354 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kLZ0G-0002Bg-IN for ged-emacs-devel@m.gmane-mx.org; Thu, 24 Sep 2020 17:42:12 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kLYzi-0001lC-0i for emacs-devel@gnu.org; Thu, 24 Sep 2020 17:41:38 -0400 Original-Received: from mout01.posteo.de ([185.67.36.65]:58151) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kLYze-000650-AU for emacs-devel@gnu.org; Thu, 24 Sep 2020 17:41:37 -0400 Original-Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id A6A49160061 for ; Thu, 24 Sep 2020 23:41:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1600983690; bh=/P/T95RZuxBNYxI27oc4nax0Q60It6s6GC1c8JDTBWY=; h=Date:Subject:To:CC:From:From; b=NJuOmf6JBfJ2COR+KWA5CP6Ad3wWtmFv4BKxEFTuN/+Eb4SXnjjBGaXZ/tbmGDl4K iB/KWRqjtXqWGTymGqKAVbJQLvZ/84hD6XZ/qGttLk6nqOXdHxrqC+tH/nr2o0FJug 1OK/JDPkdLs5ZUZn7Vclj5vwa0SE+yUzuIG66tDwos6gaJsRA0zJvAkLA2LuT0SpeD SLBb/JRsmZfFnszf0/Xe5d6Jh1luFpr5TMfKuUfFTVb3KRlqT/w+QrfoZgg9WXlEqg nq6aR3zyEprVlIZfGZV8feYo1qYoEeGQ0Fq58IGCS5u2uzYW3B4lf9uAKLRugaCBfZ 8zVPm6g8ehcdQ== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4By7ls4mrTz9rxK; Thu, 24 Sep 2020 23:41:29 +0200 (CEST) In-Reply-To: <20200924013655.asv2tem25cbwv5et@Ergus> Received-SPF: pass client-ip=185.67.36.65; envelope-from=fmfs@posteo.net; helo=mout01.posteo.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/24 17:41:31 X-ACL-Warn: Detected OS = Linux 3.11 and newer [fuzzy] X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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:256404 Archived-At: ------2GLAY8KD0ZEAI96S3SAB49LTPZTMR5 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable This is a great feature for Emacs, thanks to show me the existence of Rudel= , maybe the easiest aproach is to make it work with=20 https://github=2Ecom/gobby/libinfinit Seems quite active, and the client is in a unstable state=2EWhat so you gu= ys think ? Regards=2E On 24 September 2020 03:36:55 CEST, Ergus wrote: >On Mon, Sep 21, 2020 at 03:25:38PM -0500, Karl Fogel wrote: >>On 21 Sep 2020, Stefan Monnier wrote: >>>> Just a question=2E 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=2E Maybe with tramp or emacsserver? >>> >>>Discussed before=2E >>>Emacsserver/client is definitely not a good solution for it=2E >>> >>>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=2E >>> >>>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=2E >> >>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=2E 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=2Ecom/holtzermann17/linepad][Linepad]] Emacs + >Etherpad=2E But no progress since 2012? >>** >[[https://anarc=2Eat/blog/2018-06-26-collaborative-editors-history/][Hist= orical >inventory of collaborative editors]] (2018) >>** [[https://github=2Ecom/zk-phi/togetherly/][Togetherly]] Emacs-only; >simple, but apparently works=2E Insecure=2E (2017) >>** >[[https://blog=2Ekevinjahns=2Ede/are-crdts-suitable-for-shared-editing/][= Are >CRDTs suitable for shared editing?]] >> Author of [[https://github=2Ecom/yjs/yjs][Yjs]] talks about his >optimizations=2E >> "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=2E I hope to convince you that the overhead is >> actually very small even for large documents with long edit >> histories=2E" >>** https://github=2Ecom/codimd/server >>** [[https://floobits=2Ecom/help/plugins/emacs][Floobits client-side >Emacs plugin]] >> The server-side is proprietary (see https://floobits=2Ecom/) but the >Emacs >> client-side plugin is free software, under the Apache-2=2E0 license; >you can do >> 'git clone https://github=2Ecom/Floobits/floobits-emacs=2Egit' to get >it=2E >> 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=2E I emailed Floobits >and asked them >> whether they would consider freeing their server-side code, perhaps >for a fee, >> but never received a response=2E Email reference: >> > From: Karl Fogel >> > To: Floobits Info Contact Address >> > Subject: An odd business inquiry=2E >> > Date: Wed, 06 May 2020 00:00:21 -0500 >> > Message-ID: <87368d1wuy=2Efsf@red-bean=2Ecom> >>*** >[[https://github=2Ecom/codimd/server/blob/master/docs/dev/ot=2Emd][Docs o= n >Operational Transform]] >>*** https://operational-transformation=2Egithub=2Eio/ >>** [[https://martin=2Ekleppmann=2Ecom/papers/pushpin-papoc20=2Epdf][Push= Pin: >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=2Eio/blog/2019/splicing-crdts/][Notes on Splicing >CRDTs for Structured Hypertext]] >>** https://github=2Ecom/typeintandem/tandem >>** "Creating a Collaborative Editor" (Pierre Hedkvist, 11 June 2019) >> =20 >https://www=2Epierrehedkvist=2Ecom/posts/1-creating-a-collaborative-edito= r >>** "Data Laced with History: Causal Trees & Operational CRDTs" >> Etherpad, Google Docs, etc >> http://archagon=2Enet/blog/2018/03/24/data-laced-with-history/ >> > >Very thanks Karl thanks to your link I found this: > >https://conclave-team=2Egithub=2Eio/conclave-site/ > > >Which is indeed very detailed=2E ------2GLAY8KD0ZEAI96S3SAB49LTPZTMR5 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable This is a great feature for Emacs, thanks to show = me the existence of Rudel, maybe the easiest aproach is to make it work wit= h
https://github=2Eco= m/gobby/libinfinit

Seems quite active, and the client is in a un= stable state=2EWhat so you guys think ?

Regards=2E

On 24 September 2020 03:36:55 CEST, Ergus <spacibba@aol= =2Ecom> wrote:
On Mon, Sep 21, 2020 at 03:25:38PM -0500, Karl Fogel= wrote:
On 21 Sep 2020,= Stefan Monnier wrote:
=
Just a question=2E I have = seen in emacswiki the different alternatives for
collaborative editing a= nd so far all of them look a bit hack so I
decided to ask if anyone is w= orking in such a functionality for
emacs or have any hint=2E Maybe with = tramp or emacsserver?

Discussed before=2E
Emacsserve= r/client is definitely not a good solution for it=2E

Rudel (in GNU E= LPA) was a serious attempt to do it, but it's been
unmaintained for a lo= ng time, so it needs a fair bit of love=2E

I don't think there's a p= rotocol 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 i= t=2E

However, I've been collecting references related to collaborati= ve editing, especially in Emacs, in case I were ever to get time to work on= it=2E Perhaps those references would be useful for you, Ergus, so here th= ey are in Org Mode format:

* Collaborative Editing | Parallel Editin= g | OT, CDRT, and more
** [[https://github=2Ecom/holtzermann17/linepad][= Linepad]] Emacs + Etherpad=2E But no progress since 2012?
** [[https://= anarc=2Eat/blog/2018-06-26-collaborative-editors-history/][Historical inven= tory of collaborative editors]] (2018)
** [[https://github=2Ecom/zk-phi/= togetherly/][Togetherly]] Emacs-only; simple, but apparently works=2E Inse= cure=2E (2017)
** [[https://blog=2Ekevinjahns=2Ede/are-crdts-suitable-f= or-shared-editing/][Are CRDTs suitable for shared editing?]]
Author o= f [[https://github=2Ecom/yjs/yjs][Yjs]] talks about his optimizations=2E "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=2E I hope to convince you that the overhead is
actual= ly very small even for large documents with long edit
histories=2E"** https://github=2Ecom/co= dimd/server
** [[https://floobits=2Ecom/help/plugins/emacs][Floobits= client-side Emacs plugin]]
The server-side is proprietary (see https://floobits=2Ecom/) but the Emacs<= br> client-side plugin is free software, under the Apache-2=2E0 license; = you can do
'git clone https://github=2Ecom/Floobits/floobits-emacs=2Egit' to= get it=2E
This doesn't work without the proprietary server, of cours= e, but it might help
as a guide to what's needed on the client side= =2E I emailed Floobits and asked them
whether they would consider fr= eeing their server-side code, perhaps for a fee,
but never received a= response=2E Email reference:
From: Karl Fogel
To: Floobits Info Contact Address
Subject:= An odd business inquiry=2E
Date: Wed, 06 May 2020 00:00:21 -0500
Mes= sage-ID: <87368d1wuy=2Efsf@red-bean=2Ecom>
*** [[http= s://github=2Ecom/codimd/server/blob/master/docs/dev/ot=2Emd][Docs on Operat= ional Transform]]
*** https://operational-transformation=2Egithub=2Eio/
** [[h= ttps://martin=2Ekleppmann=2Ecom/papers/pushpin-papoc20=2Epdf][PushPin: Towa= rds Production-Quality Peer-to-PeerCollaboration]]
Peter van Hardenbe= rg
Ink & Switch, LLCSan Francisco, CA, USA

Martin Klepp= mann
University of Cambridge
Cambridge, United Kingdom
** [[= https://lord=2Eio/blog/2019/splicing-crdts/][Notes on Splicing CRDTs for St= ructured Hypertext]]
** https://github=2Ecom/typeintandem/tandem
** "Creating a Collabo= rative Editor" (Pierre Hedkvist, 11 June 2019)
https://ww= w=2Epierrehedkvist=2Ecom/posts/1-creating-a-collaborative-editor
** = "Data Laced with History: Causal Trees & Operational CRDTs"
Ether= pad, Google Docs, etc
http://archagon=2Enet/blog/2018/03/24/data-lace= d-with-history/


Very thanks Karl thanks to your= link I found this:

https://conclave-team=2Egithub=2Eio/conclave-site/

Which is indeed very detailed=2E

------2GLAY8KD0ZEAI96S3SAB49LTPZTMR5--