Show HN: Yboard is a multiplayer desktop-like workspace based on CRDT (github.com)
I've always been curious about real-time multiplayer user interfaces.
When I found out about CRDTs and Yjs[1] I thought they could serve as a solid base for a project like that.
So I built this pretty simple desktop-like UI (heavily inspired by lifeat.io) and used Yjs to replicate the whole UI state among multiple peers, creating the experience of a unique interface.
Try online: https://yboard.lol
32 comments
[ 0.25 ms ] story [ 67.9 ms ] threadTouch support is definitely something I want to add for the canvas and the window positioning/resizing too.
Yjs is built to allow you to switch easily between providers so it shouldn't be too much trouble to make the change.
[0] https://github.com/yjs/y-webrtc [1] https://github.com/felipeleivav/yboard/blob/main/src/service...
Last year I experimented with combining Yjs with PouchDB/CouchDB to achieve automatic conflict handling with a multi master type architecture and eventual consistency. It worked brilliantly!
I think it’s because there is just generally so much hype around “real-time” collaborative apps at the moment. But the reality is people spend much more time working async and merging changes later. I suppose what’s particularly brilliant with CRDTs is that they handle both use cases very well, you don’t have to have two different systems.
.. and can equally be used to make CRUD if you wanna.
I'm unclear how much of this is just a function of the 'talk' that we hear. For cultural reasons building frontend web-apps has bigger communication share than e.g. embedded software. Something similar might apply.
Alternatively, CRUD apps are more the domain of enterprise SW which has not traditionally been where innovative software engineering has been done.
The problem is when it's done with a database and people cannot see all the information at once. So they cannot see which records other people are working on and coordination is problematic.
A traditional CRUD web app in a shared desktop is a poor man solution that works with parallelism one.
Multimaster CRUD would be the same thing accessed by different people on different computers? 3270 terminals, Windows 95 client/server applications, traditional web and SPAs. I might be wrong but the problem is always who's working on what and how to solve that. Plenty of money thrown to that: management is there also to solve that problem. Talking with colleagues is another part of the solution.
Show something cool on HN and get hugged to death :)
Websocket server went down but already fixed that.
Thanks for testing.
synchronizing after offline editing is the main reason to use CRDTs, but i don't see offline mentioned at all in the readme. (demo is currently hugged to death, so i can't test.)
Kinda feels like the modern version of Zawinksi's law: http://www.catb.org/jargon/html/Z/Zawinskis-Law.html