From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "Perry E. Metzger" Newsgroups: gmane.emacs.devel Subject: Collaborative editing. Date: Thu, 12 Aug 2021 19:43:25 -0400 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36400"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.0 To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Aug 13 01:44:13 2021 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 1mEKMv-0009Le-9U for ged-emacs-devel@m.gmane-mx.org; Fri, 13 Aug 2021 01:44:13 +0200 Original-Received: from localhost ([::1]:33768 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mEKMt-0001fQ-3v for ged-emacs-devel@m.gmane-mx.org; Thu, 12 Aug 2021 19:44:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54620) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mEKMJ-0000zt-Gi for emacs-devel@gnu.org; Thu, 12 Aug 2021 19:43:35 -0400 Original-Received: from hacklheber.piermont.com ([166.84.7.14]:35964) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mEKMH-0007fE-Sm for emacs-devel@gnu.org; Thu, 12 Aug 2021 19:43:35 -0400 Original-Received: from snark.cb.piermont.com (localhost [127.0.0.1]) by hacklheber.piermont.com (Postfix) with UTF8SMTP id 08E45117 for ; Thu, 12 Aug 2021 19:43:26 -0400 (EDT) Original-Received: from [10.160.2.107] (jabberwock.cb.piermont.com [10.160.2.107]) by snark.cb.piermont.com (Postfix) with UTF8SMTP id C786D2DEB7D for ; Thu, 12 Aug 2021 19:43:25 -0400 (EDT) Content-Language: en-US Received-SPF: pass client-ip=166.84.7.14; envelope-from=perry@piermont.com; helo=hacklheber.piermont.com 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_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:272364 Archived-At: Howdy! For years now, pair programming has been of interest to loads of programmers, and I've done quite a bit of it myself. For a long time, I'd do this with Emacs by running Screen on a machine and having myself and whoever I was pairing with both connect up to the same Emacs (running in a terminal) that way. However, it's increasingly difficult to get the full benefits of Emacs in ordinary terminals; there are too many things a gui can do that a terminal can't. I've also discovered that many other editors (such as VSCode and Atom) seem to now have dedicated modes for doing collaborative editing, and apparently do it quite well. Indeed, many people I asked directed me to VSCode for this when I asked around about methods to do it for Emacs. (SubEthaEdit, which is now free software, also allows such things, but it is a much more limited editor.) Especially with more and more working programmers doing their jobs from home but wanting to work with colleagues far away, it would seem like having truly good support for collaborative editing baked in to Emacs by some means would be a good idea. I know there have been some experiments with collaborative editing modes in the past that were written purely in Elisp but none seem to be currently maintained and I'm not sure if any were actually very good to begin with. Anyone have thoughts on how one could get Emacs to be a really top flight collaborative editing environment, especially for programmers? Just to be clear, one would want both programmers to be in distant locations, but to get essentially the same view of the file being edited, the same view of any UI elements like popups, and to be able to control the keyboard and mouse more or less simultaneously. Presumably one of the two Emacsen would be the primary one and the other one just a remote display, though other architectures are possible. Obvious design alternatives are dealing with some sort of quite literal display sharing mechanism in which a VNC-like protocol is used, a slightly more "semantically" based display sharing protocol in which a remote display is sent a series of high level commands about updates, some sort of more literal collaborative editing in which diffs to text get sent back and forth (but this would not make it easy for both programmers to see the same view of the text, including popups etc.), and there are probably other places in the design space. Perry