Comment by system7rocks

8 months ago

I’ve been using other apps than Obsidian for notes and sharing, so this is nice to read and consider. But isn’t Obsidian an electron app or whatever? Electron has always seemed resource intensive and not native. JavaScript has never struck me as “secure”. Am I just out of touch?

JavaScript is a very secure language. The browser is a massive success at running secure JavaScript on a global scale. Every website you use is running JavaScript and not able to read other site data. Electron is the same, running v8 to sandbox JavaScript. Assuming you aren't executing user input inside that sandbox (something many programming languages allow, including JS), it's very secure.

The problem with supply chain attacks is specifically related to npm, and not related to JS. npm as an organization needs to be taking more responsibility for the recent attacks and essentially forcing everyone to use more strict security controls when publishing their dependencies.

  • Doesn’t this mean browser sandboxing is secure, not JS? Or are you referring to some specific aspect of JS I’m not aware of? (I’m not aware of a lot of JS)

    It’s maybe a nit-pick, since most JS is run sandboxed, so it’s sort of equivalent. But it was explicitly what GP asked for. Would it be more accurate to say Electron is secure, not JS?

    • I'm really curious about this comment. What would it mean for a programming language to be secure?

      Any two Turing-complete programming languages are equally secure, no?

      Surely the security can only ever come from whatever compiles/interprets it? You can run JavaScript on a piece of paper.

      2 replies →

    • I mean, JavaScript doesn’t even have APIs for reading a file from disk, let alone executing an arbitrary binary. (Anything similar comes from a runtime like NodeJS.) You can’t access memory in different JS processes… so what would make it insecure?

      To be fair, a plugin system built on JS with all plugins interacting in the same JS context as the main app has some big risks. Anything plugin can change definitions and variable in the global scope with some restrictions. But any language where you execute untrusted code in the same context/memory/etc as trusted code has risks. the only solution is sandboxing plugins

  • None of this makes or is a result of the language js (being) secure. Security is far and away predominantly a matter of how it's used, not a character of them language itself. "Safety" helps, but you can still easily write and package unsafe and insecure code in "safe" languages like rust, just as you can in C, JS, python, etc etc etc.

Javascript is probably one of the most used, depending on how you measure it, languages on earth.

It runs on a majority of computers and basically all phones. There will be many security issues that get discovered b y virtue of these facts.

What makes you think that "native" apps are any more secure?

Not a huge electron fan (thank god for tauri), but Obsidian is a fantastic app and you shouldn't let the electron put you off of it. You can even hook a MCP up to it and an agent can use it as a personal knowledge base, it's quite handy.

  • > Thank god for tauri

    I’d love to try it, but speaking of security, this was the first thing I saw:

    sh <(curl https://create.tauri.app/sh)

    • Right. But you know how to fetch and inspect (yea?) so, I with you that piping random crap to sh is bad. Maybe these snips encourage that behavior.

      Tauri is trustable (for some loose definition) and the pipe to shell is just a well known happy-path.

      All that to say it's a low value smell test.

      Also, I'm in the camp that would rather git clone and then docker up. My understanding is it gives me a littl more sandbox.

      2 replies →

No, it's not really an issue. GitHub and VS Code are also Electron apps. So are Slack and Discord. Postman is, as well.

I'd also be forced to ask... what exactly are you doing with a markdown note-taking application such that performance is a legitimate concern?

But, I mean, maybe you're reading this in a Lynx session on your ThinkPad 701C.

  • > what exactly are you doing with a markdown note-taking application such that performance is a legitimate concern?

    Launching it and expecting a fast startup.

If you have to render html, which is what markdown ultimately becomes, you might as well use a web broswer.

It is resource intensive.

It's not a problem on pc, but an obsidian vault with thousands of notes can have a laggy startup on mobile, even if you disable plugins.

Users sidestep this issue with quick capture plugins and apps, but I wish there was a native stripped-down version of obsidian.

Javascript is a lot more secure than C++, since it's a memory managed language.

  • Buffer overflows are 0.001 percent of security incidents in practice.

    Let's fix private key leakage and supply chain issues before worrying about C++ haxxors p0wning your machines.

    • Memory management vulnerabilities are estimated to account for 70% of bugs.

      As less code at trust boundaries is being written in memory-unsafe languages, we'll get to 0.001%!

      1 reply →