Bi-directional linking?

499 views
Skip to first unread message

David Gifford

unread,
Jan 22, 2020, 8:51:45 AM1/22/20
to TiddlyWiki
Hi guys

Just discovered Roam (https://roamresearch.com). It's an outliner like Dynalist and Workflowy, but has bidirectional linking.

Any chance bidirectional linking like this could be added to TiddlyWiki?

Mat

unread,
Jan 22, 2020, 9:06:45 AM1/22/20
to TiddlyWiki
If I understand the concept, it should be super simple to add: just add tiddler tagged $:/tags/ViewTemplate  containing a filter showing the current tiddler backlinks. The filter could show e.g any tiddlers tagged with the current one, or any mention of it (even plain text), etc. 

<:-)

Diego Mesa

unread,
Jan 22, 2020, 9:37:06 AM1/22/20
to TiddlyWiki
Hey David,

I just saw this on Hackernews as well. I think Mat is right - this is built in to TW just not "at the forefront" (tagged with ViewTemplate).

Also the way ROAM speaks of itself "as powerful as a graph database" etc. I think we can take a lesson!

David Gifford

unread,
Jan 22, 2020, 9:57:08 AM1/22/20
to tiddl...@googlegroups.com
Hi Mat and Diego

As soon as I wrote it, I thought, "But Dave, you already do this with a tiddler tagged with viewtemplate..."

Still, I am seriously considering Roam as a replacement for Dynalist because it moves closer to a wiki feel. I have my doubts that I will change, though, Dynalist also has a lot over Roam in other areas.

Blessings,

David Gifford

--
You received this message because you are subscribed to a topic in the Google Groups "TiddlyWiki" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tiddlywiki/LUVTps01UBU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tiddlywiki+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/807935fa-1f84-4e53-8182-803f062a3203%40googlegroups.com.

HC Haase

unread,
Jan 22, 2020, 10:12:27 AM1/22/20
to TiddlyWiki


onsdag den 22. januar 2020 kl. 15.06.45 UTC+1 skrev Mat:
If I understand the concept, it should be super simple to add: just add tiddler tagged $:/tags/ViewTemplate  containing a filter showing the current tiddler backlinks. The filter could show e.g any tiddlers tagged with the current one, or any mention of it (even plain text), etc. 

<:-)

Remember we already have this in the info/references tab for every tiddler. However, this is quite "hidden"/out of reach and for my own use I often forget this is available. For this reason, I have made a snippet for my TOC/index tiddlers that in addition to a TOC for that tiddler also show backlinks to that tiddler. But I am sure it can be done much more elegant

$__tags_TextEditor_Snippet_TOC-current tiddler.json

Mark S.

unread,
Jan 22, 2020, 10:21:19 AM1/22/20
to TiddlyWiki
Reminder that the "info" button on each tiddler reveals a tab, "references" that shows backlinks also.

On Wednesday, January 22, 2020 at 6:57:08 AM UTC-8, David Gifford wrote:
Hi Mat and Diego

As soon as I wrote it, I thought, "But Dave, you already do this with a tiddler tagged with viewtemplate..."

Still, I am seriously considering Roam as a replacement for Dynalist because it moves closer to a wiki feel. I have my doubts that I will change, though, Dynalist also has a lot over Roam in other areas.

Blessings,

David Gifford

On Wed, Jan 22, 2020 at 8:37 AM Diego Mesa <dieg...@gmail.com> wrote:
Hey David,

I just saw this on Hackernews as well. I think Mat is right - this is built in to TW just not "at the forefront" (tagged with ViewTemplate).

Also the way ROAM speaks of itself "as powerful as a graph database" etc. I think we can take a lesson!

On Wednesday, January 22, 2020 at 7:51:45 AM UTC-6, David Gifford wrote:
Hi guys

