Collaborative Editor in Rust

21 June 2019

I've been experimenting with techniques for collaborative editing in Rust recently and I'd like to share my first functional prototype with you.

You'll probably want to make the video full screen to see it in action. There is no audio.

Download

Note

Implementation

The demo uses Rust and WebAssembly, and I implemented it using a conflict-free replicated data type (CRDT) based on LOGOOT, which I modified to work with variable-sized strings rather than individual characters or lines. I will explore the implementation and my reasons for this choice in a future blog post (you can subscribe via rss if that's of interest), but for now, I'm just happy to mark this small milestone.

Next steps

I plan to develop the code further and have been particularly interested in designing a wiki around collaborative editing.

It turns out designing a collaborative tool is not as simple as slapping a multi-user textarea on an existing product. It has implications for the user interface, workflows, data storage - it affects the whole project.

This fledgling project is called TamaWiki, after our cat Tama.

If you'd like to chat about it's development or just follow along, please join the mailing list.