Qt is basically used to develop softwares for embedded system, for example the ones which you see on your expensive cars dashboards. They are built using C__ is because, this language is very powerful in terms of processing graphics, so you get a high control of each and every pixel and that inturn help you to render or update those pixels very fast. As you climb up this graphics processing tree, you get the applications which are very responsive and without any lag. And that’s why C++ is used in such mission-critical areas, because your dashboard should update very fast and with high accuracy.
And don’t get me wrong, using Qt you can develop desktop applications and not only with Qt there are few other frameworks as well to develop desktop applications. But you will usually notice that, these are again applications for some high processing operations or usually games.
Now, coming to developing an application like Obsidian using C++. As a quite an experience developer of C++, specifically in graphics processing, I dont think you will be able to achieve the level/state Obsidian is right now or won’t able to build a community like this one. The reason why this is so active community is because, any user can open the developer tool window and do whatever kind of UI customization they wont and even UX wise as well using the js scripts
. So, even if say you are able to reach the state at which Obsidian right now (without any community plugins, ofcorse), its users wont have that much customizability power.
Alright, we are imagining, so lets also imagine that while developing the software, you also able to create some kind of architecture where, people can create plugins using C++ (which will be libraries) or use the JS bundled plugins itself, you will eventually end up with making some kind of interpreter layer to interact with those plugins. And guess what, JS is basically scripts which is translated to machine code using an interpreter which is developed using C++, I guess so. So, the conclusion here is, there is not a big enough community of C++ in this specific area, for bundling some sort of plugins and attaching them to the main application. (I had came across such kind of project a long back, dont remember it now)
But I can guarantee you that, using the libraries in C++, such as CUDA or other graphics library, you will get the best performance what @Sam12 has requested in the various posts. The graphs and performance for rendering the multiple notes as once and also doing the disk operations will be much faster. But again, what will you do with just that many functionalities, you might feel the need to have additional features which is provided by Obsidian through its plugins and the functionality to customize using scripts and style templates.
The reason for writing such a long post, is because, I had thought about it few months back. And if I personally think, its not worth to start the development in terms of creating an exact replica of Obsidian. Because it will take a huge amount of time, after all its C++. But this can be an amazing project for college students, since they will have a lot of time and it will really make your programming concepts strong, as you will get to learn, multiprocessing, graphic processing, etc.
Suggestion : If anyone wants to take it as a project, I would personally recomment, instead of making an application which is just to work with MD files. Develop a framework, wherein:
- If you create a desktop applications, user can customize the UI using mostly CSS language (but C++ do not use CSS to style their applications).
- (Much better idea) It’s possible to create some sort of plugins, this may not be C++ libraries, it can be executables as well. But then each plugin developer will need to make different executables for different OS platforms, so the plugin bundles should be such that, you just put them in the config folder and your application will be able to detect them and load them in the main application.
- Resources for building such an architecture, you can refer to how Notepad++ has been build their system for other people to create plugins and integrate into it and similarly create your own system. Please do not create the application by making fork of Notepad++, its for some reason has become very laggy and buggy. Try to start from scratch for bulding desktop application, refer the Notepad++ project ,only to know how they have implemented the functionality of connecting plugins to main application.
If you are able to create such a thing, then your community might grow faster, depending on how many C++ developers out there, and then creating the main application to work with MD files will be like a cakewalk.