I finally had some time to test org-roam
links behavior and your repair function.
First of all, thanks for clarifying the actual functionality of roam:
links, it makes the whole discussion clearer.
After a few tests, I am definitely convinced by your repair
mechanism. It works very well, I was surprised that all my test links were repaired without any action on my part, just by saving the newly created nodeâs buffer. I originally thought that I would have to call it interactively, or add it to a âbuffer saveâ hook myself. That must be what you refered to as the âbuffer-saveâ protocol in some of your posts. I was not aware of this mechanism. It makes the process completely transparent so there is actually no reason I can think of not to use it. Except maybe the buffer saving performance issues you talked about, but I have not experienced this kind of inconvenience so far.
As I was saying earlier, this repair
mechanism only makes sense to me now that I understand how to use roam:
links properly. It would integrate very well with the first instinct I had to give temporary âplaceholderâ titles as the roam:
target ID for my dangling links while still in the early writing/canvassing process. This does not constitute a major interruption of the flow of writing IMO because, even if I need more consideration to find a descriptive and meaningful title, I instinctively always have some kind of variable name(s) in my mind to address the content of that âfuture nodeâ when I think about it.
I should add that where the repair
function would really shine IMO, is when completing a writing project the âZettelâ way using many distributed notes. When I started this thread, I was writing a structured manual in on single file, and wanted to link sections not yet created which I also use as a reminder/task for the need of a future section. But I was always reluctant to write structured pieces in a distributed manner, like a note per chapter or section by fear of it being impossible to maintain. Writing is an iterative process that requires a lot of reviewing, restructuring and modifying (depending on the nature of the piece of course), and I never felt comfortable starting a project this way. Maybe I will give it a try using roam:
links and these two âdangling linksâ functions.
So thanks for this addition, I think that was a very good idea, and really improves the writing and reviewing process in my opinion.
This brings me to your ânode title change propagationâ project. If I understood correctly, the idea is to update all id:
(and :roam
?) links pointing to a node which title is being modified. The description part of those links would then be updated to reflect the new node title state. I also assume that a mechanism would be in place so that only links descriptions are only modified if their description matches the old title state of the modified node.
To illustrate my assumption more clearly I hope:
- Modified node: id = 999, old title = âfooâ , new title = âbarâ
- link 1 =
[[id:999][desc:foo]]
- link 1 becomes
[[id:999][desc:bar]]
- link 2 =
[[id:999][desc:something else]]
- link 2 remains
[[id:999][desc:something else]]
If my understanding of your âtitle change propagationâ idea is correct, that would answer a persistent frustration of mine across all my attempts at âZettelkastenâ implementation. Namely, the difficulty of maintaining structure notes link descriptions when modifying notes titles (here is a link to an article describing the concept of strucuture notes in case that helps some readers).
Even if I rarely use the nodeâs titles in links descritptions, I always do in structure notes, and it is an important part of the âZettelkasten frameworkâ. Personally, I think this could be a nice addition as well to keep notes up to date and organized with less effort.
I would have reservations though for a user who actually manages to use node titles as is in their link descriptions, and semantically integrate them in sentences. For them, that could end up messing up their notes meaningâŚ