Slashdot Mirror


Electron and the Decline of Native Apps (daringfireball.net)

SwiftOnSecurity, regarding Microsoft's switch to Chromium as Windows's built-in rendering engine: This isn't about Chrome. This is about ElectronJS. Microsoft thinks EdgeHTML cannot get to drop-in feature-parity with Chromium to replace it in Electron apps, whose duplication is becoming a significant performance drain. They want to single-instance Electron with their own fork. Electron is a cancer murdering both macOS and Windows as it proliferates. Microsoft must offer a drop-in version with native optimizations to improve performance and resource utilization. This is the end of desktop applications. There's nowhere but JavaScript. John Gruber of DaringFireball: I don't share the depth of their pessimism regarding native apps, but Electron is without question a scourge. I think the Mac will prove more resilient than Windows, because the Mac is the platform that attracts people who care. But I worry. In some ways, the worst thing that ever happened to the Mac is that it got so much more popular a decade ago. In theory, that should have been nothing but good news for the platform -- more users means more attention from developers. The more Mac users there are, the more Mac apps we should see.

The problem is, the users who really care about good native apps -- users who know HIG violations when they see them, who care about performance, who care about Mac apps being right -- were mostly already on the Mac. A lot of newer Mac users either don't know or don't care about what makes for a good Mac app.