Just discovered Roam (https://roamresearch.com). It's an outliner like Dynalist and Workflowy, but has bidirectional linking.

Any chance bidirectional linking like this could be added to TiddlyWiki?

--
You received this message because you are subscribed to a topic in the Google Groups "TiddlyWiki" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tiddlywiki/LUVTps01UBU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tiddlywiki+unsubscribe@googlegroups.com.

Diego Mesa

unread,
Jan 22, 2020, 10:24:44 AM1/22/20
to TiddlyWiki
David,

Ive long thought (and written in this group I believe) that if we could develop a core plugin which enables easy dynalist like behavior in TW we would really be well on our way to conquering the world!

On Wednesday, January 22, 2020 at 8:57:08 AM UTC-6, David Gifford wrote:
Hi Mat and Diego

As soon as I wrote it, I thought, "But Dave, you already do this with a tiddler tagged with viewtemplate..."

Still, I am seriously considering Roam as a replacement for Dynalist because it moves closer to a wiki feel. I have my doubts that I will change, though, Dynalist also has a lot over Roam in other areas.

Blessings,

David Gifford

On Wed, Jan 22, 2020 at 8:37 AM Diego Mesa <dieg...@gmail.com> wrote:
Hey David,

I just saw this on Hackernews as well. I think Mat is right - this is built in to TW just not "at the forefront" (tagged with ViewTemplate).

Also the way ROAM speaks of itself "as powerful as a graph database" etc. I think we can take a lesson!

On Wednesday, January 22, 2020 at 7:51:45 AM UTC-6, David Gifford wrote:
Hi guys

Just discovered Roam (https://roamresearch.com). It's an outliner like Dynalist and Workflowy, but has bidirectional linking.

Any chance bidirectional linking like this could be added to TiddlyWiki?

--
You received this message because you are subscribed to a topic in the Google Groups "TiddlyWiki" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tiddlywiki/LUVTps01UBU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tiddl...@googlegroups.com.

Rob Hoelz

unread,
Jan 22, 2020, 5:19:19 PM1/22/20
to TiddlyWiki
I added what Mat described to my wiki a long time ago, and it works pretty well!  One thing I'd potentially like to add in the future is a little more context of the backlink (so the surrounding paragraph in which a link finds itself, rather than just the title of the tiddler).

One thing I should note is that is can really slow your wiki down once you have more than a few tiddlers open - however, with the advent of indexer modules in 5.1.20, I wrote a backlinks indexer for my wiki (which I should really submit upstream), and now it's lightning fast!

-Rob

On Wednesday, January 22, 2020 at 7:51:45 AM UTC-6, David Gifford wrote:

Diego Mesa

unread,
Jan 22, 2020, 6:25:13 PM1/22/20
to TiddlyWiki
Robb!!! Pleasee!! Submit that indexer!! My backlinks are killing me! Thanks!

Rob Hoelz

unread,
Jan 22, 2020, 7:24:45 PM1/22/20
to TiddlyWiki

Now we'll see if Jeremy feels it's fit to be merged!

TonyM

unread,
Jan 22, 2020, 7:29:14 PM1/22/20
to TiddlyWiki
On this matter of the info Tabs with reverse links

Rob, will the indexer support the below examples?

The Tiddler $:/core/ui/TiddlerInfo/Listed has the tag $:/tags/TiddlerInfo whos tag pill helps you access the relevant  info tabs

$:/core/ui/TiddlerInfo/Listed

$:/core/ui/TiddlerInfo/List

$:/core/ui/TiddlerInfo/Tagging

$:/core/ui/TiddlerInfo/References


So a Quick and dirty solution is to add the following to a tiddler tagged $:/tags/ViewTemplate
Listed: {{||$:/core/ui/TiddlerInfo/Listed}}<br>
List: {{||$:/core/ui/TiddlerInfo/List}}<br>
Tagging: {{||$:/core/ui/TiddlerInfo/Tagging}}<br>
Reference: {{||$:/core/ui/TiddlerInfo/References}}<br>

And a more bespoke solution is to copy the content of the above tiddlers into your own tagged $:/tags/ViewTemplate

\define lingo-base() $:/language/TiddlerInfo/
<$list filter="[all[current]listed[]!is[system]]" emptyMessage=<<lingo Listed/Empty>> template="$:/core/ui/ListItemTemplate"/>, 
<$list filter="[all[current]backlinks[]sort[title]]" emptyMessage=<<lingo References/Empty>> template="$:/core/ui/ListItemTemplate">, 
</$list>
<$list filter="[all[current]tagging[]]" emptyMessage=<<lingo Tagging/Empty>> template="$:/core/ui/ListItemTemplate"/>, 
<$list filter="[list{!!title}]" emptyMessage=<<lingo List/Empty>> template="$:/core/ui/ListItemTemplate"/>

Regards
Tony

Rob Hoelz

unread,
Jan 22, 2020, 7:43:49 PM1/22/20
to TiddlyWiki
My indexer would only cover the "References" tiddler in your example (since it's the only one that uses the backlinks operator) - in fact, since my PR changes the backlinks operator to use the indexer, any usage of the backlinks operator in one's wiki would benefit.  As far as the others go, the current tag indexer covers the "Tagging" tiddler, and it probably wouldn't be too hard to develop an indexer for the listed operator.

-Rob

TonyM

unread,
Jan 22, 2020, 8:15:55 PM1/22/20
to TiddlyWiki
Rob,

Thanks for that info.

Regards
Tony

TonyM

unread,
Jan 22, 2020, 8:38:17 PM1/22/20
to TiddlyWiki
Folks,

Discussion

I just want to add that when it comes to linking one tiddler to another there are automatic methods as discussed already in this thread. This should satisfy most use cases, but as you know tiddlywiki is infinitely malleable.  The relationships between tiddlers need not only be automatic as in backlinks, tagging and references, but it would be quite easy to design a method to store a  nominated tiddler in a current tiddler field and update a corresponding field in the other tiddler when doing so. Similarly you could maintain the relationships in a separate data tiddler or index(s)

A field containing a single tiddler can be considered a one to one relationship, but a field capable of containing a list of titles could be a one to many. The fieldname pair (here to there, there to here) can define a relationship ie you can have multiple relationships for example one may be direct, the other a "dotted line" relationship.

The aforementioned automatic relationships found in the info tab could be used as a source for potential "hard coded" relationships, ie it helps one explore the relationships and choose those you wish to hard code, and a seperate listing of hardcoded relationships could be displayed on the tiddlers.

What are your thoughts?

Regards
Tony

On Thursday, January 23, 2020 at 12:51:45 AM UTC+11, David Gifford wrote:

HC Haase

unread,
Jan 23, 2020, 3:25:04 AM1/23/20
to TiddlyWiki


onsdag den 22. januar 2020 kl. 16.24.44 UTC+1 skrev Diego Mesa:
David,

Ive long thought (and written in this group I believe) that if we could develop a core plugin which enables easy dynalist like behavior in TW we would really be well on our way to conquering the world!

Well if you guys think Dynalist have something this valuable, can't you then make it?? Or if you don't have the abilities, then explain, convince and lobby for someone else to develop it.

Personally I have a feeling that Dynalist have some really good potential, but I haven't taken the time to really get it. could you please enlighten me on the game changer feature or concept of Dynalist??

Hubert

unread,
Jan 23, 2020, 4:06:13 AM1/23/20
to tiddl...@googlegroups.com
Great work Rob!

(...) and it probably wouldn't be too hard to develop an indexer for the listed operator.

Yes please!! +1 for an indexer for the listed operator. I'm using that to detect (the lack of) dependencies between my tasks and the filter run involving listed[], especially with "emptyMessage", is quite an expensive operation.

Best regards,
Hubert

HC Haase

unread,
Jan 23, 2020, 5:41:17 AM1/23/20
to TiddlyWiki


onsdag den 22. januar 2020 kl. 23.19.19 UTC+1 skrev Rob Hoelz:
 One thing I'd potentially like to add in the future is a little more context of the backlink (so the surrounding paragraph in which a link finds itself, rather than just the title of the tiddler).

That could be really cool

David Gifford

unread,
Jan 23, 2020, 10:52:26 AM1/23/20
to tiddl...@googlegroups.com


could you please enlighten me on the game changer feature or concept of Dynalist??

For me, the basic advantage of an outliner program (Dynalist, Workflowy, Roam) is the writing experience. Everything is in bullet points. Hit enter to start a new line, hit tab to indent, and when you hit enter for a new line, your next line is also indented to that level, etc. And by dragging the bullets you can rearrange the order and indenting of any line. So it is a really great way to write, and to order and reorganize one's thoughts on a topic. Very freeing compared to writing in TiddlyWiki: in TiddlyWiki, if you use the unordered list, you need to do shift+8 to add * or ** or *** every new line, or write loosely, use a toolbar button to add one * for every line, and manually add the extra levels of * for the lines that need it. If you don't use bulleted lists, new paragraphs require two newlines, not one, and indenting requires other actions that take one away from typing (wrapping in a span class, or using : , which only affects the first line, etc). And these delays really add up.

Another advantage of outliners is that if you have a pro account you can drag images right into it, and copy the link to insert them wherever you want. Another is that you can add tags to each line and do searches for tags across multiple outliner documents.

There was a way, probably still exists, to replicate the 'ordered list / enter for new line / tab for indent' experience in TiddlyWiki, but the cost was too high for me - it meant losing access to the editortoolbar. I think it also required a different tiddler type, and if I remember, there were other drawbacks as well associated with that aspect. If there were a way to do enter-and-tab without such a huge cost, I would use TiddlyWiki for almost everything, and would not feel much pressure to switch between Tiddlywiki and outliners. Although Roam....very enticing once they get their defects weeded out.

I hope that answers your question about the game changer features.

TonyM

unread,
Jan 24, 2020, 10:37:04 PM1/24/20
to TiddlyWiki
David,

It's not the full story but the codeMirror plugin handles tabs and new lines well. I use it when writing macros to keep them clear and well structured.

I have always being a fan of easy to use outliners. They provide a hierarchical structure. But tiddlywiki can go beyond hierarchical.

My feeling is that tiddlywiki has more than the possibility to act as an outliner, in fact I think the Code Mirror or Visual editor can help within a single tiddler. 

If you want each item in the outline to be a seperate tiddler, you do need to decide if you have an independent title or an automatically generated one behind the scenes.

I think this needs more work to define the best way to tackle outlining. Your notes are a start.

regards
Tony

David Gifford

unread,
Jan 25, 2020, 8:17:08 AM1/25/20
to TiddlyWiki
Hi Tony

I will look at the Code Mirror plugin. I don't need all the functionality of an outliner, such as dragging points to reorder them. and I don't need each new line to be a tiddler. I just need to be able for each new line to start with a * and indenting to change the * to **, ***, etc.

TonyM

unread,
Jan 25, 2020, 6:55:51 PM1/25/20
to TiddlyWiki
David,

It handles indents but not the wikitext bullets, it allows the tab key, in indent in further and further, but as its not wikitext it renders without the tabs. Perhaps we can get tabs accepted by the wiki text parser to be honored during rendering  including the forced new line.

Your you information I often find staring a line with ";" and ":" simi-colon heading, and colon indented helpful. I am keen to add a "." period that makes a paragraph (discussed elsewhere).

I note it seems to store tab characters (not yet confirmed) so I would not be surprised if we can use a macro or parsing to turn it into a bulleted list. Given it accepts tabs, perhaps a keyboard macro that inserts a tab and an * at the beginning of the text would help?

I am keen to maximise the ease of entry and organising within wiki text. You can follow a leading character such as semi-colon with a .classname 
eg 
;.classname
to apply css

Regards
Tony

David Gifford

unread,
Jan 25, 2020, 11:24:19 PM1/25/20
to TiddlyWiki
Thanks Tony for your thoughts. I did look at the Code Mirror plugin, but unfortunately I think that may be beyond me. There is only so much learning curve I can take at a time.

I am thinking of assigning * a key on my keyboard so I don't have to shift. That might be enough.

David Gifford

unread,
Jan 26, 2020, 12:34:30 AM1/26/20
to TiddlyWiki
hahaha after spending over an hour trying to figure out, unsuccessfully, how to reassign a keyboard key to insert *, I looked over at the numberpad and saw a * key.

Maya Kate

unread,
Jan 31, 2020, 9:32:50 PM1/31/20
to TiddlyWiki
That Roam demo was what made me recently want to get back into knowledge organization. Looking at self-hostable options, I decided to check back in with TW for the first time since ~2007. With the backlink footer, it's really, really close to what I want--but I'm struggling to figure out how to define a filter that will excerpt even a fixed-size chunk around the original link. (Turns out it's challenging to deal with referring to more than one tiddler at a time in your first go at the syntax.) If you end up working it out--or even if you've got ideas about how it should be done--please share. I was figuring it would be my weekend project to take another stab at. :) 

TonyM

unread,
Jan 31, 2020, 10:01:48 PM1/31/20
to TiddlyWiki
Maya,

I don't have an immediate answer but new filter operators such as split/join and regex can help. It is possible for example to extract lines from the text field and if they contain the search string display that line. Sometimes a line is a whole paragraph but if your tiddler content is well structured this may be more than enough. A little more work and you could also split the sentences (ending period). Thus you could have a toggle to show the sentence or paragraph in which the search string was found.

This is not as practical for code, but good for text.

I have however seen such excerpts being generated elsewhere in tiddlywiki. I will share if I find them.

Regards
tony

Mat

unread,
Feb 1, 2020, 7:57:23 AM2/1/20
to TiddlyWiki
Maya Kate wrote:
[...] backlink footer, it's really, really close to what I want--but I'm struggling to figure out how to define a filter that will excerpt even a fixed-size chunk around the original link. 

Most easily solved with CSS IMO. I.e transclude the full content of tiddlers or perhaps transclude and filter up until the first "newline" (to capture the first paragraph) and then addprefix <div class="myclass"> and addsuffix </div> around it. Then make a stylesheet where you define e.g the height of myclass.

If it was 2007 last time you tiddlyfiddled... you're in for a learning curve. Note that TW has been totally reworked and what worked in "TiddlyWiki Classic" (as we now refer to it) will not work in TiddlyWiki5, at least not code.

<:-)

David Gifford

unread,
Feb 1, 2020, 9:40:53 AM2/1/20
to TiddlyWiki
Hi Maya, sounds like you used the first version of TiddlyBlink, which I had called a  Roam-y experiment. In case you didn't hear, I have refined it quite a bit and it is now at https://giffmex.org/gifts/tiddlyblink.html, with an example site at https://giffmex.org/gifts/tiddlyblinkexample.html.

I am thrilled to hear my experiment got you to come back to TiddlyWiki after so much time!

I can't help you with what you are asking about, but it looks like others are helping you out. Blessings.

Maya K. Hess

unread,
Feb 1, 2020, 2:53:22 PM2/1/20
to tiddl...@googlegroups.com
Wow, thanks all! I hadn't seen TiddlyBlink and it's really snazzy--I'm going to clone my wiki to try it out. (I'd only seen the video of someone using Roam, but... can't self-host that.) 

Just in case people want to see options, I stayed up last night poking at it and found http://contextplugin.tiddlyspot.com/ ; the code format blocks aren't perfectly pretty, and they don't define the bounds of the excerpt nearly as elegantly, but it can be used for more than my footer case. (back in my mailing list days, I vaguely remember it was bad form to send images, so here's a link to a screenshot of what I managed)

--
You received this message because you are subscribed to a topic in the Google Groups "TiddlyWiki" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tiddlywiki/LUVTps01UBU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tiddlywiki+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/b23afb70-39e1-44f9-be42-ce444db53b42%40googlegroups.com.

David Gifford

unread,
Feb 1, 2020, 2:57:07 PM2/1/20
to TiddlyWiki
Hi Maya

The context plugin you mentioned is already in TiddlyBlink. In the TiddlyBlink tab in the sidebar, de-select any checked boxes, then check the checkbox for highlighted search results in context.
To unsubscribe from this group and all its topics, send an email to tiddl...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages