Hello all,

I thought again about one of my previous posts, and I thought I'd try 
reposting it and editing it to encourage more conversation/ideas around 
this topic.

In my mind, *linking* is one of the two major pillars of TW 
(searching/filtering being the other - why I think a lot and comment a lot 
about search). If I want to link to a tiddler there are *four* (used to be 
three) issues of concern:

1. what I want to type

   - Aliases provided by the un-link plugin are magical here! A tiddler 
   with "long title of method" can save me many keystrokes (and potential 
   typos!) if I just type the name of the alias.
   - Critically, this is decoupled from where I want the *link to go*, and 
   what I want it to *render as*. I don't ever want to type "a very long 
   title", or if the core also supports uniqueIDs, I don't want to type 
   timestamps. 
   - Something that I think should be incorporated into the core (!!!!) (or 
   at least with uni-link) is the Edit-Comptext dropdown plugin 
   <https://snowgoon88.github.io/TW5-extendedit/>. This plugin already lets 
   you define custom dropdown templates, so its natural to incorporate the 
   filters uni-link provides. 


2. where I want the link to go

   - If we're not just focusing on aliases for a second, this isn't as 
   straightforward as I initially thought - frequently I want a link to go to 
   a tiddler with a specific title (this is the obvious case).
   - Sometimes I want a link to go to a specific tiddler, *regardless of 
   its title**. *For example, my TW is constantly evolving as my system of 
   knowledge is evolving - I rename things, reorganize, etc *frequently.* If 
   I rename a method, or person, etc. all of my links to this tiddler no 
   longer work 
   - (there have been previous discussions of renaming tiddlers triggering 
      a search/replace). 
      - * The recently introduced relink plugin solves this particular 
      problem! *
      - I am more interested in being able to link to a tiddler by some 
   kind of unique ID (for example, created timestamp, or another field) - *that 
   way, renaming a tiddler's title does not trigger massive textual changes in 
   the rest of my tiddlers*
      - I use version control, so it's a bit annoying when I rename one 
      tiddler, my commit object contains changes to 20 other tiddlers whose 
links 
      to this one tiddler also had to change. 
      - Uni-link address this issue, by introducing a (hopefully) unique 
      field: *aliases*.
      - So now I can link to [[coolMethod|?]] *regardless of the actual 
      title of that tiddler!* This is a wonderful feature!
   

3. what I want the link to render/display as in view mode

   - TW already supports some version of this, as sometimes it's 
   appropriate to render a tiddler's title, other times its caption. I just 
   want to extend this so that the user has more fine-grained control over 
   this. 
   

4. What kind of relationship I want the link to represent

   - Thanks to the illuminating typed links thread 
   <https://groups.google.com/g/tiddlywiki/c/C0CqNyKU1Jc/m/KgwIfWy5AQAJ>, 
   I've come to realize this is also a central concept in linking! 
   - Coupled with the ideas given in the recent "Athens" thread about 
   thinking of your knowledge graph more *formally* as an actual graph, it 
   makes sense to think of the kind of connection you want to represent. 


Link Syntax:
Note: below I introduce some spaces to help with legibility, not paying 
attention to the fact that they actually aren't in the syntax.

Currently, the core supports two link types:

   - [[ link target ]]
   - [[ Display text | link target ]]

Uni-link introduces two more:

   - [[ alias name |?]] - links to a target that has 'alias name' in its 
   aliases field. Note you did *not* specify the target name at all! Only 
   its alias! 
   - [[ alias name |? fieldNameToRender]] - links as above, but displays 
   not the alias name or the target name, but the content of the field given

We see that the last uni-link syntax gives the following:

   - ✅ lets me type a short alias for any target 
   - ✅ allows me to NOT have to specify the target tiddler with a long name
   - ✅ changing the target tiddler name does NOT affect any alias links
   - ✅ lets me easily specify what I want the link to display/render as

The only missing feature (besides the autocomplete given by the 
EditComptext plugin) is specifying the relationship type. 

I have no idea what syntax would "make the most sense" but I can propose 
some: 

   - relationshipType::[[ aliasName |? fieldNameToRender]] - like in Roam?
   - [[ aliasName |? fieldNameToRender | relationshipType]]

I'll let others think of a better syntax given TWs internals. 

I'm anxious to hear others thoughts! 

Diego

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/dd056be4-38be-447b-9ae2-7b748174ef4bn%40googlegroups.com.

Reply via email to