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.
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.
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.
It's inevitable. As the open runtime of the web becomes better and better, it will take over everything else. MSIE, Real video, ActiveX, Flash, they all died because of this unstoppable train. And everything else will die too, including all native apps. Native apps used to have a performance edge, but that pretty much only remains for hard realtime stuff and it's just a matter of time before this web runtime takes that over too. It's a pity we ended up with JavaScript, but it's still a million times better than writing your app twice only to have it run on a fraction of platforms. The last major hurdle we need to take, are the platform specific app stores that still provide their owners with a reason to keep favoring their platform specific solutions over a more open approach, but eventually those will die too. It's inevitable.
0x or or snor perron?!
Are there actually any "Electron" apps anywhere?
Electron's issue is that it can't share resources. If you are running 2 electron apps, you're basically running two wholly independent instances of Chrome and node.js, in addition to everything else.
Chrome's PWA support alleviates that because it runs the PWAs basically like a tab. The bulk of the browser engine exists in a single memory space.
So given that Microsoft was already starting down the PWA path in Edge + Windows 10 (plus Windows store), it makes me wonder why Electron is even relevant. Proper PWA support makes Electron most irrelevant - a stop-gap transitional measure to show there was an audience for that sort of thing.
Electron is still useful for apps that have to read-write from the local filesystem (editors), as a way to package relatively simple Node.js apps with a GUI attached, but one must accept the resource hogging that goes with it.
Things will change again, but often you can't know all the problems a particular architectural approach (like Electron) will have until you do it. Then use that to come up with something better.
"But remember, most lynch mobs aren't this nice." (H.Simpson)
-- Joe
You mean like the fucking idiots who don't put the cancel button on the left like they should?
#DeleteFacebook
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.
It doesn't sound like it meets Churchil's criteria at all. It sounds like it's building cruft no one understands on top of cruft no one understands on top of cruft no one understands, and no one is bothering to understand each of the levels, and each level already does what you think you need the other levels for.
I think you could fix the quote by removing all the words after, "applications"
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.
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.
You should not be knocking on JS. It's a perfectly fine, sophisticated, expressive language
JS can get things done that all other languages have failed at over multiple-decades of trying. .
As evidenced by the existence of Electron. The only existing, drop dead simple, way to make cross platform GUI apps.
Yes, you nerds failed. Younger nerds have succeeded.
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.
You can do it that way. But you can also just ship the JS/HTML/CSS in a bundle and rely on the client to already have the required electron libraries installed.
You know, like every other piece of software in the world. Your feeble attempt to make this somehow new and weird and bad is pathetic.
Uh...what part of "-style chat interface" did you not get? They didn't say it was IRC full stop, they said it's a chat interface in a similar style to IRC. Does storage and forwarding of messages and files while you're offline require a full web client and server packaged together as client software? Does voice chat? Does a membership and permissions system require that? None of what you're saying addresses the complaint being made regarding extreme resource usage for relatively simple software.
Remember that Skype supported chat, voice, and offline messaging even in the mid-2000s. It was built to work even on old Windows 2000 machines and in 2005 when even cheaper new machines were shipping with 512MB standard, it required that the machine have a minimum of 128MB of RAM for Skype plus the entire OS and other running software. Meanwhile, the post you responded to complained about multiple GB of RAM used by Slack a single application that doesn't do very much more than Skype from 2005 did and offers a proprietary system only instead of a universal standard like IRC or XMPP.
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.
I don't know who those people are, nor do I care who they are or what their opinions are. IRC sucks and always has. An assertion of "inferior" always seems to be missing important parts of the assertion: to whom, for what purposes? Forums and mailing lists are objectively better than any chat application for situations where clearly thought out and sometimes very detailed responses that can be skimmed at the reader's leisure are desirable. I can subscribe to a mailing list or read a forum without a site-specific account; I can't do that with proprietary IRC on steroids clients like Slack and Discord. If I need to discuss in near real-time, chat makes a lot more sense and mailing lists and forums are unnecessarily slow and frustrating.
Microsoft centralized Skype for data siphoning and control; everything else is a side effect. Skype has also been absolute trash ever since they did so. P2P Skype worked just fine when both people were behind NATs; it's called UDP hole punching and it is quite effective for the type of NAT that is in widespread use in homes and small businesses. I'd hardly call Electron a native application; if anything, it's more of an elaborate emulator.