User Interfaces Are Like Robots

IBM’s Bill Higgins takes a very unusual way of explaining why Mac apps should look like Mac apps and Windows apps should look like Windows apps. It also explains why desktop Java failed.

I’m not sure his analogy really holds, but I’m not sure it doesn’t. His conclusions are correct, even if his reasoning and/or evidence turns out to be faulty.

He makes a good argument that SWT is the right way to design a cross-platform GUI, and Swing is the wrong way. The problem here is that empirically Swing delivers more native cross-platform apps than SWT does. When theory clashes with experience, either the theory is wrong or there are factors not accounted for in the theory. I suspect the latter here.

19 Responses to “User Interfaces Are Like Robots”

  1. Bill Higgins Says:

    I like the title of your blog post better than the title of my blog post 🙂

  2. Augusto Says:

    The irony to me is that the most used SWT app, Eclipse, doesn’t look like a native Windows (Native XP) app at all. Look and feel is not only a technology issue, but a design issue. If it was all about using native widgets, then wgetgui would be called a good looking and consistent windows app (it’s not). One quick look at those horrible tabs with the big ugly X in Eclipse should tell you how much effort is spent on elegant and consistent design.

    And if we agree or not, things like WPF and Flex are allowing the graphic designers to take over again, and they could care less about native look and feels. Expect more apps to look like Kai Power Tools.

  3. Patrick Mueller Says:

    I think the only Java desktop app I ever use is Eclipse. I used to use Azaureus for bittorrent, which was an SWT app.

    What are these “native cross-platform apps” that “empirically Swing delivers more” of?

  4. Augusto Says:

    I use Azureus too, it’s a great tool but one of the ugliest apps I use. Have you noticed how disabled buttons on the toolbar look like? They wouldn’t even look native on my Apple //c

  5. Stefan Tilkov Says:

    >What are these “native cross-platform apps” that “empirically Swing delivers more” of?

    I second that question — both SWT and Swing apps don’t look native to me, but Swing apps do so even less than SWT apps in my experience.

  6. Elliotte Rusty Harold Says:

    NetBeans looks vastly more native on the Mac than Eclipse does. That’s the real kicker. I don’t know of any other direct comparisons like that, but LimeWire does look Mac native while RSSOwl, Azureus, and other SWT apps clearly don’t.

    IBM made the same exact mistake in designing SWT that Sun made in designing the AWT: they interpreted cross-platform as “Looks like Windows and sort of runs everywhere else.” You cannot judge the cross-platform savvy of an application by comparing to native apps on a single platform. You have to look at them all. Swing actually gets much closer to treating all platforms equally. It’s not perfect by any means (the open file dialog is a dead giveaway) but it’s demonstrably better than the SWT.

  7. Stefan Tilkov Says:

    OK, not being a NetBeans user I have to trust you on this. In the end, though, I believe the only way to get something that really looks and feels like a native app in Java is to invest lots and lots of time into fine-tuning it — in the end, it might be cheaper to develop it using the language owner’s preferred tooling (e.g. Cocoa on OS X and MFC or WinForms on Windows).

  8. Patrick Mueller Says:

    An example of why Swing-like “emulation” stories will never work is the WindowBlinds application for Windows. Allows you to tweak just about every aspect of your ‘theme’. Last time (many years) I tried Swing on Windows, it looked like a windows app, yet nothing else on my system did, since I had tweaked the theme. Eclipse, on the other hand, picked up the theme.

    But more to the point w/r/t Bill’s post, I find Swing aggravating because it comes soooo close to the native UI, but then fails in subtle ways. Perhaps something to do with the mouse , or menus, or something. The one thing I can certainly remember about Swing apps is that the menu off a menubar wouldn’t dismiss if the window lost focus. This is exactly what Bill’s talking about; there’s a ‘glitch’, which really doesn’t even affect the way I work, but none-the-less, bugged the living bejesus out of me. Threw me for a loop everytime it happened. VisualWorks Smalltalk has the exact same kind of symptoms. Which isn’t a complete accident; follow the UI; where did Swing come from? 🙂

  9. Augusto Says:

    “The one thing I can certainly remember about Swing apps is that the menu off a menubar wouldn’t dismiss if the window lost focus.”

    Doesn’t happen on NB6 M9 preview in Java 6. I think that one used to be an issue in 1.4.

  10. WilliamChen Says:

    Hey, guys, I don’t agree with his Uncanny Valley theory. This is a completely wrong anology to user interface designing.
    Back to Uncanny Valley theory, why do we feel odd to an almost-but-not-quite-human robot? Because we know beforehand this object is a robot, not a human, although it is very much like a human. Therefore, no matter how closely it looks like a human, you will feel more and more uneasy with it. This is a sychological phenomenon. I believe if somebody leads a real human in front of you and tell you he is a robot, you will also feel more and more uneasy with this guy. No matter how much he looks like a normal human and he in fact IS a human.
    For the same reason, if a swing application is running using Windows Look And Feel using java 6, and if you tell the end users that the application is developed with C++ on MFC, or simply don’t tell him anything about your technology, he is surely not aware it is swing application.
    Most of the end users don’t know what is Swing application and what is SWT application. They simply uses these application. Only java developers are aware of this distinction. Even with java developers, if you dont’ tell him it is a Swing application, he is probably not aware the so-called “Uncanny Valley” in it.
    In another direction, aren’t native widegts emulated? Of course they are drawn in C/C++ or ASM. But they are not “native” as you think.
    In a word, human beings are very likely to be influenced by the beforehand message, no matter it is in fact inaccurate.
    (I am not a native English speaker, so forgive me for my writing.)

  11. Augusto Says:

    Ironically, if you run Azuerus on Swing the disabled icons look like a normal desktop app.

  12. Viswanath Says:

    I somehow don’t fully agree with the idea of UIs being Robots. I would put it as UIs are expected to be more consistent, than less.

    Consider the case of ‘ribbon’ menus in newer version of Office. This is a new stuff, in-consistent with the rest of the Windows Apps that we use. It was the same with ‘expandable’ menus that came with an earlier version of Office. I’d like to go back in time and say that the ‘File Open’ dialog changed between every version of windows, well most, and still is not consistent. Checkout the Install Font control panel applet.

    I’d think that UI being inconsistent, because of bugs, should be treated different, when compared to a new UI method being introduced. Both of them look inconsistent to start with, one settles (gets fixed) down in time, we adapt to the other.

    There may be failed ideas, such as Active desktop. But i’d think of it as an idea that failed.

  13. Torbjörn Gannholm Says:

    I really think Bill has a point, but my conclusion is somewhat different. I read it as if you try to make a native GUI you better go all the way, otherwise you get stuck in the uncanny valley and your user will be ill at ease all the time. But if you make it different enough from the native you are actually quite safe. After a first surprise and possibly some awkwardness things will go fine.

    I think the problem with most Java apps on the Mac is really the almost complete absence of any sort of usability design. With Windows users and Unix users you can get away with that because they’re not used to having it, but with Mac users you can’t. Mac users expect to just be able to use an app without spending a day to RTFM. Eclipse is a perfect case in point. A while ago, I decided to give Eclipse and Netbeans 5 minutes each on a pre-existing project from the point of view of an IntelliJ user (all on Windows, mind you, where Eclipse is supposed to be a poster child). With Eclipse I didn’t get anywhere (and got insulted for being a moron that couldn’t read). With Netbeans I got almost all the way (and got thanks for pointing out some points of improvement). With IntelliJ everything just works, I have never gotten stumped.

    One special point worth noting for the Mac: “Right mouse click? Say, what?” So there is more to native “feel” than a toolkit can accomplish. Or maybe not, Swing could actually be made to handle context-sensitive menus on the Mac by “click on the object to change the main menu bar” instead of by “right mouse click”. We just have to introduce the high-level concept of ContextSensitiveMenu instead of the low-level listener action.

  14. Elliotte Rusty Harold Says:

    Macs have had right mouse buttons for a couple of years now, and right mouse clicks for longer than that. On single button mice, they’re emulated with Ctrl-click.

    However, good Mac-native apps don’t put anything on the right-click context menu that can’t be accessed some other way without right clicking. Well designed Windows and Unix apps don’t either because many non-programmer end users don’t ever think to look there. However because Windows does have right mouse buttons, the need to avoid forcing users to right click isn’t as well-known among Windows developers.

  15. Torbjörn Gannholm Says:

    I may be wrong, but I’ll call “bullshit” on “Macs have had right mouse buttons for a couple of years now”. Neither my Mac nor anyone’s I know was delivered with anything but a one-button mouse. I have purchased a separate mouse with two buttons and scrollwheel, though, but that doesn’t really count.

    But, yes, it does boil down to lack of usability design.

  16. Elliotte Rusty Harold Says:

    I haven’t bought a Mac with a bundled mouse for a few years now, but the latest Apple mouse I bought has a right mouse button. I also notice according to the Apple store that, ” Apple offers a standard wired Apple Keyboard and Mighty Mouse with all iMac models.” Mac Pros also include Mighy Mice. The MacBook trackpads use two finger click as a right mouse button.

  17. Torbjörn Gannholm Says:

    Two finger click? And I’ve been fooled by the design of the mighty mouse, never guessed it was two sensors. I guess it may help me to RTFM once in a while, then 😉

  18. Sebhelyesfarku Says:

    The Mac “usability/interface” stuff is overhyped. Maczealots are simply brainwashed to think that using a Mac is the Nirvana, and they are like Jehowah’s Wittnesses to defend their religion. Recently I bumped into a moron who defended the 3 or 4 different window styles of OS X (unified, brushed metal, dark grey, even darker grey, whatever), saying that he doesn’t know why, but there must be some higher level, secret reason which we can’t understand, average human beings LOL. I always have fun with these Mactards!

  19. George Bailey Says:


    Nobody claims the OS X interface is Nirvana. Just less crappy. And there are parts that are not as good as OS 9.