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.

