I often see people talking about the fact that they like a certain open-source application, but ‘it’s a shame it’s on Electron’; what does this mean? Is it a privacy thing or a resource thing?

  • Echedenyan@lemmy.ml
    link
    fedilink
    arrow-up
    30
    arrow-down
    1
    ·
    edit-2
    3 years ago

    Electron is a framework for desktop development based on Chromium.

    It has a big part of Chromium as part of its code but with a wrapper layer to act as a framework.

    With it, you can make desktop apps with PWA (Progressive Web Apps).

    They like some of it because you can get the beauty of CSS and JS effects in a desktop app, but for every of these apps you end running an independent instance of Chromium.

    It doesn’t use system browser engine or one from the installed browsers. Every app you install using it is exactly the same as installing Chrome or Chromium in different folders at your PC and running them at the same time.

    This is why they blame it too.

  • AgreeableLandscape☭@lemmygrad.ml
    link
    fedilink
    arrow-up
    29
    ·
    edit-2
    3 years ago

    Privacy wise: It uses Chromium, which has been shown to have plenty of phone homes back to Google. Even though it’s open source, even projects specifically intended to “de-Google” it, like the Ungoogled Chromium project, are adamant that they’re never sure that they’ve gotten all of it because it’s so pervasive – and Electron uses the vanilla Chromium code straight from Google.

    Other than that, the other, bigger reason is that Electron is extremely inefficient. @dessalines@lemmy.ml mentioned an Electron chat app using 4GB of RAM, and that’s not an exaggeration. You can easily get multi-GB RAM usage on even simple Electron apps. It uses a lot of CPU power too, like when Visual Studio Code used 13% of a CPU just to make the cursor blink.

    Basically, almost anything is a better app platform than Electron. A fully native app in a low-level language is obviously the standard for performance, but even if you don’t want to go through the trouble, languages like Java and Kotlin are still way better than Electron. Hell, even other interpreted languages like Python run circles around Electron, see Blender.

  • MrGamingHimself@lemmy.ml
    link
    fedilink
    arrow-up
    24
    ·
    3 years ago

    Electron apps is essentially running web apps wrapped as a desktop version. Most of them run like garbage and are always inferior to one made specifically for desktops. The only one I’ve used that runs sensibly is Discord.

    As for why people use it, it’s convenient for developers as most of them are familiar with web development and can essentially copy-paste their web application without having to change much.

    • xarvos@lemmy.ml
      link
      fedilink
      arrow-up
      11
      ·
      3 years ago

      Electron apps is essentially running web apps wrapped as a desktop version.

      worse even: it includes different copies of chromium in each app

    • Nathan John Cooper@lemmy.mlOP
      link
      fedilink
      arrow-up
      2
      ·
      3 years ago

      So, I assume there’s not an Electron alternative that is able to port internet desktop applications without any privacy or resource issues?

      • MrGamingHimself@lemmy.ml
        link
        fedilink
        arrow-up
        12
        arrow-down
        2
        ·
        3 years ago

        There isn’t an alternative, Electron actually does its job well for what it is. It’s basically a slimmed down browser that’s customizable and runs on all systems, it’s just that it takes a ton of effort to optimize it, and for some reason most people using it aren’t very experienced.

  • Voxl@lemmy.ml
    link
    fedilink
    arrow-up
    21
    ·
    3 years ago

    Here are some flaws with Electron:

    • High RAM and CPU consumption since it’s based on Chromium
    • Electron apps take too much space as they’re bundled with NodeJS and Chromium runtine
    • Electron apps tend to be slow
    • Terrible sucurity
    • jokeyrhyme@lemmy.ml
      link
      fedilink
      arrow-up
      7
      arrow-down
      1
      ·
      edit-2
      3 years ago

      An Electron app has full access to your filesystem and to other system resources, the same as any other desktop app

      Is there a specific reason or example for why we say it has terrible security here?

      Chromium has an incredibly advanced and optimised graphics pipeline and the code that is running in the “web” part of an Electron app benefits from Chromium’s sandbox

      • AgreeableLandscape☭@lemmygrad.ml
        link
        fedilink
        arrow-up
        6
        ·
        edit-2
        3 years ago

        Is there a specific reason or example for why we say it has terrible security here?

        From what I’ve heard, it’s trivial to accidentally execute an external webapp with the same privileges as the app itself, so you’re one bug away from potentially giving a random website access to your system APIs. For example, an improperly implemented HTML previewer would probably be the easiest way to get pwned in this way, especially since Electron supports the entire Node.js environment and not just browser based JS.

        • jokeyrhyme@lemmy.ml
          link
          fedilink
          arrow-up
          2
          arrow-down
          3
          ·
          3 years ago

          You mean how like nobody ever ever pipes the output of curl into a bash with root privileges? :P

          Maybe we should ban cURL when we ban Electron?

          • AgreeableLandscape☭@lemmygrad.ml
            link
            fedilink
            arrow-up
            8
            ·
            edit-2
            3 years ago

            No, this is worse. With the cURL thing, you know what you’re doing because you literally entered the command, and then you have to enter a password, and you can make your own assessment as to whether it’s a good idea. Also, assuming you’re on an HTTPS connection and trust the source (i.e. reputable software author versus shady pirate site), it’s not actually unsafe.

            Whereas with sandbox breaks in Electron, someone can’t reasonably know that a feature is vulrnable (hell it can take the people who wrote the damn thing years to realize there’s a bug). If you need to open an HTML file in VSCode, are you going to manually audit the previewer implementation? It’s much easier to check your terminal commands for insecure pipes than to check an electron app for sandbox violations.

            • jokeyrhyme@lemmy.ml
              link
              fedilink
              arrow-up
              2
              arrow-down
              1
              ·
              3 years ago

              I guess a better parallel is using C/C++ to write software, where it is trivially easy to mismanaged memory in ways that cause 70% of CVEs

              If we were being consistent, we’d be trying to eliminate all software written in any language or framework where it is trivially easy to introduce security issues

              I wonder how many anti-Electron folks are also logically anti-C/C++ ?

  • jokeyrhyme@lemmy.ml
    link
    fedilink
    arrow-up
    18
    arrow-down
    1
    ·
    3 years ago

    People complain about Electron, but without it there would probably be even fewer cross-platform apps today

    Some aspects of it might be less than perfect, but let’s not allow perfect to be the enemy of good

    Electron doesn’t automatically mean that an app is bad, just like Unity doesn’t automatically mean that a game is good

    • ☆ Yσɠƚԋσʂ ☆@lemmy.ml
      link
      fedilink
      arrow-up
      12
      arrow-down
      1
      ·
      3 years ago

      Completely agree, thanks to Electron we now have many mainstream apps working on Linux and that just wouldn’t have happened otherwise. Whatever technological problems Electron has can be addressed down the road, and are outweighed by the value of lowering the barrier of creating cross-platform applications.

        • ☆ Yσɠƚԋσʂ ☆@lemmy.ml
          link
          fedilink
          arrow-up
          4
          ·
          3 years ago

          Pluggable engines would be nice, but I feel like it’s less of a concern for stuff like Electron where you’re making apps with it. I’d be more interested in addressing memory usage and cutting out stuff that’s not really needed for apps that’s part of the browser engine. Ideally, it should be modular so that you can include just the stuff your app uses to keep it lean. Perhaps using an approach similar to GraalVM could be taken as well to reduce resource usage.

    • Helix 🧬@feddit.de
      link
      fedilink
      arrow-up
      4
      ·
      3 years ago

      Or you could just use the offline functionality built into browsers nowadays instead of Electron.

    • Sr Estegosaurio@lemmy.ml
      link
      fedilink
      arrow-up
      2
      ·
      3 years ago

      Thank you for pointing this out. Atm I only use Discord (bc my friends “lIkE tHiR UI” and refuse to use mumble…) bit if I had to go through the pain of using more electron crap I think that that app would be a cool solution