Boost logo

Boost :

From: Ben Artin (macdev_at_[hidden])
Date: 2005-09-30 14:47:04

In article <dhk066$su6$1_at_[hidden]>,
 Joel de Guzman <joel_at_[hidden]> wrote:

> Bo Persson wrote:
> > "Stefan Seefeld" <seefeld_at_[hidden]> skrev i meddelandet
> >
> >
> > 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
 - 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

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.


I changed my name: <>

Boost list run by bdawes at, gregod at, cpdaniel at, john at