Why are some rems tagged with Stub?

What is this ?


You usually create reference to something that already exists, but what if you want to or try to create reference to something that doesn’t exist yet? In that case Remnote can create a top level rem (a rem that doesn’t belong to any hierarchy) and tag it with something called Stub. So when you create a new reference on the fly ( using the Ctrl + Enter shortcut or by selecting it from drop down) you are essentially creating a top level rem (which gets tagged with Stub) and inserts a reference to that top level rem into your document. So Stub tag also provides a way to search for all such top level rems

Thanks for the explanation.

It’s interesting to note one important difference between RemNote and Roam in this regard :

  • in Roam, if you created a node on the fly, this is created IMPLICITLY, so that if later you wish to remove it, all you need to do is to remove all references to it.

  • In RemNote, on the fly node creation (rem creation) is EXPLICIT, with the result that simply removing all references to rem do not automatically remove the rem

Yea, I am not a big fan of how remnote does this. I think Obsidian also has something similar to Roam. The issue with Remnote’s approach is, after sometime you will end up with bunch of random rems (without any context) as top level rems (that are tagged with Stub). Instead if these references were created implicitly and were kept in the scope where they were created it would have made more sense as to why they exist. Only when the KB becomes big and rems from Stub start to become confusing (because these stubs don’t have context to it, unless you check all of its references to understand where all it got used) while trying to create a reference people will think about the issue here. Also, since these don’t have ‘context’ to it, it is easy to link to wrong references when there are many similar rems

Just saying: it is trivial to delete all rems tagged stub that have no parents nor children and are not used as tag or reference in an automated way.

Having those rems explicitly gives you more options for what to do later. It is a superset of Roam/Obsidian in that sense.

@hannesfrank In that sense Remnote’s feature is superset. My main complaint is these references not having a context (actually not having full path because they are top level rems). Just to know, what is your preference - these new reference actually getting created as top level rems (like orphans) or these references having full path to the hierarchy where they got created?

hey @liberated_potato and @porpoise, great discussion, would love to get some more clarity though.

How is this different from how Roam and Obsidian creates red wikilinks (pages that don’t exist yet or don’t have content yet) ?

  • AFAIK creating a new page reference in Roam, on-the-fly is almost the same, just that it doesn’t get a stub tag. Otherwise how does Roam give you any hierarchy, all pages in Roam are equivalents of Top-level rems (no hierarchy)
  • Isn’t this the same case with Obsidian ?

I would love to hear more of your thoughts on this :slight_smile:

You are actually right. From a ‘context’ perspective, Obsidian (I don’t have any experience with Roam) also does the same. What I mean is, references that are created on the fly exist in some top level/global scope in Obsidian as well. So I think, RemNote’s implementation is bit better because we have a handle to all those top level rems through stubs tag.

Only concern I have is, after a long time this global scope may get crowded. Therefore Rems living in that space can get bit confusing, especially while referencing them. For example I don’t put the term ‘memory’ in top level scope because I use that word differently in several different domains. In fact, I rarely put anything in top level scope.