Show HN: Rustpad, a self-hosted online collaborative text editor
github.com
github.com
I believe this project can become a popular opensource project. It is really fast.
The Rust operational-transform library was not written by me, but it's listed on crates.io by spebern, and it's worked wonderfully so far. It seems to be a very close port of ot.js (https://github.com/Operational-Transformation/ot.js). The text transformation algorithm isn't very complicated (<700 SLOC including tests), but there's probably room for optimization!
Quick question, not trying to start a flame war just genuinely curious. Why did you pick OT over other approaches to realtime collaborative editing such as CRDTs?
However, you're breaking the back button with your redirect to a unique room. Once in a room, pressing back will join a new room. History replace instead of push should be a better choice.
can etherpad documents be exported, converted to rustpad?
What also comes to mind when editing source code is a non-browser participant which can actually run and test the code (or for other non-interactive backends, such as en external spellcheck).
That said, if you use a sequence CRDT-based editor like Yjs, this avoids the central server problem entirely. Rustpad is a small branch-off of a longer-term project / product I've been working on which requires collaborative editing, so having a central server was part of the equation from the start.
I’m curious what the larger project/product is, if you are able to share.
I’ve used ShareDB (from @josephg in this thread) for a collaborative coding project with Jupyter as the execution backend. I just geek out seeing OT/CRDT projects in the wild :)
Some feedback:
1. I was not able to change color when setting user name. (Was it some browser extension blocking it?)
2. I was not able to run your docker image on pi (arm). The error is: standard_init_linux.go:219: exec user process caused: exec format error
Works fine otherwise on other platforms.
Unfortunately the Docker image is built on an x86_64 platform.