Plugin Developer Spotlight: Mnaoumov develops tools that keep your knowledge usable over time with relative links

Situation

The front page of obsidian.md states:

Your knowledge should last.
Obsidian uses open file formats, so you’re never “locked in.”

However, files only store information and data. Links between information store knowledge.

  • Wikilinks do not work natively outside of Obsidian, therefore your knowledge is tied to Obsidian’s implementation of wikilinks.

Wikilinks are becoming more popular, but there is no standard; each version is slightly different.

Thanks to Mnaoumov’s work, none of my vaults have this problem.

Wikilinks vs. Relative Links

To keep your knowledge safe over time, use relative markdown links instead of wikilinks.

  • Relative markdown links store the path of a file in relation to a root directory.
  • This allows other software to use links as-is, whereas wikilinks break as-is.

Ease of Use

Mnaoumov’s plugins make relative markdown links easy to use.

  • With Better Markdown Link’s auto-update feature, you can keep creating simple-to-type wikilinks and watch them convert in the editor.
  • Better Markdown Links also adds the option to add angle brackets to markdown links, which allow for spaces; URLs do not have to be encoded.
  • Frontmatter Markdown Links adds support for clickable relative links in frontmatter, in addition to regular markdown links, different types of URLs, and embedded links.

Convert to Relative Links

  • Better Markdown Links has commands to convert wikilinks to your selected markdown link style, in a single file or the whole vault.
  • Consistent attachments and links, maintained by Mnaoumov, has commands to convert wikilinks and other types of non-relative links in the whole vault.

Fix Relative Link Bugs in Obsidian

By default, Obsidian does not handle and update relative links as well as wikilinks.

Plugin Comparison Table: Mnaoumov’s Relative Link Plugins

Plugin Name Original Author Plugin Description Plugin Purpose Plugin Link
Better Markdown Links mnaoumov Adds support for angle bracket links and manages relative links properly - Option to add angle brackets to markdown links.
- Option to add “./” to paths in a link, to fix a link interoperability bug in Obsidian.
- Option to override default vault settings to enable relative links and disable wikilinks.
- Converts wikilinks to selected markdown link style, in a file or the whole vault.
- Option to automatically convert new wikilinks to the selected format.
- Updates markdown link path when files are moved.
- Options to include or exclude folders.
https://github.com/mnaoumov/obsidian-better-markdown-links
Consistent attachments and links Dmitry Savosh Move note attachments and update links automatically. - Converts wikilinks and/or non-relative paths to relative markdown links in the whole vault.
- Updates markdown link path when files are moved.
https://github.com/dy-sh/obsidian-consistent-attachments-and-links
Advanced Note Composer mnaoumov Enhances Note composer core plugin. - Fixes relative markdown links broken by Obsidian’s note merging tool. https://github.com/mnaoumov/obsidian-advanced-note-composer
Frontmatter Markdown Links mnaoumov Adds support for markdown links in frontmatter. - Makes various types of markdown links clickable in frontmatter, both internally and externally. https://github.com/mnaoumov/obsidian-frontmatter-markdown-links

Other Plugins Created or Maintained by Mnaoumov

This list is limited to plugins available in Community Plugins.

Plugin Name Original Author Plugin Description
Backlink Cache mnaoumov Store backlink cache to speed up app.metadataCache.getBacklinksForFile. https://github.com/mnaoumov/obsidian-backlink-cache
Backlink Full Path mnaoumov Shows the backlink’s full path in the backlinks panel. https://github.com/mnaoumov/obsidian-backlink-full-path
Smart Rename mnaoumov Rename notes keeping previous title in existing links. https://github.com/mnaoumov/obsidian-smart-rename
New Note Fixer mnaoumov Unifies the way non-existing notes are created when clicking on their links. https://github.com/mnaoumov/obsidian-new-note-fixer
Insert Multiple Attachments mnaoumov Allows to insert multiple attachments at a time. https://github.com/mnaoumov/obsidian-insert-multiple-attachments
Custom Attachment Location RainCat1998 Customize attachment location with variables($filename, $data, etc) like Typora. https://github.com/RainCat1998/obsidian-custom-attachment-location
External Rename Handler mnaoumov Handles renames made outside of the app. https://github.com/mnaoumov/obsidian-external-rename-handler
Root Folder Context Menu mnaoumov Enables context menu for vault root folder https://github.com/mnaoumov/obsidian-root-folder-context-menu
Refresh Any View mnaoumov Allows to refresh any view without reopening it. https://github.com/mnaoumov/obsidian-refresh-any-view

This post is not sponsored; the purpose of this post is to relate information I have found while looking for plugins.

6 Likes

Thanks for such a review. It would be nice if my nick @mnaoumov would’ve mentioned so I got notifications.

Also for people who are curious about other unmentioned Obsidian stuff I do: GitHub - mnaoumov/obsidian-resources: List of Obsidian resources I maintain

