> 2.1) I want to ship something that looks the same on Windows / Linux / MacOS
As a user: No no no, please, no.
I want apps to fit the look, feel, and idioms of the OS I'm currently in, not "look the same" on every OS.
For example. macOS in particular has many builtin features that work in all apps with standard controls. Like text-to-speech, or converting selected text into all-caps, lowercase, or capitalized. Or custom services/scripts built in Automator.
I may not always use these little tricks all the time, but when they fail to work in some app, it immediately feels lower quality, suspicious, and/or suggests a lazy developer.
It's not pleasant to use something that ignores the special features of a platform in favor of the lowest common denominator.
Personally, I find that most modern UIs that explicitly do not conform to an OS’s opinionated UI design style (for example: the majority of web stack UIs[1]), are often better in almost every way vs apps that do conform to OS style!
When I’m using an advanced UI to do some specialized task, I generally appreciate when the UI patterns I learn on one OS transfer seamlessly to any other device and OS I may use to do the same task.
But I especially appreciate that apps can choose the UI style and design to suit the task at hand, rather than some notion of conforming to OS style patterns that may or may not work in its favor. For example, I prefer that Visual Studio Code looks the same on all platforms, because I find its UI to be superior to the default style of any OS!
What do you think about these thoughts? Am I alone in preferring custom UIs per app, with consistent app experience across devices?
[1] For the sake of this argument, I’m not counting differences in runtime performance and efficiency, since that’s a whole other topic, and one theoretically orthogonal to the UI design.
1. The reason for platform UI conventions is so users can transfer knowledge between apps. Some specialized apps may want to establish their own conventions, because they are aimed at experts who will be investing a lot of time in the app. Most apps aren't in that category.
2. HTML and JS make sucky UIs regardless of how much "work pools", because the underlying APIs are limited and incomplete. For example, scrolling: there is no native support for large tables in HTML, so apps either do some janky faulting in like infinite scroll, or reimplement scrolling entirely. Cut/copy/paste/undo is another example, along with keyboard navigation in general.
Custom UIs by themselves are not the culprit. Apple itself is "guilty" of that, using special controls and styles for their own apps (including even the new Reminders in Catalina.)
But if an app on macOS puts a close button in the upper-right corner of a window or panel (like Windows does) instead of the upper-left, for example, or when an iOS app uses the Android sharing icon, I feel annoyed.
A worse and more practical example is when an app is missing some of the global system features I described in my previous comment, like common text field options (spelling, transformations, dictionary lookup etc.) missing from an Electron-based chat app and so on.
I can understand that some might want the same experience across apps. That said, I tend to agree. I mostly favor applications that are cross platform and similar across platforms. There are times the Mac version, for example, uses mac idioms and I find it painful to use.
Most cross platform applications feel alien somewhere, and I use Windows, Mac and Linux enough that I'd rather a given app be more consistent to the application. Yeah, make the toolbar use the global one if there is one, use the menu conventions, etc... but beyond that, I'd rather the app be pretty consistent to itself over the OS.
As an example, most archive manager applications, and a lot of file transfer/storage applications are really painful to use on macos vs windows or linux where they just feel better and more usable.
Back when I wrote the comment, I tried to make clear that there were two very important and very contradictory requirements :
1. it has to look and behave the same way everywhere (because we don't want to have to retrain users when they switch platform, to maintain several documentation and marketing materials, and because we want to respect the designer's esthetic vision, and / or corporate graphical vision)
2. It has to look and behave native everywhere (because we don't want to confuse users of any given platform.)
Again : of course, I know they're contradictory ! If you have a sword to cut that knot, go for it !
And of course you're perfectly allowed to value requirement 2 more than requirement 1.
And sadly here, different user's interests are not aligned with different software producer's interests, so we're basically not going to please everyone.
Again, I have neither data, nor religion, nor solution about this.
As someone who switches between mac, windows and linux many times over the course of a week, the more similar a given app is across platforms, the more likely I am to choose that app for a given task. There are some low hanging fruit you can do for cross-platform support (menus in particular), but I'm going to prefer same-app to same-app experience beyond that for the most part.
Not particularly fond of the UWP paradigm either. For the most part, Linux and Windows versions of apps line up, but the controls may not match, but even MS programs in windows don't align.
More and more, I'm preferring the MS (Whatever the name of the day) and Google (Material Design) approaches for inside the app, with either an integrated or global menu as appropriate for the platform. With the rest in-app experience with a clean UX.
Again, I understand the desire, but most windows programs, in particular MS generational applications, already have disparate user interfaces.
It could be useful, but at least a bit of funny, if cross-platform apps would offer every platform flavor for every platform. So you would have, for example, a Linux, a macOS and a Windows option for each platform. A 3x3 matrix of options. Also quite a hard problem and a maintenance nightmare.
Electron, as critically as I see it, seems to make a pretty good compromise.
The UIs can be styled and modified to an app author's liking, but unspecified properties fall back to the operating system defaults (assuming the Chrome developers did their jobs well).
Wouldn’t the ideal solution (if you really need rust performance) then be to write platform-Native applications (ie swift/obj-c for Mac) with bridges to performance critical parts in rust?
I’m probably very naive here- since I am not a rust or swift developer!!
[0]: HN comment -(https://news.ycombinator.com/item?id=19746440)