Open Pixel3ro opened 4 months ago
If you happen to look into making this feature, here are a few things you might wanna keep in consideration
Also the plugin won't be performance hungry, since it won't have to keep track of the backlinks and their corresponding Canvas in an attempt to function appropriately in the various scenarios mentioned above.
Again, I'm no expert, probably there is a better way to do this. With that said, here's how I'd do it. I'm not sure if Native Canvas file format is capable of holding the links to these files. I'm assuming it's not made for that, and you'd have to find a workaround.
You create a .md file with the same name as Canvas file. This .md file is inside the canvas, but hidden from the user by default. This .md Note is also stored in the same directory as the Canvas file(this part is a little tricky, I wouldn't want an extra file in my left side-panel, especially with the same name as the Canvas, right next to the Canvas file. This would create clutter, and worse I might click on the Note by accident while I intend to open the canvas. I wish hope there's a way to hide these files from the user view as well. idk.
So this file hosts the links to all the attachments. and they are now accessible from the GraphView.
Just how the Arrow/Edge made backlinks earlier, I'd love to see these files make backlinks with Notes at-least, if file-to-file backlinking is not possible.
It's a crucial feature too, since you can now link between Canvas, the circle becomes complete without leaving any gaps unbridged.
I would like to mention an UseCase of this feature. I import my Hypothes.is Highlights to my Vault. I like to view them in a Canvas as it presents a Bigger-Picture (compared to opening them as individual files) which makes it easier to form connections in my newly acquired knowledge. Feature #16 is very important in this case since my connections not just visual anymore, now they are a used to enhance my knowledgebase with backlinks. After organizing them, I Embed-Canvas it into other relevant Canvases. Here I use Portal feature and make Arrows once again, forming connection between newly acquired content and existing knowledge. Hence it's crucial that Portals are integrated with this backlinking feature.
Now my knowledge is connected across multiple canvases.
I have an interesting idea to use the Node. What if the nodes were designed to forward the links it's receiving, like a relay.
for example, Note_A is connected to Node_1 which is connected to Note_X (Note_A --> Node_1 --> Note_X) The plugin recognizes the Arrows/Edges connected to a Node, and joins the incoming to the outgoing arrows. In this case, the plugin would assume Note_A is directly connected to Note_X (Note_A --> Note_X) and make backlinks as if that were the case.
Now imagine the same mechanism, but there are more than one incoming/outgoing arrows in the Node. For example, (Note_A --> node_1 --> Note_X, Y, Z) Node_1 has outgoing Arrows to three Notes(X, Y, Z) So the plugin recognizes this, and makes the Node bypass these links to all three notes, as if it were (Note_A --> Note_X) (Note_A --> Note_Y) (Note_A --> Note_Z) and make their respective backlinks, a total of 3.
A similar behavior is observed when (Note_A, B, C --> node_1 --> Note_X) resulting in 3 backlinks.
In case of (Note_A, B, C --> node_1 --> Note_X, Y, Z), the plugin would make a total of 9 backlinks, the permutation-combination of bypassing the links. So in this case 3+3=6 arrows make 3x3=9 backlinks. In a bigger use case with 10+5=15 arrows would make 10*5=50 links. Which is a difference of 50-15=35 links.
This would allow the user make many connections at once. I can see myself using this feature to bulk-organize my Readwise imports, etc.
Since a Group of notes are connected to another Group, they can also be expected to form backlinks in a similar fashion to Nodes.
Using Groups to organize my Readwise imports is much easier than linking via nodes, since I can just click-and-drag or hold-shift to multi-select-Notes -> Group them together -> draw a single Arrow and my backlinking file-organisation is ready.
This way I don't have to click and drag 100 different arrows for every note one-by-one as it'd be the case with using a Node-bypass
for example, Groups G1, G2, G3, G11, G12, G13 are connected via Node N1 (G1, G2, G3 --> N1 --> G11, G12, G13) N1 should bypass the connections in permutation-combination fashion as it did earlier with notes in feature-4, but with the Groups in this case.
Similarly, Nodes N1, N2, N3, N11, N12, N13 are connected to Group G1 (N1, N2, N3 --> G1 --> N11, N12, N13) in this case all the Notes connected to N1, N2, N3 will be linked with the Notes within G1. And, all the Notes in G1 will be connected to the notes in N11, N12, N13. Notice how N1, N2, N3 do not get linked directly with N11, N12, N13 in this case, where as in the example above, connections are direct
This distinctive nature of Nodes and Groups can enable very flexible framework accommodating tasks of any complexity.
There should be a toggle allowing the Node-bypass ability to be disabled, so that a Vanilla toggle is still accessible to the user.
The Arrows/Edges should have the option to be disabled too. Users might need a simple arrow to represent a connection without making a backlink. Similar to Nodes, this toggle should be handy.
These Nodes and Arrows should have distinct-yet-minimal styling and colors difference to be able to tell the between Vanilla version and featured versions at a glance. The reason I recommend the styling-differences to stay minimal is because it shouldn't create a visual hierarchy which might signal a special type of Arrow/Node, standing out, conveying un-intended meaning. If the users want, they can color the Nodes/Arrows themselves.
Right now, there are two ways to make a bi-directional link. Both of them have their issues
A. Click-Arrow -> Click-Line-Direction -> Select-Bidirectional (3 clicks)
i. I'd prefer a popup as soon as I make the connection, allowing me to choose Bi-Directional in a single click
ii. Click-Arrow -> Click-Line-Direction -> Select-Bidirectional (2 clicks) since Bi-Directional linking is a frequently used option, it should be placed in the front, making it easier to access by saving an extra click.
B. Draw two Arrows. But if you want to delete the Arrow, you have to delete twice. i. If two arrows are drawn in opposite directions, combine them both into one.
similar to request 7, it is crucial to have a vanilla Arrow/Edge since they have their utility, and they should have minimal design change without climbing up the visual-hierarchy to look distinct.
- I have mentioned Canvas-Link-Exploder creates a Canvas with all the incoming and outgoing links. That's one way to look at a Note and the network around it.
This plugin is almost the opposite of Link-Exploder. This Plugin creates Arrows/Edges from existing links. It's a great way to pull in all your search results into your canvas and watch it make connections by itself. Kind of like an readable version of GraphView.
Since you would've made connections of the same Notes in different Context(aka Canvas) and this plugin will bring them all those connections together in one place, allowing you explore connections you didn't know existed. To make this happen, the notes should reorganize themselves just like GraphView does, forming clusters by putting the highly linked Notes in the center, etc. It would make its a bliss to skim through search results. Speaking of search results, Importing your search results into a canvas should be streamlined in one-click. This could crash your computer if the vault is too big. it should be taken into consideration.
I ran into Excalibrain, an interesting spin of graphview. with the aforementioned FR in place it'd be onsteroid. Thought I'd drop it here
minor FR : ability to disable backlink and use a plain old visual line - a small icon on the Edge/Line
Scrintal , another Canvas based PKM tool uses Visual-Thinking ability of the Canvas to let their users form multiple-complex connections intuitively. In the background these connections are automatically translated as Backlinks between notes, allowing it to be reused in other places. It's effortless, and a pure bliss to use compared to Obsidian.
In contrast, an Obsidian user has to type in the double bracket to toggle backlinking, type in the search bar, skim through a long list of search results to find the one they are looking for. For making multiple links they repeat the process all over again. Extremely taxing effort and time. Backlinking and GraphView is what made Obsidian gain popularity and find it's userbase since they were the first to implement this feature, and they even inspired many other PKM tools to add GraphView. And yet, another Core feature like Canvas is not integrated with them which is very annoying. Right now the only way to utilize both is by manually adding backlinks to recreate the Canvas Connections. I cannot emphasize the world of difference it makes between Scrintal and Obsidian in this regard. Obsidian NEEDS the backlinking feature of Scrintal's Canvas. Once it's in place it will be even more powerful than Scrintal, since these visual-connections are now accessible globally since translated-backlinks are now accessible by Graph-View and many existing plugins like Canvas-Link-Exploder would unlock many powerful workflows in Obsidian.
This is one of the main selling-point of Scrintal as their users love the intuitive visual thinking and ease-of-use making relevant links. Easier ways to form connections is a long awaited feature request in the Obsidian forum(Scrintal, AI-Based linking similar to Napkin) I cannot emphasize enough how useful this feature would be. So I implore you to add this feature to your plugin. I have been on the hunt for this feature for a while now, I scoured google to no avail. I even thought about making it myself even though I'm no coder and I don't even know where to begin. That's how bad I want this feature. I can tell from your plugin, you are a very capable developer. So I kindly request you to make this. PLEASE!! :)