From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.devel Subject: crdt.el - collaborative editing for Emacs Date: Mon, 5 Oct 2020 06:53:31 +0300 Message-ID: <20201005035331.GI15516@protected.rcdrun.com> References: <83a6x7js6y.fsf@gnu.org> <83eemji6e8.fsf@gnu.org> <20201001141144.GO4797@protected.rcdrun.com> <20201001160136.chwmpollk4d3qc2e@Ergus> <20201004175447.GG15516@protected.rcdrun.com> <87362tvnil.fsf@gmail.com> <20201004194815.GH15516@protected.rcdrun.com> <11EB917D-3276-4D34-8DCD-2336E8062950@mit.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38211"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/1.14.0 (2020-05-02) Cc: Ergus , Fermin , Caio Henrique , Noam Postavsky , Emacs developers , Karl Fogel , Stefan Monnier , Eli Zaretskii To: Qiantan Hong Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Oct 05 05:54:55 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 1kPHaR-0009rY-8E for ged-emacs-devel@m.gmane-mx.org; Mon, 05 Oct 2020 05:54:55 +0200 Original-Received: from localhost ([::1]:39476 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kPHaQ-0004SE-8h for ged-emacs-devel@m.gmane-mx.org; Sun, 04 Oct 2020 23:54:54 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34776) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kPHZG-0003zu-Ph for emacs-devel@gnu.org; Sun, 04 Oct 2020 23:53:42 -0400 Original-Received: from stw1.rcdrun.com ([217.170.207.13]:51039) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kPHZE-0005zA-Nv; Sun, 04 Oct 2020 23:53:42 -0400 Original-Received: from localhost ([::ffff:197.157.34.178]) (AUTH: PLAIN securesender, TLS: TLS1.2,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 000000000005A13D.000000005F7A98C0.00004BEB; Sun, 04 Oct 2020 20:53:36 -0700 Content-Disposition: inline In-Reply-To: <11EB917D-3276-4D34-8DCD-2336E8062950@mit.edu> Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/04 23:53:38 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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:257067 Archived-At: Hello Qiantan, Genious!! That is great, thank you. I have tested it. It was very easy to start editing, to expose the buffer for collaboration. Could you polish the code, then include the license and propose to Emacs developers to include it in main stream? I guess that those that need collaboration will need to start main Emacs instance on the Internet server. It should be possible to start remote instance by using ssh, without controlling in real time the remote instance. It looks very similar to Gobby editor. There shall be display of users connected. I did not connect more than one user. Jean * Qiantan Hong [2020-10-05 03:00]: > I’ve finished the initial work for a CRDT based > collaborative editing Elisp package. The .el is attached. > > The focus is on implementing the core algorithm > and evaluating performance, so no cursor indicator, > username display etc was implemented. However, > they should be easy to add and not relevant to performance > concern. > > I’ve tested it with my friends and the performance seems > reasonable. Using LogootSplit algorithm, the number of > text property changes are relatively small. > > M-x crdt-test-server starts a local server at port 1333, > and M-x crdt-test-client connects to 127.0.0.1:1333. > Or use crdt-serve-buffer and crdt-connect for arbitrary > address/port.