General > General Technical Chat
A Companion to the X-Y Problem - The IKEA Effect
tooki:
--- Quote from: nctnico on May 30, 2020, 06:58:34 pm ---
--- 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.
--- End quote ---
Ah, the confident arrogance of people who have zero understanding of the thing they’re talking about ... :-DD
T3sl4co1l:
--- Quote from: Mr. Scram on May 30, 2020, 08:08:09 pm ---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
--- End quote ---
I mean, the OP kind of used it as an illustrative example, so that would happen. :-DD
Tim
nctnico:
--- Quote from: tooki on May 30, 2020, 10:47:37 pm ---
--- Quote from: nctnico on May 30, 2020, 06:58:34 pm ---
--- 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.
--- End quote ---
Ah, the confident arrogance of people who have zero understanding of the thing they’re talking about ... :-DD
--- End quote ---
You are probably right since I only have about 15 years of experience with writing cross platform applications using wxWidgets. The early versions of OSX where even shipped with wxWidgets. Go figure how unsuitable it is to write OSX applications. BTW I might have choosen QT as well but back then QT's license wasn't flexible enough for my taste.
Edit: something else to consider; in general you don't want an application to work radically different across platforms. Otherwise you'll need to maintain extra user manuals, train extra people, etc. Look at MS Office for OSX for example: the principles of the user interface are the same.
tooki:
Writing ≠ designing. As a (former) user interface designer (and technical writer), I’m absolutely aware of the extra work that fully native user interfaces demand. The claim I am refuting is your claim that cross platform environments do not entail compromise. They absolutely do. If you can’t access the full range of controls on a platform, it’s a compromise.
I’m not disputing that cross-platform environments save tons of development work. But repeating the claim that it provides all the functionality of the native environments is simply incorrect.
FYI, MS Office is a perfect example of a cross-platform app done right, IMHO: it’s a portable “engine”, with platform-specific UI written natively on that platform. A perfect counterexample to a wxwidgets app. Microsoft learned the hard way (back in 1994 with Word 6 for Mac) that simply porting over the Windows interface doesn’t result in a native-feeling app, and users rejected it resoundingly. So they buckled down and rewrote the interface for the Mac version of Office, keeping all the core design the same (for ease of going back and forth, as you say), but making sure that it’s a full-fledged Mac app, with the details gotten right, so that it doesn’t feel like a Windows app. So while the core code is portable, the user interface code is not.
nctnico:
--- Quote from: tooki on May 31, 2020, 11:36:19 am ---Writing ≠ designing. As a (former) user interface designer (and technical writer), I’m absolutely aware of the extra work that fully native user interfaces demand. The claim I am refuting is your claim that cross platform environments do not entail compromise. They absolutely do. If you can’t access the full range of controls on a platform, it’s a compromise.
--- End quote ---
This claim seems to be based on a short cursory look at wxWidgets. Which controls are you missing precisely?
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version