
In article <dhk066$su6$1@sea.gmane.org>, Joel de Guzman <joel@boost-consulting.com> wrote:
Bo Persson wrote:
"Stefan Seefeld" <seefeld@sympatico.ca> skrev i meddelandet news:433C2117.7090405@sympatico.ca...
IMO, having an application look native is absolutely highest priority. :-)
Why? I look at the Windows Media Player and it doesn't look native at all. That's even before I add skins. Yet, no matter how I tweak it, my 7 year old daughter still manages to play her favorite songs without any problems. Also, I hear no one complaining that almost all games have their own unique interfaces. Kids manage. So can adults.
This "everyone must wear black" is simply nonesense!
Let's leave the question of what the app looks like alone for a sec. The important question is whether it *behaves* consistently with the rest of the OS. First of all, the reason why behavior consistency is important is so that when you switch from one application to another you do not have to switch mental models. Any time two applications do the same thing slightly differently you create a usability barrier for the user. The reason why this is not as pertinent to games as it is to other apps is twofold: - You almost never go back and forth between a game and other applications; more often, you play the game for an extended period of time, then you stop and go back to using multiple applications. If you consider games which do use side-by-side with other applications, you will see that those games often *do* use standard UI elements. This is not an accident. - Games often require UI beyond what other applications use anyway -- there is no standard 3D motion controller, for example -- so they already have to get into the business of substantially extending standard behaviors; from there it's a smaller leap to reinventing the entire UI. The reason that WMP works for your daughter is that it behaves similarly to other apps, even though it looks differently. Now, when you consider the behaviors of OS-provided elements, there is a tremendous amount of subtle detail involved. If you have an application with minimal UI (such as WMP), then it's not difficult to come close to emulating the relatively small set of behaviors in your custom UI. However, as your application grows, the set of behaviors that you need to emulate expands until it incorporates pretty much everything that the OS provides. So you end up having to emulate everything the OS provides *and* you have to maintain this as the OS is updated and the behaviors sometimes slightly change. This generally results in: 1. a tremendous effort committed to keeping up with the OS-provided behaviors or 2. an application that constantly behaves subtly differently from majority of other applications Arguably the former option is a colossal waste of time. Without any doubt the latter option is what leaves the users with an impression of a sub-par application. This is *especially* true on Mac OS X, where users are much more sensitized to subtle behavior differences, and developer and users care a lot more about this type of polish than they do on other platforms. (I don't want to get into a discussion here about why this is the case or whether it's a good thing.) I absolutely do not have faith in the ability of any group of developers to maintain a system which correctly emulates OS-provided behaviors, and continues to do so over time, and does so across more than one operating system. Therefore, I conjecture that any system designed under that premise eventually falls away from option 1 and adopts option 2. As a developer, especially as a Mac developer, I find option 2 wholly unacceptable. That option makes the usability of the system as a whole degrade, because the interface behaviors do not scale beyond a subset of applications I might have installed on my system. It is because of this conclusion (namely, that reimplementing OS-provided behaviors leads to an overall degradation in the usability of the system as a whole) that I find this option unacceptable. Ben -- I changed my name: <http://periodic-kingdom.org/People/NameChange.php>