| General > General Technical Chat |
| A Companion to the X-Y Problem - The IKEA Effect |
| << < (5/8) > >> |
| tooki:
--- Quote from: nctnico on May 30, 2020, 12:22:01 pm --- --- Quote from: tooki on May 30, 2020, 10:34:11 am ---That all sounds nice and dandy, but it’s not just about the look of the controls. As you mention, they differ in operation, too. But more importantly, not all controls exist in every OS. MacOS in particular has a number of native controls with no Windows equivalent. I understand the appeal, to a developer, of a cross-platform GUI toolkit. But in practice they entail a LOT of sacrifices and compromises. --- End quote --- Not with wxWidgets. wxWidgets is not made to just offer where OSses happen to have an overlap because the creators understand that that would lead to poor results. There is plenty of support for OS specific features. --- End quote --- If it lets you use OS-specific controls, then it means that what you design in it isn't actually cross-platform. I'm not exactly sure what it would accomplish if you have to design an OS-specific GUI anyway (which you should do). I took a look at it and it's a cross-platform toolkit using native controls, thus limiting you to the controls that exist in all the supported platforms. (This is in no way unique or novel, many such systems have existed over the years.) I checked and it does NOT have all the controls that natively exist in MacOS, and thus falls squarely under the "sacrifices and compromises" I was talking about. Besides, it is categorically impossible to design an application such that its design complies with every target platform's GUI conventions, since they often contradict each other. It's not just about the colors of pixels. It's about how things work. It's about how things are worded. It's about where things go. So even if every platform had all the same controls (which they decidedly do not), and you could automagically make them take on the "skin" of the target platform, it still wouldn't be native. (For example, Windows developers typically do not understand the deep pervasiveness of drag-and-drop in Mac interaction patterns, with the result that things a Mac user expects to be draggable aren't, because they're not draggable on Windows, so the developer never even thought about making it so.) So, I chuck it onto the list of cross-platform development toolkits that people claim truly produce first-class "native" apps that, upon closer inspection, definitely does not. Not saying you can't make good apps with such a thing, but not first-class. |
| tooki:
--- Quote from: SiliconWizard on May 30, 2020, 02:36:47 pm --- --- Quote from: tooki on May 30, 2020, 10:34:11 am ---That all sounds nice and dandy, but it’s not just about the look of the controls. As you mention, they differ in operation, too. But more importantly, not all controls exist in every OS. MacOS in particular has a number of native controls with no Windows equivalent. I understand the appeal, to a developer, of a cross-platform GUI toolkit. But in practice they entail a LOT of sacrifices and compromises. --- End quote --- I remember an article about that, which I found interesting. It basically concluded that cross-platform GUIs were often not a good idea, and that it was in the end often better to factor your code so that most of it can be made portable (and thus cross-platform), but that GUIs were often better dealt with with OS-specific code. Of course it all depends on the project, on the team, etc. Just keep in mind that (unless you're very familiar with one) using a cross-platform GUI toolkit often involves a relatively steep learning curve, then sometimes wasting days or weeks to figure out how to work around some limitations. Sometimes that time is better used writing dedicated GUI code for each targeted OS (not saying this is true in general either.) For a detailed (but certainly opiniated) summary: https://blog.royalsloth.eu/posts/sad-state-of-cross-platform-gui-frameworks/ --- End quote --- I totally agree. For major apps, the best approach (from a usability standpoint) is to write a core "engine" in a shared language, then write completely native GUIs on each platform using developers and UX designers who are native to that platform. |
| SiliconWizard:
--- Quote from: tooki on May 30, 2020, 05:00:00 pm ---I totally agree. For major apps, the best approach (from a usability standpoint) is to write a core "engine" in a shared language, then write completely native GUIs on each platform using developers and UX designers who are native to that platform. --- End quote --- Unfortunately, the "write once, run anywhere" paradigm has almost overtaken the whole software development world, so you usually have a very hard time convincing others of that. |
| nctnico:
--- Quote from: SiliconWizard on May 30, 2020, 06:01:01 pm --- --- Quote from: tooki on May 30, 2020, 05:00:00 pm ---I totally agree. For major apps, the best approach (from a usability standpoint) is to write a core "engine" in a shared language, then write completely native GUIs on each platform using developers and UX designers who are native to that platform. --- End quote --- Unfortunately, the "write once, run anywhere" paradigm has almost overtaken the whole software development world, so you usually have a very hard time convincing others of that. --- End quote --- Indeed. It costs way too much to write an OS specific UI. The advantage of cross-platform frameworks is that it is relatively easy to make an application which runs on every platform. Most of these frameworks go much further than just abstracting the GUI; most of the OS idiosynchronies are also covered. wxWidgets for example has a function which tells you where to store user and application data. Even between the various Windows platforms this is something which varies wildly. The same for threads and mutexes. Besides that wxWidgets offers many of the features the Boost library is providing. It is foolish the discard cross-platform frameworks because they don't support some corner cases out-of-the box. They are very useful even without aiming to ever port your application to a different platform. |
| Mr. Scram:
I like how this thread has turned into an OS UI discussion on the first page, as if to illustrate part of the problem. ;D |
| Navigation |
| Message Index |
| Next page |
| Previous page |