Vlad's Roam Garden

Powered by 🌱Roam Garden

Bringing knowledge and conversation closer together


One of the core workflows that Roam enables for me is assembling insight around new ideas (& defining terms) through backlinks

You'd mention a [[concept]] in different contexts:

day-note-first paradigm of interacting with notes is very complimentary to this

when writing about another idea and a connection occurs to you

Later, when you go to the concept page - it will have a lot of usage examples with rich context around them. Even though you haven't deliberately written about it.

You can use this assortment of context-rich backlinks as a direct thinking aid. Or if you decide to engage with the note deeper - you can hone your understanding by synthesizing the assortment of references into a summary.

As a consequence, linking to things in my knowledge base is a very ingrained motion for me, when I write anything. And I miss an ability to do that in the contexts when I write outside my notes.

Referencing ideas in a conversation

One context in which I have this itch particularly often is texting. For me - writing a message in a chat has a flavor that feels very similar to creating a fleeting note.

I want to be able to refer to concepts that I have in my knowledge base as I talk to people & have that note-usage reflected in my notes (as backlinks).

This seems particularly relevant in the context of team knowledge bases and a group discussion - you should be able to reference things from your collective external brain to make the conversation more informative

Automatic discussion synthesis

One of the common issues people have with Slack is that it's easy to lose sight of insight generated during conversation. There is no good way to make the newly generated nuggets of wisdom discoverable.

I believe that a mechanism of backlinks would come a long way in alleviating this problem. When one references a concept in a message - the concept page should get a backlink to the message. That way:

you can see messages in the relevant contexts, and they stay discoverable over the long run

it's easy for you to additionally highlight any given message by adding special tags highlight

Reflecting on this itch - it occurred to me that the mix of knowledge management and chat can be a source of a variety of fruitful interactions. Below is an incomplete list of interactions I've thought of with prototypes/mockups for some of them.

Promising interactions on intersection between knowledge-management and chat

You should be able to easily reference the pages from within the knowledge base in the course of the conversation

The fluidity of interaction is important here. Technically you can always go into your shared knowledge base, find the relevant page, manually copy a link and paste it in the conversation. But that creates a lot of friction, and you'd only do this in exceptional situations. Whereas if linking is easy - you'd use it far more liberally.

In the demo below this is achived through providing you with autocomplete experience for concepts from your knowledge base.

When you talk about a concept in a chat - that should be reflected back into the knowledge base

A demo of the above two interactions based on integrating Roam with matrix chat

When you want to interact, with a note that you mentioned, in more depth - it should be easy to pull in additional relevant information from the knowledge base

Ability to reference concepts & ideas in a conversation is a key affordance, but having only a name reference is often too high level to be useful.

ideally you should be able to pull in more context on demand by transcluding a note or a block you've referenced directly into the context of the conversation.

as an intermediate step - I believe a "summary view" will also likely be useful

As a corollary to this - when you interact with notes in the context - it seems likely to me that you'd want to augment them

frame of transclusion is helpful here again as it implies the two-way connection

More generally:

Chat should transclude application specific context (for things it integrates with)

The ability to pull in and manipulate notes, mentioned in the conversation, is one example of this.

Below, when I talk about having the same conversation in different contexts - I use an example of pulling in a live view of the Figma document directly into the chat context.

When topic of discussion is non-trivial - you often want to "reload the context of the conversation" before replying.

You'd look at the code on a Pull Request

You'd poke around the Figma prototype

You'd skim the relevant part of the note or document

And so it's important that this context is immediately available for you to see and interact with, in the context of communication medium.

Have different lenses on the same conversation (document focus vs chat focus)

Currently, the comments in collaboration tools (Google Docs, Figma, etc) are disconnected from your standard communication medium (e.g. Slack)

That causes a fragmentation of your conversation

you need to follow it in several places

you are never sure where have you talked about that particular topic

and when you try to search for it - you need to do it over a variety of tools

At the same time it's valuable to have conversations in-context.

We can make this situation better by using one messaging medium and presenting different lenses on a given conversation, based on your context.

This solves the fragmentation issues mentioned above and allows you to present the most appropriate conversation UX, depending on the situation.

