Yjs Realtime Multiplayer Multiwiki test successful! Demo soon!

This is just a (small) brag that I was able to successfully test my multiplayer/multiwiki server plugins today! @saqimtiaz and I were able to explore 3 separate wikis, and see each other’s real-time edits in the editTemplate and in active Streams nodes.

We discussed some of the use-cases for these new realtime and multiwiki features. This could include things like a synced set of notes taken during a Zoom meeting (or other presentation) where the participants could ask each other questions and source URLs for each other via the wiki-text-entry and not interrupt the presenter’s flow. Or an image pin-board for presenting concept-art or organizing photos or images. We also considered the ability to live-annotate an existing wiki, like a copy that includes the official tiddlywiki.com Docs. This would allow many users to add Stream nodes/annotations to existing documentation tiddlers, and then a few “power users” to use those notes to prepare updates to the docs.

There are still a few bugs and “pain-points” involved in the setup. Every time I restart the server the “Yjs document” that stores & communicates all updates gets recreated. Any wiki open in a tab that reconnects then gets ALL tiddlers as incoming updates. I eventually plan on persisting the Yjs document to a database next to the wiki, & then reloading it and only updating tiddlers from the initial boot that have changed.

There are also a few things about the UI that do not behave well when receiving programmatic tiddler updates. Due to a quirk in the Syncer Task handling, system tiddlers are synced before “normal” tiddlers. That means when you create a brand-new draft, the $:/StoryList actually gets saved first (& communicated to other users), before the new Draft of tiddler gets synced. On the other users’ screens, the new Draft is rendered with the normal viewTemplate, not the usual editTemplate. If any user drags & drops to reorder the $:/StoryList, then the new Draft of tiddler is re-rendered correctly.

This thread is to announce that we will be doing an official Beta Demo on the TidldyWiki5 Discord server at some point this weekend. More than one additional user would be great to test, and I’m sure it will expose further bugs (caught one while testing with saq).

We are working on a schedule for the demo atm, and would love any ideas or suggestions (we plan on videoing the demo). If anyone is interested in a small personal demo, find me on Discord as @Telarus /@Josh F: Discord

Joshua Fontany


:slight_smile: Let me know when you have a better idea on a specific time and I’ll be happy to help with testing if I can be near a computer.

In terms of an idea for a demo, I actually created a stupid tic-tac-toe game for my kids on BOB - don’t know if I still have it, but something like that would make a cool demo (meaning on the same wifi we could all play realtime against each other). There was a separate thread where @Mohammad was asking about Chess - it doesn’t exist yet, but while not the most practical, gaming (like cards, board games, etc) would be one kind of use-case I’ve explored with BOB (Is it Possible to Implement a Chess Game in Tiddlywiki)


Very cool demo @joshuafontany, thank you. So many ideas percolating in my head now.

1 Like

This is pretty awesome! For our critical code/data literacy curriculum we usually introduce non coders to how hypertext has changed reading, with Hypothesis, and writing, with HedgeDoc and TW. And then tool that bridge such ecosystems is Pharo/GT. TiddlyWikiPharo has some messages (utilities) that allow to convert a HedgeDoc url to a Markdown tiddler. But having the possibility to edit a wiki in a collective way would provide the realtime multiuser experience of HedgeDoc Markdown with power of TiddlyWiki and WikiText. I missed this post, but I would like for sure attend to another demo.

Keep the good work.

Thanks for the comments & interest, Offray! I have since discovered that some of the syncing issues experienced were due to race conditions in the “startup code” in the browser. This forced me to completely re-write this plugin. But it seems much more stable now, and I am working out the new “login/auth” flow. I am experimenting with this during down-time at the “day job” so am not sure how long until the next Demo…

Joshua Fontany