GitHub - typeintandem/tandem: Typing in Tandem. Decentralized, cross-editor, col...
source link: https://github.com/typeintandem/tandem
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Tandem
Tandem is a decentralized, collaborative text-editing solution. Tandem works with native text editors, works across different editors, and uses peer-to-peer connections to facilitate communication.
Tandem exists as a set of plugins for native text editors. We currently support Sublime Text 3 and Neovim. We also unofficially support Vim.
Collaborating is as easy as installing the plugin on your editor and creating a Tandem Session. Invite other people to your session, and get typing in tandem!
Installation
Requirements
Tandem is currently supported on Mac OS X - it may work on Linux, but use at
your own risk.
To use Tandem, your environment must have python3
and node.js
installed.
Plugins
Please follow the installation guides for your plugin of choice:
How it Works
Tandem is split into four components: the editor plugins, the networking agent, the conflict-free replicated data type (CRDT) solution, and the rendezvous server.
Editor Plugins
The plugins interface with the text buffer in your plugin, detecting local changes and applying remote changes, and allowing users to create, join and leave sessions. Each plugin has its own repository and code.
Agent
The agent establishes connections between other peers connected to your collaborative session. It takes messages from the editor plugin and broadcasts them to all peers, and with the help of the CRDT instructs the editor to apply remote changes to your local text buffer.
CRDT
The CRDT is used to represent the state of your local document, and transforms document edits into operations that can be applied remotely, without conflicts. We submit these conflict-free operations to other peers via the agent.
Rendezvous Server
The rendezvous server is used to help establish peer-to-peer connections. It server notes the connection details of any peer that joins a session. When any subsequent peer wants to join, the server provides the connection details of all other peers in the session so that they can communicate directly with each other.
Note: Peer-to-peer connections cannot always be established. As a convenience
to the user, the rendezvous server will also act as a relay to send data
between agents when this happens.
If you wish to disable this behaviour, you can do so by disabling the
USE_RELAY
flag in: agent/tandem/agent/configuration.py
License
Copyright (c) 2018 Team Lightly
Licensed under the "Lightly-Modified Apache License", a variant of the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
See LICENSE.txt
This license is essentially the Apache License 2.0, except for an added a
clause that requires you to use your own servers instead of ours if you do
modify Tandem.
You can also modify this in the configuration file at:
agent/tandem/agent/configuration.py
Authors
Team Lightly
Geoffrey Yu, Jamiboy
Mohammad and Sameer
Chitley
We are a team of senior Software Engineering students at the University of
Waterloo.
Tandem was created as our Engineering Capstone Design
Project.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK