Hacker News new | ask | show | jobs
by jonpalmisc 1641 days ago
Wow, this is incredible. Can’t imagine how much work this took.

Seeing this makes me think about how many modern applications could learn a few things from the old Mac OS 8/9 Human Interface Guidelines. [0]

[0] http://mirror.informatimago.com/next/developer.apple.com/doc...

3 comments

It’s amazing to me how much more usable those UIs are. Not to mention how much more performant they’d be than modern Electron garbage.

But forget about Mac OS 9, we don’t even have native OS X or Windows interfaces anymore. Doesn’t help that Apple dropped the ball on following their own UI guidelines.

This intense hatred for Electron has always baffled me. I thought the community in general was in favour of allowing people to create whatever they wanted, however they wanted. More people making software is good! And the community grows because of it, and everything is better. But every time an electron app gets promoted somewhere (HN/Reddit/Twitter/wherever) there is always _someone_ yelling at the developer because they decided to use Electron.

As a javascript developer, I'm sorry that I don't have the patience/smarts/skills/time to learn C++/Qt/GTK/WxWidgets/etc. HTML/CSS/Javascript is all I know and it's probably all I will reasonably stay with for a while because of various circumstances. And Electron lets me use the knowledge I already have to make things.

That's not to say that Electron doesn't have all these issues, of course. But I feel that this policing of how people write their own software (especially when it's something purely done as a hobby and/or just to share something with people) is getting somewhat out of hand.

Here's a hypotetical/philosophical question for the community in general. Given no other alternatives to do X, what is preferable? An Electron app that allows people to do X, or no app at all?

No app at all. Because that leaves a gap in the market for a native alternative.

That means a potential reward for the patient/smart/etc developer who knows native code, which means a better class of developer, which in turn means better software.

And it means more native apps for the platforms, which means a better class of app.

In short, everything is not better when Electron is everywhere. It actively damages the ecosystems of the platforms that host it.

Native Windows - Win32 - still exists, but all the trendy "modern" stuff seems to be avoiding it, probably because the web stuff is easier to find developers for.
I'm no fan of what HTML has turned in to, but Win32 is hard to find developers for because it's an atrocious pile of crapola that nobody in their right mind touches with a barge pole if they can possibly avoid it. Even Microsoft don't use it anymore, except of course, all the places they do still use it because they never bothered upgrading their apps.
It's not only about web stuff. Microsoft themselves iterated on their standard UI: WPF, then WinRT which is different from win32 UI. It's a mess.

Though it's a mess in Linux as well: Gtk, Qt and some lesser known frameworks.

Not sure about macOS.

Mac just ruthlessly breaks compatibility. Sometimes, that's a good thing.
Everything goes JS (and derivatives) now. At some point we decided to throw cores and RAM at the problem instead of optimizing for speed with limited resources in mind.
Or, because it's nearly unusable due to 30 years of supporting legacy?
I think Electron is quite amazing. It does not deserve this bad reputation that it for some reason has on HN.
Example: On Fedora, I'd install the Arc Theme + some fancy icon pack. The majority of the applications uses the operating system's theming system, which makes all applications look the same. The same buttons, same spacing, same font sizes/types, same colours, same systems shell/window decorations, scroll bars etc. It all behaves and feels native. Most of them also uses the same keyboard shortcut system and accessibility features. Point is, the whole experience is very consistent. They use a tiny amount of disk space and a tiny memory footprint while running.

Problem is, the moment I install any electron/web-based app (Slack, VS Code, Gitkraken, Spotify, Steam etc), they look out of place. They do not conform to the rest of the system. They ignore basic guidelines, spacing is all different, different themes, no native window dressing/menu's, most don't use the tray/notification system correctly etc. Basically they stick out like a fat wart.

Nevermind the resource usage and general laggy UI from these application. Yes, they lag and are slow on all OS's and yes we can notice it. Web tech is cool for what it is within the scope of a webbrowser, but outside of that it is a steaming pile of ...

In the 90s and early 00s it was a sign of professionalism that applications used native OS widgets and respected the theming choices of the user. Sadly, that all went away (about the time the iPhone was released?) and we entered a UX dark age where users only ever get at most 2 choices about theming and UI is considered part of your brand.

People used to say one of the reasons Linux Desktop was shit was that it had so many different look-n-feel's for its disparate applications. Now it is one of the most consistent. People used to say one of the reasons Java was shit because it didn't use native widgets[0] and looked out of place, but now that's the default even for native software. Now we live in an age where developers loudly proclaim their love for bundling an entire web browser as their UI, nothing even remotely resembles the native look-n-feel, and they consider adding a bespoke 'Dark Mode' theme some kind of actually noteworthy achievement.

If personal computing survives the next few decades, future historians will judge us very poorly.

[0] It could, but people used Swing in practice.

No, shoehorning a hypertext document viewer and a bunch of macros into being an application has never been a good idea. Imagine building an app in Word with macros written in its version of visual basic and then being serious about it and distributing it as your official and only desktop experience. That's how I feel about all this electron crap.
Electron is amazing for developers; less so for the end users.

You get faster iteration and more features at the cost of humongous system resource usage. Running several Electron applications, each with their own slightly-outdated Chrome engine, is terrible for battery life and available system resources, but you do get fully-featured applications in no time.

If your users run 32GiB of RAM and at least 8 cores, then Electron should probably be the obvious choice of platform. For most applications, though, I don't think this approach is necessary or even a good idea.

It can also download and execute arbitrary javascript from the web, outside of a normal browser sandbox, effectively turning every app into a potential vector for system takeover, because it is RCE by design.
Yup, as a developer, being able to build a UI once and have it work pretty much identically on Linux, Windows, and MacOS is a huge time saver.

But whenever I actually use an electron app; the startup times and half-baked keyboard support (I know this is the dev's fault, not electron's, but it is much more common on electron apps) always remind me that this isn't the best way to make desktop apps.

> less so for the end users

Speak for yourself. As a user I love Electron apps for all the features they bring out of the box to developers. The alternative to a full featured Electron app is not a full featured native app, it’s no heavy client at all, because almost all the native frameworks suck in more ways than Electron does.

Also I don’t give a crap that my applications all look the same as long as they make sense. And most of the criticism of « buttons that don’t look like buttons » seem just like hidden nostalgia to me, I’ve never seen a button and wondered if it was a button. There are tons of discoverability issues in modern design, but the look of buttons is just not a problem.

You've just described your self as a developer, not an end user. End users are Sharon in HR or Bob in the warehouse.

The comment you replied to is referring to end users who are generally not-technical people and just want to get work done.

Your comment, instead, talks about the developer friendly features of Electron.

They’re arguing: better for developers is better for users. Developers get to spend more time on building features and less on the accidental complexity that comes with supporting all of the competing platforms and frameworks.
Amazing and bad reputation are not mutually exclusive. Electron is an impressive engineering accomplishment, but it also has some dimensions that not everyone likes. Electron is great if you're a developer who wants to write apps in javascript+HTML+CSS and put developer preferences over preferences of users. Not everyone agrees that the decisions behind Electron and using it are good decisions.
> Electron is an impressive engineering accomplishment

...it is? How? It's just a web browser hacked up to allow shit we decided it was a terrible idea to allow a web browser to do just so it can be a GUI for a local application that's probably an order of magnitude or more smaller than it is.

> Electron is great if you're a developer who wants to write apps in javascript+HTML+CSS and put developer preferences over preferences of users

I’m so tired of this. Sure, the case for Electron is that it allows leveraging web-targeting code and skills, which makes more devs able to work on desktop software give the current prevalence of web skills and makes their job easier given the prevalence of web-targeting code that can be reused. But this is in no way user hostile: it means the cost to develop software with any given function is lower in developer hours (and, for commercial entities paying for development, actual $$), which means it is more likely to get done than otherwise, and that it is more likely to be a sustainable proposition to maintain on an ongoing basis. Given that users generally have a preference to have software with the functionality they desire developed and maintained, this is conducive, rather than hostile, to user preferences.

It’s hostile to the preferences of developers who have emotional attachment to particular nonweb (or just emotional hostility to web) technology, who are left in the dust, in terms of meeting users actual needs, by those adopting Electron. Or, less emotionally, it is hostile to preferences of developers who have a substantial investment of time and effort into building marketable nonweb skills in desktop app development, and are finding those skills marginalized in the marketplace by adoption of Electron.

> I’m so tired of this.

... and so do I, as someone supporting a company, looking at why users complain that their shiny new M1 laptops' batteries still sucks. I can tolerate Electron if it's battery-efficient, but everytime we analysed which apps are battery-hungry? Electron apps always tops the list. Not to mention genuine UI concerns like why are some developers insisting on a thin grey font that's genuinely unreadable? And even if it has a decent UI, navigation outside of a mouse-keyboard duo is never there. We have to file multiple bugs on behalf of disabled users because most web devs don't care about accessibility.

In a sense, I wouldn't complain about Electron if these three problems (battery life, genuinely user-hostile UI, poor accessibility) didn't exist (or are few and far between that it became an annoyance instead of being monsters), but here we are. Again, I don't want to waste dev time on inconsequential things like most UI toolkits are insisting. I've worked on apps with Qt and it genuinely sucks, and web development has been genuinely a better development platform (still sucked, but much less), but developing an application predicates on that application not being user-hostile, and Electron (and to be honest, web in general) doesn't encourage the developers to think about these issues.

> I’m so tired of this.

So am I. Not user hostile? Since when is it acceptable to assume that users don't care about efficiency? People care about battery life, people care about responsiveness, and people care about interface consistency. You may be tired, but I'm happy that slowly the tide is turning and people are less friendly to things like Electron that put developer and business priorities before anything else.

I also don’t get the argument that it is a good thing for users to make desktop development open to the glut of web developers we’ve created. Again, that is a developer- and business-centric argument. This feels like saying we all should accept a lower quality of software simply to match an average skill level for a large collection of available programmers. Is it really unreasonable to set our expectations of quality higher than that which an average web developer can (or wants to) achieve?

Maybe people have a preference for software that conforms to a set of often well-thought-of platform UI standards and interoperates seamlessly with their other applications instead of Web applications that don't conform with the platform's standards. Part of what made the Mac and Windows attractive compared to MS-DOS is that the former had UI standards that made it easier for people to use new apps and to interoperate among apps, while in MS-DOS each application implemented its own UI and things like interoperability and accessibility were challenging. The Web is a throwback to MS-DOS-style development, where there are no standard UI guidelines. It's one thing to deal with this when using remotely-hosted Web applications, but it's another thing when an increasing number of desktop apps are essentially locally-hosted Web applications.

The Web is fundamentally a different platform from modern desktop environments; writing desktop applications as if they were Web applications running on beefy servers leads to bad user experiences, just like how Web applications that do not take into account network latency, security, and other aspects of the Web that don't normally apply in native desktop applications leads to bad user experiences.

I'm not saying that Electron is automatically bad. Cross-platform GUIs and other tools have existed for decades due to their labor-saving characteristics, and this is a recurring controversy (for example, Microsoft Word 6 for Macintosh was widely panned by Mac users due to its feeling like a simple port of Word for Windows instead of a tailor-made Mac application, and certain Java GUIs don't fit with the underlying platform's UI standards, though Java does support native UIs). However, I think it's a bad thing for software vendors and developers to take the attitude that users should be grateful for whatever they release, though I admit there is a thin line between expressing dissatisfaction and acting entitled.

That's only mac thing. Windows never (maybe in early 90s?) had any consistency and nobody cares. Just look at control panel.
As a user, I have yet to find an electron app I have tested and kept using.

There are many tools available as electron apps that I have to use for my daily job that I prefer running in a browser window instead of the buggy electron app such as teams or slack. And I don't see any downside in using the website instead of the electron app, quite the contrary in fact. Even on mobile there are some tools that I prefer to run on the browser, mostly for better control of my privacy.

If you develop on the web, develop on the web. If you want to build desktop app, develop your apps like desktop apps. Users will thank you.

Of course it is user hostile!!!! I should not feel like an intel i-7 processor with six cores and 12 threads in a machine with 32 GB of Ram is sometimes not enough to run a fucking chat application without it stuttering; or ramping up the fan like a fucking 747 during take-off should I decide to use to have a video call on this application.
People say that but I have yet to see a C++/Qt app take more time to develop than an Electron app. Case in point: ripcord, a discord AND slack client, developed by a single person in this stack. In the mean time Slack has rewritten their Electron app from scratch, what, three times for the performance problems it has ?
We can do better.
If this were the case, there would be no case for Electron
Electron exists because some developers don't care about their users, that is its case.

Why bother with web widgets, or running daemons with local browser when one can contribute to Google's takeover on the Web.

Electron is the third coming of MSHTML packaged apps and XUL, those died, Electron will eventually follow them.
browsers are the new operating systems
Pity that it all boils down to ChromeOS.
>we don’t even have native OS X or Windows interfaces anymore

Wait you can't just call the respective APIs anymore? I thought the reason people don't use them is not because they aren't available but that 2 different codebases would have to be maintained hence things like Electron.

There's isn't a "the respective API" any more for Windows, it seems. Win32/ATL/Forms don't get the new widgets and design language (just a bit of lookalike styling). WPF, UWP, WinUI 2/3 are all bundled toolkits that mimic the Windows' fashion of the day to varying degrees.
oh ok so yeah, I'm hoping people can continue to write the standard Win32 apps. They can be quite quick. The OP gave me the impression that Win32 was gone. Who cares about the Metro or whatever they have now look. Yuck.
Been working on Cocoa app all week... still using Objective-C too ...
Oh ok thats good. The OP gave me the opposite impression. Other than the boutique software companies that specialize in a few Mac apps, I don't see as much Cocoa anymore and thats a shame.
I agree. You can't find up to date tutorials anymore. I have done enough in the past that I can usually cobble my way through it since I have done a bit of Cocoa programming over the last 18 years -- I don't know how anyone would start from scratch these days.
You might like helloSystem, it's explicitly based on the original Apple HIG:

https://hellosystem.github.io/docs/developer/ux-guidelines.h...

I almost didn’t scroll down and spot the video. What an amazing amount of effort…
Overlooked it too. The mouse wiggling during app loading is subtle.