All Projects → typeintandem → Tandem

typeintandem / Tandem

Licence: apache-2.0
Typing in Tandem. Decentralized, cross-editor, collaborative text-editing!

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Tandem

nvim
Repository for the Tandem NeoVim Plugin
Stars: ✭ 23 (-96.61%)
Mutual labels:  peer-to-peer, decentralized, collaboration, macosx, collaborative, collaborative-editing
sublime
Repository for the Tandem Sublime Plugin
Stars: ✭ 22 (-96.76%)
Mutual labels:  peer-to-peer, decentralized, macosx, collaborative, collaborative-editing
Yjs
Shared data types for building collaborative software
Stars: ✭ 5,894 (+769.32%)
Mutual labels:  collaboration, collaborative-editing, peer-to-peer, decentralized
Text
📑 Collaborative document editing using Markdown
Stars: ✭ 282 (-58.41%)
Mutual labels:  collaboration, collaborative-editing, collaborative
Subethaedit
General purpose plain text editor for macOS. Widely known for its live collaboration feature.
Stars: ✭ 1,183 (+74.48%)
Mutual labels:  collaboration, collaborative-editing, macosx
Etherpad Lite
Etherpad: A modern really-real-time collaborative document editor.
Stars: ✭ 11,937 (+1660.62%)
Mutual labels:  collaboration, collaborative-editing, collaborative
field-manual
The Offical User's Guide to OrbitDB
Stars: ✭ 178 (-73.75%)
Mutual labels:  peer-to-peer, decentralized
portal
🔗 zero-config peer-to-peer encrypted live folder syncing that respects your `.gitignore`
Stars: ✭ 284 (-58.11%)
Mutual labels:  peer-to-peer, decentralized
Oorja
[archived] effortless video-voice chat with realtime collaborative features. extensible using react components 🙌
Stars: ✭ 270 (-60.18%)
Mutual labels:  collaboration, peer-to-peer
ircpdb
Remotely and collaboratively debug your Python application via an IRC channel.
Stars: ✭ 59 (-91.3%)
Mutual labels:  collaboration, collaborative
Faraday
Faraday introduces a new concept - IPE (Integrated Penetration-Test Environment) a multiuser Penetration test IDE. Designed for distributing, indexing, and analyzing the data generated during a security audit.
Stars: ✭ 3,198 (+371.68%)
Mutual labels:  collaboration, collaborative
Firestr
The Grass Computing Platform
Stars: ✭ 329 (-51.47%)
Mutual labels:  collaboration, decentralized
mytosis
🔀 A peer-to-peer data sync framework
Stars: ✭ 19 (-97.2%)
Mutual labels:  peer-to-peer, decentralized
hfos-legacy
Hackerfleet Operating System
Stars: ✭ 28 (-95.87%)
Mutual labels:  decentralized, collaboration
Layr
A decentralized (p2p) file storage system built atop Kademlia DHT that enforces data integrity, privacy, and availability through sharding, proofs of retrievability, redundancy, and encryption, with smart-contract powered incentive scheme
Stars: ✭ 90 (-86.73%)
Mutual labels:  peer-to-peer, decentralized
numerifides
A proposal for a system of decentralized trust, built on an open, public blockchain.
Stars: ✭ 14 (-97.94%)
Mutual labels:  peer-to-peer, decentralized
Decentralized Internet
A SDK/library for decentralized web and distributing computing projects
Stars: ✭ 406 (-40.12%)
Mutual labels:  peer-to-peer, decentralized
Infinit
The Infinit policy-based software-defined storage platform.
Stars: ✭ 363 (-46.46%)
Mutual labels:  peer-to-peer, decentralized
Wirehub
🌍 Decentralized, peer-to-peer and secure overlay networks
Stars: ✭ 459 (-32.3%)
Mutual labels:  peer-to-peer, decentralized
Orbit Db
Peer-to-Peer Databases for the Decentralized Web
Stars: ✭ 6,381 (+841.15%)
Mutual labels:  peer-to-peer, decentralized

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.6+ and node.js installed (tested and confirmed working on node.js v7.7.4).
python3.6+ is a requirement for our agent code and node.js is required by our CRDT.

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.

Instead of reinventing the wheel and writing the CRDT ourselves, we leveraged the work done by GitHub's team working on Teletype. We used their CRDT under the hood and instead focussed our efforts on integrating the CRDT with different editors.

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

Terms of Service

By using Tandem, you agree that any modified versions of Tandem will not use the rendezvous server hosted by the owners. You must host and use your own copy of the rendezvous server. We want to provide a good user experience for Tandem, and it would be difficult to do that with modified clients as well.

You can launch the rendezvous server by running python3 ./rendezvous/main.py. Change the address of the rendezvous server used by the agent in the configuration file to point to your server's host. This file is located at: agent/tandem/agent/configuration.py

License

Copyright (c) 2018 Team Lightly

See LICENSE.txt

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].