Namespaces, page hierarchies, breadcrumbing and childrening

I would be more supportive of namespacing if Roam provided mechanisms for breadcrumbing. At least one wiki I have used over the years let you give each page a parent and facilitated rendering breadcrumbs for those pages and linking to the page’s children. One of my big Roam chores is creating navigational structures that could be created automatically by Roam commands. Meanwhile, the [[Parent/Child]] namespacing scheme is almost worthless to me because it injects boilerplate text and makes text less readable.

Namespacing would be useful to me if it created namespacing as the creation of a navigable hierarchy of pages. As I said, many of my Linked References are for navigation rather than content. A navigable page hierarchy would eliminate the need to create these references by hand and could easily put them with the Linked References, out of the real content of the page.

Here are my specific proposals:

  • Add a “Parent Pages” section above Linked References that contains a breadcrumb trail through a page’s ancestors.

  • Add a “Child Pages” section under Parent Pages that behaves just like Linked Pages but for all pages that have the current page as their namespaced parent.

  • The command {{trail:}} would render each page in the chain as a separate link. So the code {{trail:[[1980s/Middle 1980s/1985/Summer 1985/August 1985]]}} would render to something like 1980s > Middle 1980s > 1985 > Summer 1985 > August 1985.

  • {{trail:}} could work just as well on block references. So if page named 1980s has a block Middle 1980s with a block 1985 with a block Summer 1985 with a block August 1985 with reference XYZXYZXY, then {{breadcrumb:((XYZXYZXY))}} would also render 1980s > Middle 1980s > 1985 > Summer 1985 > August 1985. (This would actually eliminate a lot of need for hierarchies of pages that don’t actually have any content.)

  • {{trail}} with no argument would render the trail for the current page up through the parent. So on [[1980s/Middle 1980s/1985/Summer 1985/August 1985]] itself, {{trail}} would render 1980s > Middle 1980s > 1985 > Summer 1985.

  • The command {{children}} would render links to all of the pages that have the current page as their namespaced parent. So {{children}} on the page [[1980s]] would render links to [[1980s/Early 1980s]], [[1980s/Middle Pages]], etc.

  • The commands {{children:[[namespace]]}} and {{children:((block))}} would render links to the children of the given namespace or block.

  • Add the ability to make a shortcut to an entire namespace. Present the namespace as a list of the child pages in the lefthand menu as a new section under the SHORTCUTS section.

Thank you for your consideration.

6 Likes

There’s no hierarchy as far as I understand it. I have pages for my classes that I teach, for example [[UppSecUppInt Plus 20-21]], but also have a public facing version [[public/UppSecUppInt Plus 20-21]] for the students. My understanding is that they are simply two different pages. There’s no relationship. There’s only build in functionality to show or hide parts of the first part. I get what you’re asking, but I think relationships would first need to be established which would go against the grain of Roam–again, only as far as I understand it. You’d have to settle for making your own index pages. For example, all my classes are linked from a single page [[teaching]] that sits in my sidebar for fast access to them all. All my journalling prompts also sit on a single page and I use references to write under them. None of it presupposes hierarchy, however. You could, Notion style, just create your own hierarchy.

You’re literally telling me to do what I just said I am already doing. Thanks.

It’s not helpful to have one group of people talking about namespaces as though they are a thing and another saying it’s (like everything else in Roam these days) whatever you DIY.

I’m not telling you to do anything. I’m not an expert. I was adding to the conversation because I felt like what you’re asking for isn’t likely and holding discussion helps me understand things better myself. I’ll just shut up then and leave you to it.

Sorry if I misread your intent or tone. I got the impression that you were dismissing the idea because I can literally make those navigational structures myself.

I spent over an hour crafting this request to build a clear vision of what I want. I hope the developers would take it into consideration; I hope other users think it’s valuable enough to at least like this thread so the developers will consider it. If there’s little chance of the developers listening to the paying users (especially the Believers), then there’s little point in proposing new features.

For what it’s worth, implementing the {{trail:}} and {{children:}} commands I proposed only for blocks would still be a huge improvement for me over making these things by hand. The block structure makes implementing hierarchies very easy. Namespaces would be unnecessary. Also, DIY results in a lot of unnecessary page links that bloat Link References lists.

FWIW, both responses were helpful for a noob groping the dark. The exploring together is all helpful and I did really appreciate the thought that went into the initial proposal. But all the recasting others might do in response helps flesh out the use case. Thanks