Working solutions
- crdt.el is a collaborative editing mode by Qiantan Hong, based on the CRDT model instead of the OT model. crdt.el is available on GNU Elpa.
- If you use X then you can use
‘M-x make-frame-on-display’ (see EmacsManual:Multiple Displays) for collaborative editing or supporting newbie Emacs users remotely. See also Re: two people editing one document. The problem here is that connection issues can cause both frames to hang. - If you have emacs 23, multi-tty works like make-frame-on-display, except that each person needs to connect to your emacs. (This is somewhat similar to using screen, but each user can resize their terminal without affecting the others.) You can give each user their own colored “point” with JonathanRockway’s colorful-points mode. The connection can also be accelerated (reducing lag time over a slow connection) using mosh [1].
- Anyone have a more detailed description of how to set this up?
- xpra serves X11 windows efficiently over the net. Opening an emacs frame on a xpra server allows easy to use collaboration
- GNU Screen is a terminal multiplexer. Run Emacs in console mode (
emacs -nw) within screen for multi-user real-time collaborative editing (and much more). Works across *n*x, Mac OS X, even W32 (with Cygwin installed). Check out Bill Clementson’s awesome emacs/screen setup (see copy on http://WayBackMachine.org).- One minor problem is that screen has to run setuid root for users to share a screen session. An alternative is to use tmux for collaborative editing, which doesn’t have this requirement.
Abandoned
- Rudel is a collaborative editing extension for GNU Emacs written purely in Emacs Lisp. It is designed to support multiple protocol backends to enable interoperability with other collaborative editors.
- Obby is an open collaborative editor protocol. The reference implementation is called Gobby and is a cross-platform GTK editor. Rudel’s most complete backend implements the Obby protocol. Using this backend, Emacs can act as an Obby client and as an Obby server (possibly at the same time). Due to a limitation of gnutls-bin, the server does not support encryption. Unfortunately, connecting to infinoted, the reference implementation server, is currently broken (see Bug#30252).
- Also ebby was an attempt to work with an older version of the Obby protocol; it’s now deprecated.
- SubEthaEmacs is a (dead?) attempt to get Emacs to grok SubEthaEdit's closed collaborative editing protocol. The authors of SubEthaEdit are actively hostile to interop attempts.
- LukeGorrie wrote shbuf http://www.bluetail.com/~luke/shbuf/ which formerly required erlang for the server (since emacs didn’t have server sockets) but I think it only requires gnumacs now (xemacs doesn’t have server sockets) --ShaeErisson [new] I just found this: http://verse.blender.org/cms/Overview.573.0.html Even though it seems aimed at 3D-development, the descriptions seems to suggest that the protocol is general.
- Docsynch is an open cross-editor collaborative editing protocol that runs over IRC. Plugins exist for JEdit, vim and a few other editors, but only the JEdit version seems to be complete. Development seems stalled. (Last news item was dated 2004.)
- Egret – An extension to XEmacs.
- Shemacs is a tool implementing synchronous multi-user support for the Emacs editor using Egret, a client-server-agent framework for implementation of domain-specific, collaborative, hypertext systems.
- Conspire mode achieves realtime, collaborative editing using git as a backend. Works only over a LAN. (No activity in since 2008)
To be confirmed
- Lockstep synchronizes two frames (cursors and visible buffers) so that the “passenger” sees the edits of the “driver” in real time.
- Togetherly - cleartext simple client/server model, emacs-only
- Floobits provides real-time collaboration tools for a variety of editors including an Emacs plugin. Proprietary/commercial service. reports of problems in vim, unclear if it works well with Emacs.
- Shared Buffer by Lars Tveito. “…still at an experimental stage”. Requires quicklisp and a Common Lisp to run the server (SBCL is recommended). As of 2019-09-30, most recent commit was in April 2014, and there is one issue filed in November 2018.
Future ideas
- The Atom editor people wrote a protocol called Teletype that supposedly implements an editor-neutral robust collaborative editing protocol. They abandoned Atom and Teletype in mid-December 2022, when Teletype was still in beta, but the Teletype source repositories (javascript) are still archived on Github, so some of its pieces might be useful:
- its “string-wise sequence CRDT” (at least its design)
- perhaps the “editor-agnostic library that manages the interaction with other clients”
- conceivably also the “server-side application that facilitates peer discovery” (so clients can then communicate with one another directly)
- Tandem is another such effort. It uses the CRDT from Teletype. As of December 2023 it supports Sublime Text 3, Neovim and (unofficially) Vim. Licensed under Apache 2.0
CategoryRemoteEmacs CategoryEditing