Mockup - how it'd look like if Figma was integrated with Slack for comments (expand to full screen view for better experience)

As another interesting example of this - see the following "Web annotation over Matrix Chat" projects:

Matrix Highlight (which is the correct way of leaving comments on this post btw 🙃)

Follow conversations as tag streams

Channels are a great way to organize your conversation and allow you to follow the specific things you really care about.

As with other hierarchical systems, though - having many channels tends to add friction at the point of information entry - you have to decide which point in the hierarchy you need to place the message/note at. And many people find it quite frustrating.

As an alternative - one can follow a model similar to Roam's daily pages:

Most messages should originate in the few "core" channels (like general or random)

When you mention a concept in your message - that message will also automatically be reflected in the "concept stream"

Which is basically a channel that receives all the messages containing a reference to that concept

As well as any new mentions of the concept from the knowledge base.

When you read the message in one of the streams - it marked as read everywhere.

With this approach you gain an ability to very granularly subscribe to the things you care about, while minimizing friction at the time of sending the message.

Mockup - (expand to full screen view for better experience)

Messages should have backlinks to places they are referenced in

Backlinks is a great way to provide ambient context that helps you make more sense of a nugget of information. They've deservedly become more popular across a variety of knowledge management and productivity tools.

Messaging should not be an exception - I would love to see backlinks from a message to:

Other messages that mention it

Entries in the knowledge base that mention it

Messaging as a quick capture layer

Many knowledge work tools are not optimized for quick entry of information (👋 𐃏 Roam)

And "sending things to yourself in chat to record on-the-fly thoughts" has repeatedly emerged as pattern people have found useful.

Phone to Note service is an example of people internalizing that pattern to connect your quick ingestion mechanism to you core knowledge management systems.

What I found sad about it is that an ability reference pages - a core affordance, in my opinion, is lost in the process.

But, as discussed above, it doesn't have to be - if integration is taken one step further.

What I find interesting about this use-case is that it's not something I was deliberately targeting or trying to do when I started working on this. It emerged organically, as a special case of reflecting the insights you derive in the conversation back to the knowledge-base

Conjuring ideas into existence

It's not easy to "just combine", say, Slack and Roam because of the siloed nature of modern software.

My basic hope for this post is to highlight the potential of these interactions and encourage a discussion around them, and hopefully uptake within existing products


Another approach, that I feel a pull of, as an engineer is to build all the things that are missing in the world myself 🙃.

It doesn't seem wise in this case, as there are many good, established products in both chat and knowledge-management spaces. And, while I think implementing these ideas would make both note-taking and messaging better, it's by no means 10x improvement over the incumbents 🙂

That said - I've recently arrived at a conceptualization of these ideas that makes me think that indulging my pull to build things may not be a wasted effort.

It occurred to me that messaging is a cross-functional concern that many projects need to re-implement and it'd probably be good to have something like "Stripe for messaging"

Where you, as a creator of a new service, get a set of ready-made components and backend that you can use to easily implement "messaging" within your system

Motivated by the above, and encouraged by existence of Matrix chat (which gives me hope that I, at least, don't have to rebuild chat infrastructure in this case) - I've been working on some experiments in this space:

The demo above shows me using the combination of these two projects to implement the "autocomplete for concepts in your knowledge base in chat" and creation of backlinks from messages to concepts.

Talk to me!

If you're interested to riff on these ideas or play with experiments I've built so far/etc - leave a comment!

The objectively correct way to leave comments on this post is to use Matrix Highlight (see the link for instructions)

At the end of the post you can see the read-only stream of comments about the post in #knowledge-and-communication:matrix.org room. You'd see both Matrix Highlight annotations and things people have posted directly.

You can also directly reach out to me on Twitter


Tana people expressed interest in solving this and have some experiments with mixing in conversation into their product, it's very early-stage and not available publicly though

https://fibery.io/ talks about this as a part of their vision, but they haven't started working on this yet as far as I know.

Prior art on tag streams

Chatting with Glue - for more explorations on the intersection between chat and knowledge. And how chat can be structured differently to help you create knowledge

Google Wave had it all

Comments