Serverless collaboration03 Mar 2019
Previously I've worked on a collaborative tool, which worked like Google Docs. This project was called crepl. Because I stopped paying for hosting of its server, that project is now offline. That made me consider: what if a collaborative editor wouldn't need a server?
The server in crepl was needed to handle the connections between all the clients and the algorithm for collaborative editing needed a central server. For both there are alternatives that do not need a server.
Browsers can connect to eachother over a network without a central server using WebRTC, of which there is a nice example here. This works well on local networks with modern browsers. Through firewalls and older browser this is less likely to work.
Crepl uses Operational Transformation and needs a central server for correctness. Algorithms for collaborative editing that do not need a central servers can be found in the conflict-free replicated data type (CRDT) research. Through the excellent Automerge project I found the RGA algorithm.
This project is serverless by not requiring any server after downloading the page. That's even fewer servers than most serverless systems.
Try the serverless collaborative editor: cljs-collab