Porting Obsidian to C++ and Legal Issues

For more details on whether the issue is related to single-core performance, you can check out the posts made by @hxxsx, which is also my account. I previously tested some of the best CPUs and GPUs at the time and found that GPU and memory upgrades had almost zero impact on Obsidian’s performance, especially for canvas performance.

You can see the discussion in this post: I have tested the 13900K + 3090, 7950X + 4090, and 7950X3D + 4090, and there is a serious issue with canvas performance. No configuration can smoothly run a canvas card with 26,000 characters of content.

The main issue is that Obsidian only utilizes a single CPU core. This topic is also discussed in detail in this post: Proposal for multi-core processing to boost Obsidian’s efficiency.

This issue left me feeling as hopeless as humanity being unable to escape the solar system — it seemed like an unsolvable problem. The situation becomes especially dire when you open multiple notes that contain ![[]] references to each other, causing extreme lag on the computer.

In an attempt to work around the single-core limitation, I tried using multiple vaults combined with mklink /j to achieve indirect multi-core usage. However, I encountered a critical problem: if multiple vaults opened the same file, it could sometimes result in accidental deletion of parts of the file’s content. For Markdown (.md) files, it’s somewhat manageable, but for canvas files, it’s nearly impossible to detect such issues due to the difficulty of performing a difference check on canvas content.

Perhaps these two software can also be useful, but you probably already know about them.
Well, as you said about Notes, both of these applications also don’t look as “polished” as Obsidian.
(Both are written in C++):

I had a time not too long ago when I got pretty tired of Obsidian, and at that point I also started taking notes in Notepad++.
Using the “user-defined language” feature, I created myself something between markup and syntax highlighting, and I liked it so much.
Analogous to the core plugin “Templates” I realized myself with AutoHotkey - I just had to write a command like /metadata or /link and I could insert metadata or links templates.
And it’s so cool when software doesn’t dictate how and what should be written - total freedom.
But I couldn’t last longer than a week, I really missed that popup that appears in Obsidian when you start typing in a link that lists the available files. And I missed Quick Switcher, too. All in all, though, it was pretty good.
(There is no example of metadata writing in the screenshot, I just don’t want to unnecessarily cover my system with more than abstract examples that don’t say much about what I do)


I now want to switch to hand-writting notes, since there’s still more freedom there, but still haven’t done so yet.

You’ve written in your posts about the ease of the framework, the community, and all that…
But, again, I probably have some overly idealized view, because I’ve long been faced with the need in Obsidian to do some functional customization that can be implemented through plugins, but I just can’t start learning programming for Obsidian, because programming for Obsidian is JS, and I have the impression of JS as some “workarounds” that are not “better” but just “easier” and “faster” - as something that is not needed by default, and exists only because people need to make money, not to design good tools that solve objective problems.
I am ready to spend even 10 years to learn C++ and Python in my spare time, because these tools are perceived as “right” by me, and with these tools I will also be able to customize my main software, not only Obsidian, but I can’t invest my own time and effort in JS and everything related to it.
So it’s pretty hard for me to understand why people are even going in that direction and investing in it, which in the context of my point of view is just fundamentally the wrong direction.
And I have a bit of an internal conflict because, again, Obsidian, as far as I understand it, is implemented with JS, and yet it’s a pretty good tool for me, and I don’t have many complaints about it in relation to other software, and even with all the C++ software that I mentioned above, I continue to use Obsidian…

1 Like

I went through your posts and also taking into account that, no one else has faced these issues much, may be one or two people. The issues seem to be arising specifically from content comprised in the canvas and the vault volume. And I totally understand that, moving forward, when people will use Obsidian for years and when the data will grow too big. That time these issues will be significant. Also, it seems like you are heavy dependent on Canvas plugin, I can’t comment much on this, as I haven’t used it that often, or I hardly use it. I only use Excalidraw for hand-drawing notes.

Additionally, Canvas feature was introduced recently in the Obsidian. So, it might be in the process of improvement. Obsidian team has not been provided much Canvas APIs to interact with it or enhance its functionalities, so plugin developers also can’t do much with it. But improving its performance is totally dependent on Obsidian team, or it is dependent on the libraries they are using to create this canvas, so that library should be powerful enough to do all these canvas operations. So, the only option we are left with is to wait for the future releases of Obsidian, in which canvas will be optimized. I am sure they are working on it, since It’s something they have launched recently, and it’s a very premium feature as well.

While researching about the availability of any such similar tool or the possibility to create a new application with powerful frameworks, I haven’t found anything special, or it will be not worth to go for building anything from scratch. But I came up with an idea that, a separate desktop application can be developed just for this Canvas feature. But again, it will be very limited with the formatting which you get in Obsidian reading view right now. So again won’t be a good idea to go for.

I really appreciate the amount of efforts you have put into testing Obsidian against huge data. This will surely help someone or the other to optimize Obsidian even better.

No, I wasn’t aware of these projects. Thanks for sharing them, though, I was actually going through the Notes project, you sent earlier. But comparatively these two look way more polished, considering they are build using pure C++ and the time the project has been around. I assume these two software has been a popular tools in various Linux platforms, hence maybe these are a little more developed.

I came across the Notes project actually a while back when I was going through projects to start my desktop development. At the same time I also came across the Zed software, but is developed using Rust, which again I haven’t used much at that time, as it was not available for Windows platform. But when I tried it today, I found out that, it has the extension system built-in and someone has created an extension for Markdown files support inspired by Obsidian. But again its only for language support and not much formatting, but internal links do works. And the Zed software cannot be considered for building a canvas plugin, as they are not actually plugin, but just language support, so won’t able to create a custom views in it for canvas and all.

@Sam12, I cant find the original post where you shared the following canvas file, so I am posting it here only, maybe later, I can move this post in that specific topic :

I had tested the following canvas file you shared, I haven’t felt any lag, it works smooth on my system. I think maybe it’s because of your vault size. So that’s something else then.

  • For the below type of canvas files, have you tried keeping the height of the notes in canvas smaller and then scrolling in them to explore the content instead of expanding them completely (like the way I have edited in the below edited file). Were you still facing the issue ?

Canvas file (Edited) : 未命名.zip (3.9 KB)

  • Keeping this Canvas issue at the side, you also mentioned that, you had some problem with rendering, when you opened multiple notes in different windows, was that also related to Canvas, or without any canvas, you are still facing this issue with multiple windows opened. Will like to know more about this issue ?

Hello. I am going to close this thread because it has gone severely off-topic. It is my fault because I should have closed this thread after replying to the OP.

1 Like