Skip to content

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Icing

I sync your code to your students and vice versa.

Written in acceptable-quality Haskell and horrible-quality JavaScript.

PRs welcome!

No refunds.

Screenshot

screenshot showing the editor in action

Installing

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 client

Developing

If you use Nix, there's a fully functioning shell provided in client/ and server/. Just call nix-shell shell.nix in the right folder!

Client

You can also use Yarn -- yarn start watches the directory for changes, yarn build builds the project.

Server

You can also use Cabal. If you're reading this, you probably know how to operate Cabal.

Design

  • Uses WebSockets with JSON contents to quickly transfer changes between the server and its users.
  • Uses operational transformation theory[1] to achieve conflict resolution.

References

  • [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

About

A simple programming collaboration tool for classrooms with Prolog and Haskell support (latter in a branch)

Resources

Stars

2 stars

Watchers

2 watching

Forks

Contributors

Languages