21 of 328 comments (clear)

  1. Wha?? by Dan+East · · Score: 4, Insightful

    I feel like I just walked in on a conversation between two people about a topic I care nothing about. Should I care, or maybe do I already care? Possibly, but I have no idea what they're talking about to know.

    --
    Better known as 318230.
    1. Re:Wha?? by 110010001000 · · Score: 4, Insightful

      Sounds like the webapp hipsters are upset about something. Not sure what. WTF is "Electron"?

    2. Re:Wha?? by Entrope · · Score: 5, Informative

      Electron is an app "platform" that basically involves installing an app-private copy of Chromium, a node.js webserver, and running the application's logic mostly in Javascript between the two.

      To paraphrase Churchill, Electron is the worst architecture for desktop applications, except for all the other ones that have been tried.

    3. Re:Wha?? by 110010001000 · · Score: 5, Insightful

      We call them "programs" not "apps". Stupid hipsters.

    4. Re:Wha?? by wierd_w · · Score: 4, Interesting

      No, It's a native app greybeard, and a "TRUE apple hipster!" that are upset about something,

      That something being Electron, which from the sound of things, is a solution looking for a problem. (Or a problem pretending to be a solution? Hard to tell anymore.)

      Basically, somebody got the bright idea that thin clients were awesome, and are trying OH so hard to drag the world back into that dark and dismal corner. The sensible native app greybeard says "Uh, that's retarded." and the "TRUE apple hipster" goes on some tirade about how Apple was supposed to save us from this horror, but True Apple HIpsters are rare now, because apple became popular, and no longer hip.

    5. Re:Wha?? by tepples · · Score: 4, Informative

      Chromium is Google Chrome with the few proprietary components (mostly Adobe Flash Player and video DRM) stripped out.
      Node.js is Chromium's JavaScript engine repurposed as a server-side language.
      Electron, an application framework that Microsoft acquired when it bought GitHub, is a way to build a copy of Chromium hardcoded to one website, possibly bundled with Node.js. This allows a developer to ship a web application that can be installed as a desktop application.

      Electron shares many disadvantages with the web platform. But one significant advantage of Electron is that you're less likely to get "Sorry! This application is not yet available for your platform. Subscribe to our mailing list to be the first to know when the crowdfunding campaign to port this application to your platform begins."

    6. Re:Wha?? by 110010001000 · · Score: 4, Insightful

      So you ship a web browser, and a client, and application logic and call it an "app"? That explains a lot about 2018.

    7. Re:Wha?? by 110010001000 · · Score: 4, Informative

      Real greybeards call them "programs", because believe it or not everything that runs on a computer is a "program". I know, hard to believe, but computers still work the same way they did since the 1950's.

    8. Re:Wha?? by ShanghaiBill · · Score: 4, Interesting

      That explains a lot about 2018.

      It says a lot about the human condition. We have a terrible habit of settling on suboptimal solutions.

      It is great to have a single cross-platform standard. But really, JavaScript? We could have done far better than that.

      As nerds, we have collectively failed humanity.

    9. Re:Wha?? by 110010001000 · · Score: 5, Insightful

      I think the nerds have all retired at this point and the industry is being taken over by people who are used to closed systems like tablets, phones, etc. They don't understand the concept of "personal computing".

    10. Re:Wha?? by nine-times · · Score: 5, Informative

      I'll give a simple explanation, as best I understand it:

      In order to make it easier to build applications that work on Windows, Mac, and Linux without completely rebuilding it for each platform, a lot of developers have resorted to basically building web applications, and then making them available in a specialized web browser called "Electron". Electron is basically a stripped down browser that allows the web application to behave more like a native application. So you might care at least a little bit, since it's possible you're already some of these Electron applications and not know it.

      So that's kind of a good thing, that developers can more easily make cross-platform applications. The problem is, if each application is running its own web browser, then you end up installing and running a bunch of web browsers simultaneously. That ends up being a bigger drain on system resources than if they were native apps, or if you just had them all running on the same web browser.

      Microsoft wants to fix that problem, for Windows at least, by working on how all these Electron apps integrate with the operating system's built-in browser, so that they can manage those resources better. There's a big problem with the idea: Electron doesn't integrate with their own built-in browser. Electron uses Google Chrome, and Microsoft can't easily make the apps use their own browser instead. So instead of trying to make these Chrome-based apps use Edge, they're rewriting Edge to be based on Chrome. Once that's done, they can work on getting the electron apps to use their own built-in browser, and then they can work on that browser to improve performance of those apps.

    11. Re:Wha?? by _merlin · · Score: 4, Insightful

      Nope, I always notice because I wonder why the app is such a resource hog, then I find out it's one of these Chromium things.

    12. Re:Wha?? by nctritech · · Score: 4, Insightful

      "App" is a short name for "application" and "application" in computer terms is just a synonym for "computer program used directly by the user." GUI interfaces are not required. Text-mode DOS programs were also referred to as "applications." While they are not 100% synonymous (the Linux kernel is not an "application," for example, nor is a system service such as a print spooler or database engine core) they are synonymous when referring to programs that are directly utilized by the computer's user. grep, sed, perl, Word, iMessage, and Firefox are all categorizable as both applications and programs, or just "application programs." The most correct term to exclude non-GUI software would be "desktop application" which implies a graphical "desktop" environment is required, though in the age of smartphones the desktop paradigm is not always part of a GUI anymore.

      tl;dr: all apps are programs, not all programs are apps, GEOS is better than Windows 10

    13. Re:Wha?? by shess · · Score: 4, Interesting

      Electron is an app "platform" that basically involves installing an app-private copy of Chromium, a node.js webserver, and running the application's logic mostly in Javascript between the two.

      To paraphrase Churchill, Electron is the worst architecture for desktop applications, except for all the other ones that have been tried.

      This is bad because it's the developer offloading their problems onto the user. The user can just download the 100M zip file which is a 40-line shell-script wrapper, the user can just easter-egg hunt to figure out the UI, the user can just pull the web platform into their local domain and hope for the best as far as security, etc. Since the app is based on 96 third_party dependencies, the user can also pay the price nine months later when the app stops working because while the OS developers are paying attention to not breaking their exposed APIs too badly, nobody can really maintain that amount of API surface coherently.

      Basically, Electron is Flash.

    14. Re:Wha?? by smoot123 · · Score: 4, Interesting

      It is great to have a single cross-platform standard. But really, JavaScript? We could have done far better than that.

      As nerds, we have collectively failed humanity.

      s/JavaScript/x86/g

      Thing is, as an app developer, I really don't want to write a separate app for iOS, Android, macOS, Windows, and Linux. We've been trying for years to develop platforms to abstract away the GUI from the platform to solve this problem. I've seen at least a half dozen come and go. They all are great in some ways and all suck in significant other ways.

      You'd think by now we'd have found a good compromise. But we haven't. We're still exploring human-computer interfaces and it seems we still keep finding good but mostly incompatible ways to interact. And about the time we figure out we don't care about fighting GUI wars any more, we'll have to worry about writing cross-platform skills for Siri, Alexa, Cortana, and Google.

    15. Re:Wha?? by nine-times · · Score: 5, Informative

      why does Microsoft care enough about the desktop experience to bother doing this?

      Well there are a lot of complicated issues in play. Again, to try to keep it simple:

      Their vendor lock-in on the desktop is not what it once was, and you see them moving increasingly into web applications and services, open source, and cross-platform projects. They're foreseeing that, even if people continue to use their operating systems, they won't be able to rely on vendor lock-in to force people onto the OS.

      They're already knee-deep in this "Electron" stuff. They already have applications on Electron (e.g. Skype, Teams, Visual Studio Code), and I think their "Modern" applications work in a similar way. I would bet that in the coming years, you'll see more and more applications move to being web applications in a wrapper. We may even see them eventually get their Office web applications in this form as a replacement for the existing native apps. That would remove the need for them to duplicate their efforts in making a separate Mac version, and they could even support Linux without extra effort.

      Even if they weren't doing this themselves, you have a bunch of developers doing it, and it's going to continue to be a thing whether Microsoft likes it or not. If they want to stay relevant and keep people on their platform, they need to try to be the best platform to run these kinds of applications on.

      Aside from all that, it really makes more sense at this point for Microsoft to use Chromium instead of continuing to build their own browser engines. They lost the browser wars. For most web developers, Chrome is their target browser. Safari and Chrome, and therefore pretty much all mobile browsers, are based off of the same code base. They can spend a lot of time and money trying to build something that works just like Chrome, or they can just use the existing open source code.

  2. Discord, Slack, Skype, and Visual Studio Code by tepples · · Score: 5, Informative

    Discord (desktop version), Slack (desktop version), Skype (desktop version), and Visual Studio Code are all made with Electron. But the differences between Discord (desktop version) and Discordapp.com are quite minor: the option to let others know what game you are playing at the moment, system-wide push-to-talk in voice channels, and video chat capability.

    1. Re:Discord, Slack, Skype, and Visual Studio Code by jittles · · Score: 4, Interesting

      Oh, huh. That is pretty cool. I am not sure what those are, except for Skype, but sounds very good. I can feel my ironic beard growing.

      What Tepples doesn't point out is that Slack, a simple IRC style chat interface, can easily consume multiple gigabytes of RAM and the more instances you have your slack client connected to, the higher the GB consumption soars. Discord also causes performance problems on my gaming PC when certain things happen. I'm not sure what event is causing it, but it temporarily hangs games while playing some sort of chime over my headset. And that's with a very high end gaming PC.

    2. Re:Discord, Slack, Skype, and Visual Studio Code by ShanghaiBill · · Score: 4, Insightful

      Oh, so it sounds like Java apps again.

      No. This is much worse than Java.

      Java was designed by professionals, like James Gosling, who knew what they were doing. In theory, I was a great solution. It was only when corporations started subverting the ideals and trying to lock in incompatibility that the dream died.

      "JavaScript on the desktop" is completely idiotic, even in theory. It is an absolutely horrible thing to standardize on.

  3. Apple aside... by Dasher42 · · Score: 5, Insightful

    I'm not an Apple user anymore, but I completely feel that Electron is the software engineering equivalent of flinging poo.

    Let's just look at the minimum requirements to run Atom, an Electron-based text editor with IDE extensions

    Processor - 1.8 GHz or higher Pentium 4 (or equivalent)
    Memory - 2 GB RAM (minimum 1 GB dedicated to Atom, Molecule node, or Cloud Molecule)
    Hard disk - 50 MB for run-time and configuration, 10 GB for data archiving

    Are you freaking kidding me? For a text editor? I don't care how much bling it has, that's inexcusable. All this engineering we've done, all the rare earths we've mined, all the research on battery life has to go down the toilet because we're sending Javascript developers to do a systems programmer's job? My phone's battery has to go to shit for Slack, and my laptop has to overheat and stay on a power cord for Atom?

    That's freaking irresponsible. There's little these apps do that vim and emacs and IRC haven't done for decades for a tiny percentage of these requirements.

    Cross-platform development has been done way better than this already. but the training wheel languages have got to go.

  4. Does this explain app-ification? by mpercy · · Score: 4, Insightful

    A number of the website that I have used for a long time seem to recently have taken a HUGE turn for the worse when they unveiled new "app-ified" look and feel and operational flows. These are not widely-used sites, things like the tee-time scheduler at my favorite golf course and the portal site my employers contract with for unified benefits access.

    These sites used to be pretty well done, and even as a professional software developer (albeit one who mostly does radar signal processor development) I had few complaints. But over the last year or so, all these sites trashed their old implementations for new ones that look like they've been slapped together by tweens on crack who's only test platform is an iPhone. It may look fine on a phone to have 20mm by 20mm buttons to touch, but those huge buttons mean nothing to my desktop. Having to run through 15 different "next" screens because you can only fit just so many 20mm x 20mm buttons on a phone screen and still present any meaningful information or functions is NOT an improvement when I've got three 27-inch monitors hooked to my desktop.

    And it's pretty clear none of the developers have actually USED these appy-apps, even on their phones because they just freaking don't work. For example, the legacy golf course website let you setup "buddy lists" so if you were reserving a foursome (or 2), you could just click 3 or 7 buddies from the list and bam you're done. The new appy-app preserved the buddy list, but it takes two clicks to access, and you can select one and only one buddy per access...each time to click a buddy he is added, but you're also dropped immediately back to the top menu and and you have to continue and make those multiple click for each person. If any of them had ever used the app, they'd realize immediately that "hmm, maybe we can allow multiple selections here before dropping back"...but they didn't have any more room for yet another 20mm x 20mm button...