All Projects → nicktogo → coeditor

nicktogo / coeditor

Licence: MIT License
Yet Another Pair Programming Package for Atom.

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects

Projects that are alternatives of or similar to coeditor

Teletype
Share your workspace with team members and collaborate on code in real time in Atom
Stars: ✭ 2,345 (+8585.19%)
Mutual labels:  atom, realtime-collaboration, collaborative-editing
Operational-Transformation
A collection of Algorithms to Synchronise changes across multiple clients using Operational Transformation
Stars: ✭ 25 (-7.41%)
Mutual labels:  operational-transformation, collaborative-editing
atom-carbon-now-sh
Atom package to open the current editor content in https://carbon.now.sh/
Stars: ✭ 15 (-44.44%)
Mutual labels:  atom, atom-package
atom-ide-crystal
Crystal IDE package for Atom using the Scry Language Server
Stars: ✭ 24 (-11.11%)
Mutual labels:  atom, atom-package
open-files
Atom package to show the open files in the tree-view panel, mirroring the functionality in Sublime Text
Stars: ✭ 15 (-44.44%)
Mutual labels:  atom, atom-package
language-rainmeter
Syntax highlighting for Rainmeter files in Atom.
Stars: ✭ 19 (-29.63%)
Mutual labels:  atom, atom-package
tabnine-atom
Atom client for Tabnine - Code Faster with the All-Language AI Assistant for Code Completion, autocomplete JavaScript, Python, TypeScript, PHP, Go, Java, node.js, Ruby, C/C++, HTML/CSS, C#, Rust, SQL, Bash, Kotlin, React, Swift, Scala, Sass, Perl, Objective C, Node JS, Matlab, Haskell, Dart, Angular. https://atom.io/packages/tabnine
Stars: ✭ 33 (+22.22%)
Mutual labels:  atom, atom-package
white-cursor
Provides a white I-bar cursor in the Atom editor for use with dark backgrounds
Stars: ✭ 13 (-51.85%)
Mutual labels:  atom, atom-package
encourage-atom
An Atom extension that adds little encouragements while you work
Stars: ✭ 24 (-11.11%)
Mutual labels:  atom, atom-package
atom-tree-view-sort
Add a sorting feature for the Atom tree-view package.
Stars: ✭ 24 (-11.11%)
Mutual labels:  atom, atom-package
set-syntax
An Atom package that creates easy Command Palette commands for setting the syntax of the current file
Stars: ✭ 24 (-11.11%)
Mutual labels:  atom, atom-package
atom-ide-d
Adds D language support for Atom
Stars: ✭ 33 (+22.22%)
Mutual labels:  atom, atom-package
atom-seti-icons
The awesome icons provided by Seti UI theme.
Stars: ✭ 33 (+22.22%)
Mutual labels:  atom, atom-package
language-mjml
Atom Editor package providing syntax support for MJML
Stars: ✭ 48 (+77.78%)
Mutual labels:  atom, atom-package
atom-standardjs-snippets
⚡ A collection of JavaScript snippets for Atom, Standard Style
Stars: ✭ 47 (+74.07%)
Mutual labels:  atom, atom-package
slate-operational-transform
Slate Operational Transform Demo (used in production at Narration Box)
Stars: ✭ 34 (+25.93%)
Mutual labels:  operational-transformation, collaborative-editing
atom-ide-scala
Scala & Dotty support for Atom IDE (🧟‍♂️ zombie repo)
Stars: ✭ 47 (+74.07%)
Mutual labels:  atom, atom-package
file-type-icons
Atom package that changes the icon for files in the Tree View and Tabs to reflect the file's type
Stars: ✭ 28 (+3.7%)
Mutual labels:  atom, atom-package
atom-inline-blame
Atom package to display blame inline
Stars: ✭ 23 (-14.81%)
Mutual labels:  atom, atom-package
atom-ide-definitions
Definitions for Atom IDE
Stars: ✭ 26 (-3.7%)
Mutual labels:  atom, atom-package

Coeditor

Yet Another Pair Programming Package for Atom.

Demo

Click to view high quality video on YouTube

demo

Usage

This package requires a server to forward changes to each clients. Currently there is no available common server yet, but it is quite simple to deploy one by your own.

prerequisite: node.js (v>=6.10.1)

  • Clone this repo
    • git clone https://github.com/nicktogo/coeditor.git
  • Install dependencies
    • cd coeditor
    • npm install
  • Start Server
    • npm start
    • By default, the server will listen on port 9090
  • Toggle package in Atom
    • install coeditor via Atom
    • modify settings in the package's settings view firstly
      • server address (with port)
      • client id which will show in indicator
      • indicator background color
      • line ending
    • open project folder in Atom
    • toggle coeditor, ctrl + shift + p then type toggle, hit coeditor: toggle
    • input session id
    • check your server console
    • disconnect, ctrl + shift + p then type disconnect, hit coeditor: disconnect

Features

  • Non-conflict collaborative text editing
  • Text highlight synchronization
  • Collaborative awareness
  • Project sync
  • File grammar sync
  • Active tab sync
  • Project's files saving and closing sync

Dependencies

Please refer to package.json for detail.

  • ot-text
  • sharedb
  • websocket-push-stream
  • ws

Known issue

  • If clients use different types for line ending (i.e. CRLF or LF) with each other, this package will cause files end up with inconsistent content. MAKE SURE ALL CLIENTS USE THE SAME TYPE FOR LINE ENDING AND SET TYPE IN THIS PACKAGE'S SETTING VIEW! (EITHER CRLF OR LF WILL DO)
  • If you encounter any other problem, you are more than welcome to open a issue in the github repo, thanks for helping me to improve this project!

TODO

  • Customized configuration (Server address, random session id or given by user) DONE
  • Broadcast disconnections to other living Atom clients DONE
  • Check socket status before using DONE
  • Broadcast server close to each Atom clients, and disconnect all clients DONE
  • Text selection background and cursor colors for different Atom clients ? DONE
  • Settings view DONE
  • Working folder files synchronization DONE
  • File operations synchronization DONE
    • save -- DONE, but limited, don't work for new file which does not have path
    • close
  • Tab sync
  • add sync tab switcher (via command or configuration)
  • Heartbeat between client and server
  • Build cloud server
  • Write spec
  • Suggestions Synchronization NO API

Tentative

  • Working folder files synchronization MOVED TO TODO list
  • Server uses in-memory storage when running, so no file content will be stored in server when it is shutdown, might change to MongoDB

Thanks

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].