From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ergus Newsgroups: gmane.emacs.devel Subject: Re: Question collaborative editing. Date: Fri, 2 Oct 2020 13:33:19 +0200 Message-ID: <20201002113319.nem6a6xjb6amh7ou@Ergus> References: <20200929215849.zg4wzytbrwx2b7ih@Ergus> <84B86B7C-81F0-42DF-894C-BF577E4B3D6E@mit.edu> <83a6x7js6y.fsf@gnu.org> <83eemji6e8.fsf@gnu.org> <20201001141144.GO4797@protected.rcdrun.com> <20201001160136.chwmpollk4d3qc2e@Ergus> <20201001165342.yyudrweicducnozn@Ergus> <87362x13v6.fsf@gmx.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="12528"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Qiantan Hong , fmfs@posteo.net, Jean Louis , npostavs@gmail.com, emacs-devel@gnu.org, kfogel@red-bean.com, monnier@iro.umontreal.ca, Eli Zaretskii To: Michael Albinus Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Oct 02 13:34:53 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 1kOJKu-00037T-WF for ged-emacs-devel@m.gmane-mx.org; Fri, 02 Oct 2020 13:34:53 +0200 Original-Received: from localhost ([::1]:50036 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kOJKt-0004Vo-WD for ged-emacs-devel@m.gmane-mx.org; Fri, 02 Oct 2020 07:34:52 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:47656) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kOJJj-0003DV-1H for emacs-devel@gnu.org; Fri, 02 Oct 2020 07:33:39 -0400 Original-Received: from sonic306-1.consmr.mail.bf2.yahoo.com ([74.6.132.40]:43547) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kOJJf-00078z-Ku for emacs-devel@gnu.org; Fri, 02 Oct 2020 07:33:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1601638413; bh=OmSN/zgOw6qtC+3zItPXFmuIvFUfmU/p7xiJfNYt3g8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From:Subject; b=b2w+nKtFKZL1tU8BTU0++AVtIFWoW+uQca44vCJ7hB8HeFATzrAWLcL12ZB9hNqZfSm9OmJbCHFxIpEl6dxrVCgWJmMw0cl6qygsNlgzH8wNOe+HWSB+jEKEy3mdw+rw8at3pO2AYo2JVU0U/KA3ohO5MmMX4wDmhfuoviZ8d5AAyGs/oZXmsJKYRKGp5RCHcpswCEa7Rl90ksEHDo6yjBHZOvNb4LfhfLyMg8eentCkF1ZzdnqqZCbSAss//3tCWncnYF6hyjER75411eIR7opwzRdZALFzyU7QfQbQg3VMsjoehTNKidxHm4J31Rjomj6QgAqN3xloDD7+k33yyQ== X-YMail-OSG: fGKeM88VM1k_twZZDuq21dsGbHSvhtokUFAHpjVN7D2RVzrrcJtuqFpskfCVFzR czq.rupWW7f7w4E9F8Bv9Fz3Q7lBFflW_EgdFBm_kVNM_8RWAlmhjJN3D9n5P5pQPctko.Aek1h4 zRLzUfLd5Icqm2Xk1o1RfX.ulYS.a19P9bdFFglMfdJ2eFN4YUAQtV0vAWj0X17OtJ4m2JvGJe7Q ZXMQv3lbQm4VKqLvKYfUZH0lmelHg7M3wGiHxG6xyrI8OaHBjARXjC6xtNACM1nCxxB_2KXghpua H2hTWp5CMoPIdQXOgdEnH9lT0GKzjdal1tIYKboNd1wuE8rY.HUmOJszFO.E3YA9Xt_NgZYhNHH6 tboJ_j.vpX5EY1RcEkt.wceNx_Dsam6aE40TALf1JQxQbARyVjWFZkpQjjeXKgvsh3j0jY7Jk3jz 6nNZMNWUXexpDmesQMWKFP9YUJZ7U_jJYrq1cph1MmZAi7EbzV7grODSrF9rdIP0RqzwZMdOR.an qeC.7g7yua54.lTtrbrHGRvFzuWZgBkyx8IFS6Mzm.d2tJynvfLLlF44gEbYBIgQKvkX6i2T83Gi VWNXUuUYPF0SxOM3pMaoO8ux68XxwZn_vNibhfAK3k_DOU.QkK3vaadf6elfoVByVDEZrS2nTsdm gNLTdhgObsYNSF2SNYKV_Iye.9ZkbCFPoSq91DQwXWM.MjMoHbEVhuqLfjUkvvKBYez2Zcs2WWXs YP83pT1kcvhl6kqxapW7ESw6fYPG1cpxRK6qv013vFdwzRUKZcr36YBMZWjVUkSn_OVDbpvIyfx3 zTeiZUaO6u0ntReTOZet2hEHY_fIKSmHeOWochgPl_ Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic306.consmr.mail.bf2.yahoo.com with HTTP; Fri, 2 Oct 2020 11:33:33 +0000 Original-Received: by smtp412.mail.ir2.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 3f310cad83675e4be796c9292bfae951; Fri, 02 Oct 2020 11:33:30 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87362x13v6.fsf@gmx.de> X-Mailer: WebService/1.1.16718 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.aol Apache-HttpAsyncClient/4.1.4 (Java/11.0.7) Received-SPF: pass client-ip=74.6.132.40; envelope-from=spacibba@aol.com; helo=sonic306-1.consmr.mail.bf2.yahoo.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/02 07:33:33 X-ACL-Warn: Detected OS = Linux 3.11 and newer [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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-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:256939 Archived-At: On Fri, Oct 02, 2020 at 09:30:53AM +0200, Michael Albinus wrote: >Ergus writes: > >>>> It is a bit more complex, because for remote editing it is not easy to >>>> establish connection in different NAP, cross firewalls, and so on. And >>>> as I said before, we don't have resources to provide a server service >>>> for this that runs "our" CRTD server. >>>> >>>> Withing the same network it still requires a sort of local service to >>>> solve the conflicts. And that also needs to be implemented... >>> >>>Well, we can start with something simple. How about implementing >>>collaboration on local area network first. I remember we had fun with >>>'talk'. Once implemented on LAN, users can then figure out how to work >>>across continents using some kind of tunnel. >>> >>>An example use-case might be: >>> >>>user1: >>>1. C-x C-f (find-file) >>>2. M-x enable-collaboration ; this generates a session-key >>>3. Share session key with collaborators via chat/email >>> >>>user2: (via Tramp) >>>1. C-x C-f /collab:session-key@ip-address:filename >>> >>>Users get cursors with different colours. >>> >>>The advantage of using Tramp is that users can always use Ad-hoc >>>multi-hops. >>> >> Yes, this is exactly my expected workflow more or less. It is p2p as I >> have mentioned before I would prefer it to be. The tramp integration is >> something way far from my capabilities, but in general that's the >> idea ;). > >I don't want to be the grinch, but pls remember what Tramp is: a library >for alternative implementations of file operations. I don't see yet how >/collab:session-key@ip-address:filename fits into the game, but maybe it >needs more details to understand. For example, which file operations >shall be treated. > Hi Michael: I don't have any clear idea yet (and don;t know the TRAMP code). But, as this will be implemented more or less as a server-client, the only thing tramp would need to do is to connect (from the client side), identify and request the file... very similar to opening an ssh file, but maling a local copy and initializing the server CRDT/OT local service as client. The rest of the process will be handled internally by the collaborative api like any other file from the Tramp's point of view. I think tramp is the preferred place to avoid creating another interface for the user (extra names, commands and so on). But actually the only part that Tramp should take care may be the initial "login" and probably the logout/close-connection. In any case this could also be implemented from outside tramp and add a condition to commands like find-file... But IMO these are just details.. we need to make it work first. >Furthermore, I also don't understand what needs to be done on the remote >side wrt collaboration. A remote file in Emacs is still a file, >connected to a buffer. All primitive file operations can be applied on >this. > In local or remote side the requirements are similar (From the tramp point of view): Server side: Start the OT/CRDT server/service Associate with a local file(s) Client side: Start the OT/CRDT server/service (as client) Connect to remote server Identify Request/create remote file copy to work locally. Associate >Best regards, Michael. > Best, Ergus