Almost no other platform can guarantee that a UI elements will look pretty much exactly the same on all different operating systems.
Most people don't mind the extra RAM consumption for some applications... as long as the app works!
Almost no other platform can guarantee that a UI elements will look pretty much exactly the same on all different operating systems.
Most people don't mind the extra RAM consumption for some applications... as long as the app works!
Apps are lauded for providing "dark mode" now; when ten years ago I simply switched GTK themes.
To say nothing of accessibility.
We've gone way backwards in UX.
Even "simple" stuff like Tcl/Tk is not trivial to get working easily or well.
HTML + CSS + something like React is miles simpler than writing something for Gtk. Qt has QML now but the C++ Qt bindings are _pretty hard_! And after all that work you don't (by default) get an app that resizes as nicely as the HTML/CSS box model does!
I think that WxWidgets has one of the better usability stories for cross-platform native, though.
If someone wrote a good feeling UI library that generated native UIs and had good JS and Python bindings, so many people would be happy to use it, I think. But right now, despite all the shortcomings, web tech is pretty easy to prototype in.
In a perfect world, every application would have minimal dependencies required by the OS, and completely encapsulate their runtime and UI components, making them very portable... which is basically web apps, hence Electron's popularity...
And different systems have different UI requirements, so I don't think it makes sense in many cases to have the same UI between them. iOS and Android, for example, have very different standards surrounding what buttons mean, and how the navigation should work. The back button on Android, for example, completely removes the need to a back button in the application, while in iOS it is still required. And of course if you are making an application that runs on both touch screen devices, and devices with keyboards, the UI should definitely not be the same.
But, the trade off is simply unpredictability. The app is assuming that the OS has all the components it needs, at the correct version etc. Not all OS's have all components you think, which leads to unreliable user interfaces, which may work for small applications with only a few OS dependencies, but as the app grows the reliability decreases...
You're correct in saying the UI should not be the same on every platform (iOS, Android, Windows). But in my opinion the app should encapsulate it's UI and share as little as possible with the host OS.
If a component is not available, it means it's not appropriate for that platform or not part of the UX guidelines.
At least the web platform is open enough to do this and still function.
Except for working pretty well on most apps
>However, if you change things like stylesheets and icons, you should be aware that you’re in unsupported territory. Any issues you encounter should be reported to the theme developer, not the app developer.
Themes are rarely problematic and it would take 10 seconds to check if one supposed it to be problematic.
They could perhaps work on solving actual problems.
Or you can just accept that whenever you let someone configure the UI in an advanced way, it is possible for them to make the UI more confusing. Just because it is possible for someone to mess up your app with a bad config, doesn't mean it is best to remove any kind of configuration at all.
Your "perfect" world isn't. It leads to a fragmented landscape of competing runtimes and UIs, is inefficient and results in extra implementation effort.
The JS community can't even be trusted to be stewards of a left pad library, never mind UI environments.
Designers.
End users simply want a functional, working product. Polish on top is a nice added bonus, but these days it's been turned into the focal point of software development. A Teams/Slack-caliber project begins with product requirements, immediately followed by design and UI mocks - the software/tech always comes last.
A computer program is a tool to convert data from one form to another. FULL STOP. Unnecessary added complexity, on top of that data transformation, is wasted effort, wasted time, wasted energy.
Software development has caused so many problems for itself because of things like this. People forget so quickly that programming is not the job! Solving the data transformation problem is the job. Effort spent that does not solve the problem is wasted effort, and we've made a fucking industry that churns out far more waste than product.
Now it's all JS and Electron and every single complaint people used against Java is an order of magnitude worse and everybody seems to be happy about it.
Progress have definitely been going backwards.