From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Tim Cross Newsgroups: gmane.emacs.devel Subject: Re: Collaborative editing. Date: Fri, 13 Aug 2021 15:32:25 +1000 Message-ID: <87lf55285u.fsf@gmail.com> References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="12594"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: mu4e 1.6.3; emacs 28.0.50 To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Aug 13 08:04:30 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 1mEQIw-0002xX-Mk for ged-emacs-devel@m.gmane-mx.org; Fri, 13 Aug 2021 08:04:30 +0200 Original-Received: from localhost ([::1]:40166 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mEQIu-0001TD-OK for ged-emacs-devel@m.gmane-mx.org; Fri, 13 Aug 2021 02:04:28 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56628) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mEQI3-0000n6-7u for emacs-devel@gnu.org; Fri, 13 Aug 2021 02:03:35 -0400 Original-Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]:38624) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mEQI1-0003e6-N6 for emacs-devel@gnu.org; Fri, 13 Aug 2021 02:03:35 -0400 Original-Received: by mail-pl1-x629.google.com with SMTP id a5so10483044plh.5 for ; Thu, 12 Aug 2021 23:03:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:subject:date:in-reply-to:message-id :mime-version; bh=l3kajM/HpeRdMqul18RxT4Xoi2zQXJBCIs7RYuClPDQ=; b=AVSCrneCgXVDydut+zue+ClsQTnh0N0fphm3FTBHaX4bfqUL0IzuIUQaD8i9Cpr8vw sCCEgAGIxBKHDMqpmMF5WiYM8mhUALWmhwshzp8t+8eiqwh1iYnz9NJfuwFYjv1cOKPZ 9GbYQN3fqrRYtLRNI0wBkHgkNgRRDHu9bOPVF0HxdBA2tZ4i40scktkHfvvvLOyjBFrm vzvWg386ncW9efxboAuhNun4V64GzUhzuJSB6R+XMlO59kdMHnzqwxmZvc5Mk9DjSP5f 33PN8IQIulKzGGtWiUpZkRaRfKDkSaqjKOo40f0gnUqZwy4R1szcX9Q/JlFeUkl9CEhq AwdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:subject:date :in-reply-to:message-id:mime-version; bh=l3kajM/HpeRdMqul18RxT4Xoi2zQXJBCIs7RYuClPDQ=; b=SWfzG5VSu6xWgKUlpTnGgSd8G7LEP2bCFP4cW8xVd0e45JoM7JJ6o1fI9rdy/mawQl 8zos7w3x/uFQZlZG0z8FM34RiXJWY9MpPNSaNjEUFeb6/AF+QdPpYe+NM4qiEzTW+E3W EGQ3K2ASGaHJHBZg+cdHemEGEl6KrlEvI1qKGGhiXK5QYWZMLzxdFGY3WsLAXmK393ss sHO0kqozO9IgF4Hnecdf5/ONgcVvqUCF4n6IRvCsmw0zUK4IOlT5iKkTJCmqPChT/flm 4C1mVx2DYLLWxsCZh5esZRLoYGXKRtEky3KuP+JZ28SEJhBUxlVtYgfcR8/9p/U+/192 H04A== X-Gm-Message-State: AOAM5307TUyu0Cl5mujOh95BjyqS5GWDnVgHZRBs9qZgI87+K6UovNqB zZ9dV4KvmZbH/kbKxDYG/3vE6shZo/Y= X-Google-Smtp-Source: ABdhPJwYQRN5jr82qTQOKJnOxBvnn4zHI7CGQSORQaddII+eeTVTSM9K0jScKstW/ps4fNxGTSNrZw== X-Received: by 2002:a05:6a00:16c6:b029:32d:e190:9dd0 with SMTP id l6-20020a056a0016c6b029032de1909dd0mr852263pfc.70.1628834611112; Thu, 12 Aug 2021 23:03:31 -0700 (PDT) Original-Received: from tim-desktop (106-69-118-244.dyn.iinet.net.au. [106.69.118.244]) by smtp.gmail.com with ESMTPSA id n35sm726906pfv.152.2021.08.12.23.03.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Aug 2021 23:03:30 -0700 (PDT) In-reply-to: Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=theophilusx@gmail.com; helo=mail-pl1-x629.google.com 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, 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:272368 Archived-At: "Perry E. Metzger" writes: > 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. > Just as another data point, I've done this similar to your screen example (except we used tmux). We also used spacemacs, which has it's 'hybrid' mode, which supports both traditional Emacs key bindings and Evil, which was handy because the other user was not an Emacs user, but they were familiar with VI. It worked OK, but was definitely not as 'polished' as VSCode's remote collaboration/editing mode. The VSCode model does work very nicely. A remote/pair programming mode for Emacs would be nice. What would be very nice is if it was possible for Emacs to leverage off the same protocol as VSCode. It would be very nice if you could pair program with someone who is using VSCode while you are using Emacs (and vice versa). One of the limitations with the screen/tmux model is the expectation both parties are Emacs users. It is rare I find many other Emacs users on teams I've worked with. In the last few years, VSCode and Atom seem to be far more common.