Thesis · Nominated for highest honours
Many people, one file, zero conflicts
My final degree project: several people edit the same code at once inside a Moodle course, with no conflicts and every change published as an event.
How it works
CRDTs and events, end to end- Moodle plugin The editor lives inside the course, with Moodle's users and permissions.
- Hocuspocus + Yjs Syncs edits with CRDTs over WebSocket.
- Kafka Every change is published as an event for processing.
- Selenium E2E tests with up to 10 users editing at once.
Why I built it
I wanted a real distributed systems problem: concurrent editing where latency and event order matter, built into a platform students already use.
What it taught me
- CRDTs solve convergence, but not presence or permissions: those need their own design.
- Testing with 10 real browsers at once teaches more than any unit test.
Built with
- Kafka
- Yjs
- Hocuspocus
- WebSocket
- Moodle (PHP)
- Docker Compose
- MariaDB
- Selenium