I sync your code to your students and vice versa.
Written in acceptable-quality Haskell and horrible-quality JavaScript.
PRs welcome!
No refunds.
If you use the Nix package manager, use the following commands:
nix-build -A icing-server -f server/default.nix # builds the server
nix-build -A icing-client -f client/default.nix # builds the clientIf you use Nix, there's a fully functioning shell provided in client/ and server/.
Just call nix-shell shell.nix in the right folder!
You can also use Yarn -- yarn start watches the directory for changes, yarn build builds the project.
You can also use Cabal. If you're reading this, you probably know how to operate Cabal.
- Uses WebSockets with JSON contents to quickly transfer changes between the server and its users.
- Uses operational transformation theory[1] to achieve conflict resolution.
- [1]: SUN, Chengzheng, et al. Achieving convergence, causality preservation, and intention preservation in real-time cooperative editing systems. ACM Transactions on Computer-Human Interaction (TOCHI), 1998, 5.1: 63-108. Available from: https://www.cs.cityu.edu.hk/~jia/research/reduce98.pdf
