⚡️ Ideas
Matthew Akamatsu Matthew Akamatsu Jul 14, 2023

Arrange nodes diagrammatically on a canvas

Explain the problem as you see it

As a team of biology researchers, we want to free-associate unstructured text, images, and drawings alongside our text nodes and supertagged nodes, using a free-form visual layout. We found ourselves continually drawing on a digital whiteboard side-by-side with the graph, and pasting in static images of content that was duplicated on the whiteboard, and once on the whiteboard that content was no longer editable, queryable, or connectable to other content.

image.png

Why is this a problem for you?

Because we are visual thinkers and learners, a diagrammatic/whiteboard type of playground is very important for us to input ideas and freely structure and restructure them as we go along. A visual representation that mixes images and nodes allows us to create a path (or diverging paths) from one node to the next, allows us to make new connections between nodes, and overlay our own "spatial coordinate system" specific to the task.

For example, If the task is to outline a research proposal, we'll include diverging paths depending on the outcome of a given experiment. If the task is to collect knowledge that informs the working model of a biological process, then we will include a drawing of the diagram alongside questions related to each element of the diagram.

image.png

image.png

Suggest a solution

We recently built an open-source canvas plugin for Roam Research that has these capabilities! It allows us to integrate freehand drawings, text, and shapes alongside content from the graph (nodes, pages, and the equivalent of supertagged nodes). It is built as a "canvas" option in the "query builder" roam research plugin: https://github.com/RoamJS/query-builder

David Vargas built this canvas on top of tldraw (similar to logseq's whiteboard) as part of his discourse graph plugin. We think it would be useful for visual thinkers of many types. Some of our favorite features include

  • select a given node type (supertag) to add
    image.png

  • add an existing node of a specific type
    image.png

  • create a new node of a specific type
    image.png

  • connect nodes
    image.png

After talking with @Lukas/CortexFutura this morning, we think that a canvas like this is the only remaining feature that would be necessary for us to move our lab graph over from Roam.

If useful, we'd be happy for you to take freely from the plugin linked above, and we can share any lessons from the development of the canvas (which took approximately 30-40 hours of Vargas's time spread over 2 months or so).

⁨11⁩ ⁨Comments⁩

Great idea! What I would LOOOOVE to see is a snappy mindmap feature where we can add existing or new nodes as branches to map out a project, or to brainstorm of course. A dream would also be to have something like Flying Logic (https://flyinglogic.com/) with its awesome rearranging of nodes as you think through causes and effects.

In reply to Casey Matt Casey Matt

The Logseq implementation is exactly what I was just about to point out. I really like the way that Logseq treats the Whiteboards as pages. They can me linked to, referenced, their content show up is search (and is also able to be referenced).

Whiteboards/Canvas are an essential tool.

I'll share my use case to display one way they function. When I read books I make a last as I read of all the salient points from the book. I bring this in as an list. Then from the list I pull the into a whiteboard. Here I begin to develop groupings, and the order them—generally moving them around to not only understand them better individually but also in relation to each other. Then from the whiteboard I can create an outline.

That is only the first step. I also have whiteboard for the top level areas of research that I'm intersted in. I can pull individual notes into areas where they will be relevant. And like the books boards, these boards will begin to develop groupings and orders. For example in the books I read I may find 30 notes about "writing" and 23 about "technology." I can bring them into the respective topic boards. And from that I will gain a deeper understanding of these topics through out all of my reading.

The whiteboards are key to this synthesis.

Agreed! I end up using Roam's (improved) graph view in different cases than the canvas.

A couple of updates:

  • One killer app has been to take the results of a query and dump them into a canvas.
    image.png
    This lets us array e.g. a set of projects on the canvas and spatially categorize, etc.

  • The canvas now includes "key figure" images which are pulled from the first image associated with the nodes. This has increased utility of the canvas by a lot!
    image.png

I wrote up some examples for how we use the canvas on experiment.com if useful!

I'm a Visual-Spatial thinker and am currently researching Graph Views.

Graph Views in Obsidian have very poor utility because so many nodes are displayed. When filters are applied, you can see things but have no features to do anything about it, so there is no way to create more notes and change connections. The Canvas feature can do this but won't help you intelligently build the Graph; it's very manual. Better Graphs are found in Anytype and Capacities.io, but the winners are Scrintal and Heptabase. For a visual-spatial thinker, Scrintal wins because it can build abstraction on abstraction, just like Tana. Heptabase is unable to go down further than one layer, but it does have a superior visual editing tool and a better text editor. Heptabase also uses Tags in a similar way to Tana so that it can make a good companion.

Where my brain is going, Tana is a near-perfect outliner. Developing graphical abilities will be a distraction when the development bandwidth is better spent elsewhere, such as integration! Now, if Tana could integrate with Heptabase or Scrintal, this would be better as both dev teams could focus on their core strengths rather than development functionality away from its core mission. For me Tana as your database at the heart of a productivity ecosystem sounds like a better option.

In reply to David Oliver David Oliver

One key for making the Canvas useful a more algorithmic way is a "send to canvas" function from a query. We built this in our Roam query builder plugin:
image.png
It's very powerful because we query e.g. all the nodes that were made after a certain day, by an author, with type X (or relation Y to those nodes), and send them all to the canvas. The nodes and relations remain updated as you change them in the outliner, and you get the ability to sort, add, and include handwriting in a nonlinear way.
image.png

@David Oliver , if you have found other advantages of Scrintal, let me know and I'll see if we can include those features in our plugin prototype. We'd be interested in building something similar that works with Tana, if they meet us halfway with plugin type support :)