1 Like

Sorry! I haven’t used forums regularly since the 2000s.

1 Like

They do in an increasing number of apps (tho not as many as support standard Markdown links). I use iA Writer, but some others include Bear, DevonThink, Taio, and Zettlr.

In my personal opinion, wikilinks have unfixable fundamental flaw: they depend on a scope of your vault.

If you have open folder A as a vault and note A/b.md, and A/c.md with link [[b]], it will naturally map to A/b.md.

Then if your A is actually nested in folder D and you open it as a vault, so you have D/A/b.md, D/A/c.md as before and additionally D/b.md, then all over sudden link [[b]] from D/A/c.md points to D/b.md.

D/A/b.md, D/A/c.md didn’t change but just opening higher folder as a vault, changed the link.

In my opinion, it’s unacceptable. All links have to be deterministic in any sane PKM.

[[wikilink]] as a concept made sense in Wikipedia, because it doesn’t have any folders. All Wikipedia articles are in the flat list, so [[wikilink]] would always mean something like [wikilink](./wikilink.md') in that context. Here we can agree, that [[wikilink]] syntax is more concise but still deterministic.

To me this is an advantage, or at least a worthwhile trade off. When I work with my notes I don’t want to think about file paths, or where my notes folder is in the current device’s file tree. If I have the filename, I have a link.

But I understand not everyone feels the same, and I’m glad Obsidian can be used without them.

Most people aren’t going to look at wikilinks and say “oh, that’s a for a flat file system”.

  • There’s no information on Obsidian’s website about using wikilinks for a flat file system.
  • There’s no information on Obsidian’s website warning users about non-flat file systems.
  • There’s no information on Obsidian’s website discussing the pros and cons of wikilinks vs. other kinds of links.

There are, however, assurances that “Your knowledge should last”. This is at odds with the lack of information on Obsidian’s website regarding how to make your knowledge last.

Glad someone else is noticing.

I am the advocate of his CodeScript Toolkit, which enables you to add custom functionality complete with modals to your PKM on the fly without all the hassle of compiling your own plugins.

Could you please correct these? This post is a great resource for people who want to use relative links, but it leads with this untrue information. Feel free to word it strongly, like “Wikilinks are much less compatible with other apps than Markdown links” and “If you use wikilinks, your choice of apps to work with your knowledge is very limited”.

It might also be good to work the term “relative links” into the title to make it easier to find for people who already know they want to use them.

2 Likes

Thanks, mnaoumov, for providing tools to make it easier for people to use their preferred link style! And especially thanks for providing workarounds for Obsidian’s surprising issues with relative links.

1 Like

I would like to point out that my original statement is not untrue, but imprecise. I used the same amount of precision as the quote from Obsidian’s front page.

I have made it more precise as per your request.

Thank you for the effort! I’m sorry, but the statements were incorrect and still are. Wikilinks work “natively” in other apps and do not depend on Obsidian’s implementation. Here is iA Writer’s documentation of the feature: Wikilinks – iA. I have opened files in iA Writer that I created with wikilinks in Obsidian, and the links work. (Tho if a link specifies a heading or block it ignores that portion — is that what you mean?)

Obsidian’s front page is a marketing document. If you feel it is problematic, I’m not sure why you would make your own post problematic in the same way.

Missing features means ‘not native’. Headings are a popular choice for link structures, not to mention embedded sections, etc.

You also mentioned your use of a flat file system compatible with wikilinks, so you are unlikely to see many errors in your system.

Obsidian’s front page is a marketing document. If you feel it is problematic, I’m not sure why you would make your own post problematic in the same way.

To ensure that the conversation highlights Obsidian-the-company’s attitude toward user’s knowledge in the long term.

Mirroring the statement is basically a form of ‘treat people how they treat others’. It induces people to argue against their (or whomever they are representing) own behavior.

1 Like

When I read your edit before, I didn’t notice you had added this paragraph. I thought you had only revised the list, so I only read that. Sorry! This is better.

But Markdown in general has the same problem of differing support. And this paragraph and the list item before it contradict each other (if wikilinks didn’t work outside of Obsidian there would be no slightly different versions, only the one in Obsidian).

It sounds like by “natively” you mean “completely”. They’re not the same thing. Headings in wikilinks aren’t supported natively (in iA Writer, at least), but basic wikilinks are.

And while lack of support for heading and block links is a problem, it’s not specific to wikilinks. You can’t rely on heading links in Markdown because apps differ in how they convert heading text to URLs. And other apps don’t support Obsidian’s block link syntax in wikilinks or Markdown links (and the help docs point out the compatibility issue).

I didn’t say I use a flat file system; I use folders. That’s where the paths come from that I don’t want to think about when I write links. Using relative links would force me to think about them. (But people should be able to use them! So I’m disappointed by Obsidian’s poor support of them and glad mnaoumov has made it easier.)