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: Emacs + Etherpad compatibility? (was: Question collaborative editing.) Date: Fri, 02 Oct 2020 13:48:06 -0500 Message-ID: <87blhkbh21.fsf_-_@red-bean.com> References: <219042AC-556D-48CC-8920-82D9BF2BD3AA@aol.com> <3A81FB67-A558-4281-8285-CDD9B01033E3@posteo.net> <1C949FC9-6023-467E-99EC-75D57B08AFB0@gnu.support> <20200929124513.fd745r2txowwbiir@Ergus> <87blho7af9.fsf@red-bean.com> <20200929215849.zg4wzytbrwx2b7ih@Ergus> <84B86B7C-81F0-42DF-894C-BF577E4B3D6E@mit.edu> <20200930001333.g6b3mqa4mdsoxiue@Ergus> <87r1qjzp91.fsf@red-bean.com> <20200930131931.scdkrx46vylpi4c3@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="35116"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Qiantan Hong , Fermin , Jean Louis , Noam Postavsky , Emacs developers , Stefan Monnier To: Ergus Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Oct 02 20:49:06 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 1kOQ78-0008z6-1M for ged-emacs-devel@m.gmane-mx.org; Fri, 02 Oct 2020 20:49:06 +0200 Original-Received: from localhost ([::1]:47918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kOQ77-00057L-4e for ged-emacs-devel@m.gmane-mx.org; Fri, 02 Oct 2020 14:49:05 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58546) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kOQ6T-0004GB-8W for emacs-devel@gnu.org; Fri, 02 Oct 2020 14:48:25 -0400 Original-Received: from newsp.red-bean.com ([45.79.25.59]:51460 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 1kOQ6R-000319-15 for emacs-devel@gnu.org; Fri, 02 Oct 2020 14:48:24 -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=dewx4IrvY7XT7PvS2FLm6bEMnQHpIvVK9eRxG3oRBh4=; t=1601664502; x=1602874102; b=al3VGbVFkLaNcaAoNvFNHG7gHEywEoU1rDCDHWV9D8gcbQLFhRX6gXC3i2vi03hniHubz2PL4N Vt6kSddPg379A3gmINNaPXGFqu2zXoZOa890/VuUoydUzLCFevVddkZ9+NsguOny58ZxT7ZEUFx7t mgvlWF+2wSNgLroyLdxsWb14LUR0xystuFXn2Q9krsCrcLhkWn9jdnDMXJlO72rEwb7vftk0n5OVv 62VtyU9ezVy3Kz0H3g7i/kFtcKBdE5b9GJyId1KlsLLTfs75bBo5ZMYK428+Q8xhHVYCVvNS9KcU1 eB5brb7WFatt3Kjn8mfl4rcPmgM9wFYoDmU3g==; Original-Received: from 99-112-125-163.lightspeed.cicril.sbcglobal.net ([99.112.125.163]:41874 helo=floss) by sanpietro.red-bean.com with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kOQ6B-0001ai-Ph; Fri, 02 Oct 2020 18:48:07 +0000 In-Reply-To: <20200930131931.scdkrx46vylpi4c3@Ergus> (Ergus's message of "Wed, 30 Sep 2020 15:19:31 +0200") 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/10/02 14:48:21 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:256961 Archived-At: This discussion is exciting. I regret that I don't have to work on actual implementation, but maybe posting this thought here can be a small contribution: The fastest route to collaborative editing in Emacs might be to make an Emacs-side client implementation for the protocol used in Etherpad Lite. (I'll just call it "Etherpad" from now on, since it's the only actively maintained fork of Etherpad now as far as I know.) Etherpad is browser-based and is the most widely-used free software collaborative editor. It's been very successful. The entities it operates on are already pretty compatible with Emacs -- it's basically plain text with some simple formatting: bold, italic, underlining, strike-through, simple bullet-point or numbered lists, authorship colors, and not much else. (Even the authorship colors don't necessarily have to be represented as colors; that's just the optional display convention in Etherpad.) The protocol used by Etherpad is EasySync -- see docs here: https://github.com/ether/etherpad-lite/blob/develop/doc/easysync/easysync-notes.pdf https://github.com/ether/etherpad-lite/blob/develop/doc/easysync/easysync-full-description.pdf (Or just do 'git clone https://github.com/ether/etherpad-lite.git' and look in the 'docs/' subdirectory.) Emacs can certainly display all the things Etherpad can display. How hard would it be to implement an Emacs client library to handle the protocol? Personally, that's where I'd start if I had time to work on this. It would give us both real-time collaborative editing for Emacs, *and* Emacs users being able to real-time collaborate with non-Emacs users on the same document! This would be an enormous win for Emacs. Best regards, -Karl