Hacker News new | ask | show | jobs
by cjk2 806 days ago
It's because the user interface is actually consistent and normalised across the whole platform and the paradigms are well documented and understood by the developers producing software.

On Windows and Linux one minute you're constantly poked in the eye by fucked up scaling issues, different toolkit weirdness and quirks, various layers of abandoned shit going back 25 years and people with the design ability of a three legged goat with cataracts. It is fatiguing.

2 comments

This is a brilliant summary. I mean… less of the goat bashing… but otherwise you summed it up pretty nicely.
but anyone can create an electron app these days with total control over the UI polish with way less effort.

in fact electron seems like the perfect use case here for a ffmpeg UI wrapper. surprised no one has done it.

> UI polish with way less effort.

Clearly not. The least effort is to use the platform’s native widgets, or at least a decent toolkit. Those shiny web-based interfaces suck because the developer never put the effort to make the widgets behave as they should, and that’s because it’s actually very hard and expensive to build a UI framework from the ground up. Have a look at UITextField or NSTextField and what they do out of the box for free, for every single application. Nobody is going to implement half of that in their fancy text boxes. The only reason it takes less effort is that everybody half-arses it.

The consequence is that most Electron apps are a dog’s breakfast and the polar opposite of consistent and well made.

The least effort would be to use Qt. It's way easier to use than the native toolkit(s), and already looks native on every platform.
In my experience, producing a polished Electron/web app takes substantially more effort than it does to produce an AppKit/UIKit equivalent. Those don’t get you multiplatform, but that’s why a lot of devs who care about these things only publish for macOS and iOS.
Going the Electron route is the first and strongest signal that the developer doesn't care about the tid bits that makes a great app. Have never saw a good designed Electron app.
Not that it really matters I guess, but electron apps are chunky. Huge bin size and large memory usage.
were talking about a tiny desktop app that wraps ffmpeg CLI. this is the perfect use case for it, over, say, VISUAL STUDIO CODE.
I actually think VSCode is one of the best use cases for Electron. It enables a robust and well-documented set of APIs for extension and theme developers, which IMO is why it has one of the most thriving extension ecosystems out there.

Disclaimer: I work at Microsoft, but not in Developer Division.

> It enables a robust and well-documented set of APIs for extension and theme developers

Didn't VIM and Emacs have that for ages? Look at https://vimawesome.com/. I think the remote development extension is nice, but most people would just SSH and run their editor on the server or sync their project's files.

The Emacs APIs aren't exactly robust in the modern sense. They don't have the security and privilege isolation that VS Code's TypeScript APIs have.
The perfect use case for a massive incredibly complex browser runtime is...a tiny desktop app? What?
Do you as a user seriously want a 400MB binary that takes up 1 GB of memory at least just to have a sluggish interface to run a command line program for you when it could be an instant GUI that takes up 1 MB of memory ?

Why would anyone want something taking up literally 1000x the resources it needs to?

People rage about Electron being insecure and bloated, but by Jove it’s a godsend for consistency and portability.
Electron and consistency?? I get Electron being easier to develop for, but it achieves portability by ignoring platform native UI guidelines. There is no consistency at all between electron apps.
Hey, maybe I want to learn two dozen different slightly incompatible UI paradigms! If I don't have constant impedance mismatches I might get lazy and be able to operate my computer with continuous partial attention and actually focus on the task at hand! Shit, just imagine the horror if two different applications could grab keyboard focus correctly without clicking some input field. My fingers might never leave the keyboard!
I grew up with this mindset on macOS/iOS, and went with it for many years.

Apple itself isn't consistent enough anymore for it to matter / there to be one true way. Pick a design system and roll with it, definitely - but slavishly trying to figure out the One True Way on a particular platform A) isn't likely to work out, even just focusing on design B) is a long-term handicap. Most people have a mix of devices in their life.

A soothing thought if that's hard to process: Jony Ive always had something to say about how the hardware becomes the app, especially post-iPhone. People expect the app to be familiar across platforms. (of course, there's all sorts of nerd-sniping caveats from there. Of _course_ you should use the platform's print dialog, etc. But don't get hung up on ex. what the Apple Reminders app looks like this year on iOS and OS X)

Consistency >for portability
> There is no consistency at all between electron apps.

No, there is not but there is consistency between platforms of the same electron app. Something that's much harder to do if you write a native app.

The reality is that for most people, they use an app on a sibgle platform (typical end users don’t constantly switch between Windows, Linux, and macOS) so that consistency does not primarily benefit the end-user.
Exactly. The consistency being extolled here is not from the perspective of the users but of the marketing department that wants to warp basic UI conventions in service of making their branding a more pervasive part of the user experience. Users basically never want you to give them an app where even the buttons and scroll bars are changed to comply with your corporate style guide.
I see people say this sometimes but I never see anyone who has used a regular GUI library like FLTK or Qt say this.

Most of the time it's people who only know javascript and have never even heard of GUI libraries that say this.

There is LosslessCut[1], though it's only designed to handle trimming and not general re-encoding.

[1]: https://github.com/mifi/lossless-cut

if you re-encoded then it wouldn't be lossless anymore?
Electron serves the developer not the user.

It also looks shit on every platform then.

And eats all your RAM

The complaint that Chrome eats all your RAM is because it starts a new process for each tab, with all the overhead that entails. You’re not using multiple tabs in an Electron app.
No instead I run 50 standalone browsers with one tab each on my machine ...
The overheard prevents any one tab from taking out the entire browser though.
Chrome has good reason to use multiple processes, but criticism of Chrome doesn’t necessarily apply to Electron apps.
That’s not the complaint lol