This repository has been archived by the owner. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Parenting (Notes Hierarchy) #5
base: master
Are you sure you want to change the base?
Parenting (Notes Hierarchy) #5
Changes from all commits
703d13887aee35File filter
Conversations
Jump to
There are no files selected for viewing
jevakallioAug 4, 2020
Contributor
I feel like that multiple parentage would be better described as [[links]] or as #tags. We know from programming languages that multiple inheritance gets messy quickly, and that trees are simpler than graphs.
For simplicity, I'd propose that parenting allows every note to have only one parent. That will make visualisation significantly easier, too.
VKondakoffAug 5, 2020
Author
Hmm... I fully understand that implementing multiple parents is much more difficult. But having multiple parents seems essential to me: this is one of the main benefits of parenting comparing to a plain file/folder hierarchy, where one note can reside in one and only physical location.
brentjandersonAug 26, 2020
I would suggest that a way to annotate a link between two pages solves note hierarchy and also affords more complex linking between notes (e.g. multiple links, each one with different semantic meaning).
The markup could look something like this:
I don't think that's a great way to do the markup, but it would work. An alternative would be:
The
!preceding the link on a newline would clue that this is an outbound link to thesome-linkpage, and metadata goes adjacent to the link describing an edge.nixseeAug 26, 2020
•
edited
I prefer the first suggestion since ![[ ]] is already use for embedding an image in markdown and even the text of the linked note (if not in Foam - not sure - then certainly in Obsidian, Markdown Memo, and others). Also, I don't think having the metadata outside of the link would work since links are often (generally) in-line.
Whatever the specific implementation, I think it will be crucial to have it be mapped to an actual field, rather than just be descriptive text - a field could be filtered and otherwise operated upon. Perhaps even multiple tag-like fields could be included within the metadata section
e.g. [[some-link?$relationship:parent;$compatible:true;$comment:some context about the link]]
Autocompletions within this would be even better!
brentjandersonAug 26, 2020
I saw the conflict with
![[]]by chance after posting this.Finding the right balance between technical rigor (multiple tag-like fields linking two notes) and ensuring the markdown is human friendly should be a first-order concern.
Dendron has an interesting approach to references which would be more readable for complex/multi-property links than trying to inline it all in one link.
nixseeAug 26, 2020
Agreed - simplicity/human-friendly is key. Unorthodox file naming is why I was turned off of Dendron to begin with, but looking at it again, it is pretty impressive tool... I may have to explore some more.
nixseeAug 26, 2020
•
edited


Checked it out. Some very cool stuff, but I don't like the highly rigid hierarchies. I've submitted an issue to ask if it is possible to ditch the "."-delimited hierarchies and use the front matter for parent/child relationships, but I suspect the answer will be no.
That's another option here: don't put the link metadata in the actual links, integrate it with the front matter/link references/however Foam ends up handling links. You could just manually add
Since it would hopefully/need to be integrated with Foam's internal link management, perhaps when you enter an in-line link to [[note123]], there could be a popup with text fields for each attribute that allows for multiple auto-completed or comma separated entries.
Here's a similar example from TickTick, my task manager.
After you've added some, it shows them all as checkboxes when you go to edit again:
Something similar could be done in Foam, except instead of Tags, it would be (or could also be) Parents, Children, Compatible True/False, or any other defined attribute. The GUI would put the relevant data into the backend database and perhaps as well into the YAML front matter. Of course, you could edit directly in the YAML, but data integrity (e.g. spelling) would be an issue, whereas a popup tool could have autocomplete/validation built-in.