Adapt a collaborative markdown editor to TW: Quill? Hedgedoc?

Hi community,
for some time, I would have liked to have a way to cooperate live to edit tiddlers in TW - like on etherpad.

Of course it would be best if such an editor could handle wiki-text directly but perhaps a markdown-editor could be an alternative. Some time ago I discovered quill.js yesterday I stumbled upon hedgedoc.org.

Do you think one of these has the potential to build an external platform that could be used within TW. That means it should be possible to

  • create a pad from TW,
  • show it as an IFrame during collaboration and
  • import the text and turn it into a tiddler when its ready.

@JanJo I have long felt some hybrid collaboration and published tiddlywiki sites would be a way to enhance collaboration. Hybrid being tiddlywiki being published with “embedded” collaborative tools. It is of course helpful if the shared content can then be incorporated into the wiki as needed.

  • There are some chat services already like this.

There is no reason in my view not to use TiddlyWiki as the glue between multiple solutions. I understand your idea correctly, to provision some services precisely so these collaborative features can be embedded in otherwise static TiddlyWiki’s is a really good idea, especially if we find the right solution.

For those that would be concerned about going outside the single file model, I would suggest actually all this would be is a service TiddlyWiki’s could use to allow collaboration to occur perhaps one tiddler at a time or for a subset of tiddlers.

I can imagine having drag and drop links to JSON files for import of resulting content, perhaps with a version stamp or something even more automatic.

Thanks for sharing.

I think this is why a format which allows importing the content of the IFrame at the end is vital. Iframes with etherpads are possible today already.

The idea would be to have a plugin linking to a default collaboration-server.

2 Likes

I think that something among the lines of Y.js would be a worthy exploration here.

I am able to implement this in Demo of a new WYSIWYG editor: slate-write (unstable alpha stage) , maybe use GitHub - toeverything/blocksuite: 💠 BlockSuite provides building blocks for collaborative applications. in the future.

But I don’t have a use case for realtime collaborating, I use git to collaborate with GitHub - tiddly-gittly/TidGi-Desktop: TidGi is an privatcy-in-mind, automated, auto-git-backup, freely-deployed Tiddlywiki knowledge management Desktop note app, with local REST API. 「 太记 」是一个基于「 太微 TiddlyWiki 」的知识管理桌面应用,能保护隐私内容、高级自动化、自动Git云备份、部署为博客,且可通过RESTAPI与Anki等应用连接。(迭代开发中欢迎试用,开发进度见下方链接)(Under active development, see website below for details) recently.

1 Like

Thanks for the links. I see there that BlockSuite uses Yjs, the library I pointed to, so it seems that brings abstractions over Yjs to bring collaborative editing/workflows, as stated in their repo:

With BlockSuite, you can build complex applications with fine-grained collaborative features, without going down the rabbit hole of rich text editors and conflict resolution algorithms.

Our synchronous collaborative edition use case is still far in the radar, as we, in the Grafoscopio community, go from synchronous to asynchronous edition/collaboration (and vice versa) by combining HedgeDoc with TiddlyWiki using MiniDocs, TiddlyWikiPharo and Fossil SCM.

Maybe we’re going to smooth the process via some chatbot that you can use to say something like wikify hedgeDogUrl and it answers you back the tiddler url of such document or fossilize tiddlerUrl and gives you back the tiddler in the light/extensible STON format inside a fossil repository (as exemplified in this tiddlers serialized in STON for our TTRPG wiki). So, our path to syn/async collaborative edition will be mediated via chatbots for our workshops, without entering in the (noisy) JavaScript development world. But is good to have something in the radar to make the experience smoother, if needed.

2 Likes

Very interesting input @Offray,
Rethinking all this half a year after the initial post, the backend-question is more in my scope - because (correct me if I am wrong!) interaction has to happen on a server.
I have installed yunohost and was happy to see how easy it is there to set up cryptpad, etherpad and other things I would like to iframe in TW excalidraw.
Specially regarding the implementation of TW in yunohost there is work to do to make use of the authentication features it provides. But I think this could be a basis to allow to host such a setup without being a genius.

Yunohost is a pretty interesting project, despite my approach being different and is more about using files instead of APIs for composability, kind of similar to what is described in Composability with other tools:

Files allow interoperability to emerge retroactively. New apps can come along and implement the file formats of other popular apps, uplifting their file format into a de facto protocol. This has happened many times, from .doc, to .rtf, to .psd. Competing products are able to get off the ground by interoperating with incumbents. New workflows can be created permissionlessly.

In our case, we try what we call an “interstitial programming” approach, trying to extend the tools from the space between them, working in the tools that interconnect them, instead of from inside, working within their internal source code. It has been pretty agile and useful in our experience. One example is our connection between Pharo and TW, which is done via the JSON representation of the Tiddlers, which allow us to read/write them from/to TW and manipulate them lively inside Pharo. In this example, JSON is the file format that connects these two tools, allowing us to program TW without using JavaScript. We also avoid most of the server complexity in such way and the future chatbot, which uses a server, would be a single connection interface between several apps/formats, even if the user don’t have a single authentication between different services like in Yunohost.

Is nice to share those different approaches about how to enable more collaboration between TW users and between TW and other tools. Thanks for the talk and ideas/tools exchange. Regarding excalidraw, I think I’m going to use tldraw plugin for TiddlyWiki:

https://tiddly-gittly.github.io/tiddlywiki-whiteboard/

1 Like

The whiteboard is really great :+1: :rocket:, thanks for sharing! But I fear this does not allow cooperation - or does it? Cooperation is why I want to have a backend like yunohost.

No. I deleted The multiplayer part to reduce its size.

Multiplayer requires a centralized server as host. Maybe later there can be a community service for this. Then i can add the multiplayer back, and link to it.

1 Like

I don’t think tldraw allows collaboration in real time. Our collaboration models are go from synchronous to asynchronous or viceversa using different tools and I plan to bind them with chatbots, so there is no real time collaboration on drawing soon. But, if we implemented it, probably it would be via something like BlockSuite or Yjs.

Hi @Offray https://beta.tldraw.com/ allows collaboration. @linonetwo it would be a great christmaspresent to have this. Could it be possible to this with the possibility to configure on the which Server to collaborate?

I haven’t read through it, because I don’t need multiplayer features. Maybe someone will take this task in the future… I’ll be willing to give advice if someone is going to make PR.

1 Like