TiddlyWiki / TiddlyWiki5

A self-contained JavaScript wiki for the browser, Node.js, AWS Lambda etc.
https://tiddlywiki.com/
Other
8.09k stars 1.19k forks source link

collaborative editing with y.js #2991

Open micahscopes opened 7 years ago

micahscopes commented 7 years ago

Hey, I'm new to tiddlywiki development. I'd like to implement a basic collaborative editing plugin using y.js.

Right now, my basic idea is to have y-js shares for each tiddler, and to attach to them upon editing. This way, if you open a tiddler to edit while someone else is also editing it, their realtime changes should display.

I hadn't really thought about authentication or identity stuff for this plugin, other than keeping it simple and basic, like requiring a shared password to edit/save, or letting users give show display name so that people can see who's participating.

Originally, I wanted to use together.js, but I saw that y.js works over WebRTC. I like this better. Even though together.js has some really nice features, I think WebRTC, and the potential for using this without a server, is more important to me.

So my first question is: what's a clean way to hook into the existing editor? Are there any good example plugins I could mimic? For example, if I wanted to run some javascript whenever an editor is open, where would I do this? So far I've looked at the Ace editor plugin, but this makes a whole new editor.

micahscopes commented 7 years ago

Okay. So I'm realizing that probably the best way of handling this is to make a custom editor engine.

CodaCodr commented 7 years ago

What about (new) http://prosemirror.net/ ?

micahscopes commented 7 years ago

@CodaCodr very cool, but it's centralized!

Arlen22 commented 7 years ago

Centralized? Isn't it in-browser?

pmario commented 7 years ago

I think WebRTC, and the potential for using this without a server, is more important to me.

WebRTC still needs signalling servers to establish a connection between 2 browsers.

micahscopes commented 7 years ago

I agree that you'd use a server for WebRTC, but it wouldn't be necessary ( https://github.com/cjb/serverless-webrtc).

More importantly, a signalling server just gets the peers in connection with each other. It's doesn't act as a central hub for updates.

On Mon, Oct 30, 2017 at 2:41 PM, Mario Pietsch notifications@github.com wrote:

I think WebRTC, and the potential for using this without a server, is more important to me.

WebRTC still needs signalling servers to establish a connection between 2 browsers.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Jermolene/TiddlyWiki5/issues/2991#issuecomment-340561012, or mute the thread https://github.com/notifications/unsubscribe-auth/AAXylhgG-VNHKFI4OhYv-1hOCUTQpETcks5sxiZzgaJpZM4PzD_R .