What does "link as first-class citizen" really mean?

The About page lists the philosophies of Obsidian:

  • Local-first and plain text;
  • Link as first-class citizen;
  • Make it super extensible.

At first I thought “Link as first-class citizen” simply means it will focus on links more than other software. But then I found out that First-class citizen has another meaning:

In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities. These operations typically include being passed as an argument, returned from a function, and assigned to a variable.

So what meaning it is used? Are there any more insights than just a software with link suggestion and a graph?


I also had the expectations that links would be usable anywhere, that you could link to nearly anything, that link could get attribute, semantics, usable in search expression, something like the main focus on the application. It turns out that links are just links, like you find on any wiki or any webpage. The only “thing” but that you find in most programs is from the target note to be aware of what links points to it. To be honest i’m a bit underwhelmed by “backlinks” to be consiered anything close to a “first class citizen”.


In my understanding, the database that is born for links is graph database. Obsidian uses IndexedDB, which in my understanding is not a graph database. I understand that there are features that you may want to compromise. But that leave a question whether links are indeed the most important feature or not.

How Is a Graph Database Different from a Relational One? | Towards Data Science