Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming IT Technology

What Is Important In A User Interface? 487

fosh asks: "Out of some discussions going on in response to the Gnome-Microsoft connection I have come to ask myself, (and the Slashdot community) the following question: What is really necessary in a User interface? What is the set of elements that is required, what are the elements that make the user's experience better? What are the inherent problems with MacOS, Windows, Gnome, KDE? Why are computers still hard to use for people like my mother, and how can we make this better?" Of course, the words "user interfaces" usually means "visual user interface." Voice recognition has come a long way in 10 years, and in another 10, we'll probably be able to talk to our machines in plain...well...anything! When this happens, will these ideas still hold merit?
This discussion has been archived. No new comments can be posted.

What Is Important In A User Interface?

Comments Filter:
  • by Anonymous Coward
    Now you might have a point on "speed", but Microsoft has failed at simplicity? Hah. You tell me which is easier to set up, Microsoft Windows 98 or any distro of linux.

    And when I say "set up" I mean drivers and everything working properly.
  • While scripting arguably makes life easier for power users, it is pretty much useless for novice users. Shells, emacs and vi are nice if you
    already know what you're doing.
    I haven't scripted in the GIMP yet, but I've used other peoples' scripts with much success and enjoyment. Anyone can, no matter how uneducated or uninterested in scripting and programming.

    It's a matter of making it easy to extend a program. When it's easy to share those extensions, you make the program better and easier and allow it to evolve.
    --

  • I think what is needed goes well beyond simple "themes." Entirely different kinds of interfaces should be possible. Simlar to switching from the GUI to the CLI on a Unix/Linux system. Each of these UIs may be themeable in some way or to some extent as well.

    I don't think switching UIs is too advanced of a concept for people to grasp. Its like using a different tool for a task. If they are presented with an option, they will have the ability to decide which interface they like. As long as it is easy to switch between the different interfaces, there shouldn't be any real confusion. It will probably increase the complexity of support, but that can be dealt with. It's just another fork to take when the helpdesk people try to figure out what to do about your problem/question.

  • Different window manager are one of the weak points of unices, which is very much different from the lies you are trying to spread.

    How is having options a weakness? People are free to use the wm that makes sense to them. There are some that look nearly exactly like Windows and use all the same terminology and metaphors. There are others that are very different and satisfy different types of users. There is no weakness in having options available. If I'm an OEM, then I'll use the wm that I think my users want. If they don't know what they want, then I'll ask them what OS they have experience with and I'll give them the wm that most closely matches that OS. If they have no experience, then maybe I'll give them the wm that is easiest to learn, or that is the most like Windows if Windows is still the dominant OS. The fact that there are options is not a weakness, it's one of the things that makes Linux better.

  • Oops, I meant to say one of its weakness when it comes to UNIX becoming mainstream as a desktop standard.

    Even as far as becoming a mainstream standard, multiple window manager options is still not a weakness. Perhaps a lack of a consistent default interface could be considered a weakness (and is considered one by many), but having options available is never a weakness for an OS. I, personally, don't think that a lack of an official WM for Linux is a weakness. OEMs will figure out what their customers want and give it to them. If they want a wm that looks like Windows, then that's what they'll get. If they want something else, they can have that too. If the customer is a company and doesn't want multiple window managers on their machines, then the OEM will just make sure that only the wm that the customer selected is loaded. It really makes sense to handle things this way. It gives OEMs the maximum flexibility to serve their customers and to differentiate themselves, while at the same time, it gives customers a choice in how they will use their computers.

    If it's done right, you could easily switch from that baffling UI to one that you understand and can use.

  • The main problems with the modern interface is that it is tied to closely with the decrepit old computing paradigm that runs just about everything: the dichotomomy that separates applications from OS, and OS from the user environment.

    Linux isn't likely to help much, because as a Unix derivative, it is a programmer-centric system that clearly delineates individual exectuables from the rest of the system. Great for folks who know and love programming, especially C and Perl, lousy for people trying to interact with data in a logical, consistent and sophisticated manner.

    The largest enemy of a good interface are proprietary data formats. It requires you to operate an application rather than edit data. Tools are tools, and should be applicable to any given set of data depending on what you want to do with it. The single largest obstacle to effectively managing data from a user-centric perspective is modality. You are in a text editing mode...save, quit, open up gimp, import the text and now you are in a graphics editing mode, so you can flow the text into a pretty png. If you screw up, begin all over again. In an ideal interface, the user could not distinguish between an application, like gimp, and a set of tools available to her regardless of what else she's doing with the system.

    An ideal interface can recognize what data is, and offer you the proper tools to work with it. Here's an example from the mac: highlight http://slashdot.org. You can drag the highlighted text to the desktop, where it becomes a URL icon. You can change the name of the URL file you just created: call it "News For Nerds". Double click on it, and the browser of your choice opens up and takes you to slashdot. Drag the icon into a text editing window, and it pastes in http://slashdot.org wherever the cursor is. The Mac groks data and how it's used. So should any modern OS: a dot-three extension is a sad and sorry substitute: like nailing two sheets of plywood to the top of your car and calling it a Concorde jet. Linux, and other Unices, don't implement this, because they assume that anything that isn't an executable is text. They can't grok data, and rely on the user or an application to tell them what to do in all instances.

    I don't know if we can fix this in Linux without a deep and honest appraisal of the limitations inherent to Unix-like systems. Perhaps the best we can hope for is a poor copy of the Windows GUI, considering the tools we have to work with.

    SoupIsGood Food
  • One of the most misused definitions when speaking about GUIs is 'easy to use'. There are two separate directions for a good, heathly UI to go in: Either it can be easy to learn, which usually incorporates large images on icons, lots of help files, massive amounts of mouse usage and a stripping of most functionality, or you can have TRUE easy to use, which assumes only that the user is willing to memorize many commands, is lightweight on screen real estate when it comes to help, and just basically has a lot more features.
    Case in point: Emacs. Certainly harder to use than Wordpad, Word, or Notepad. Is it more efficient? (Minus formatting.) Hell, yes. Once you've put the time in to learn something like emacs, you can very simply open another window, display two buffers on the new window, open a file on the second one and switch to it: cx-5-2, cx-2, cx-o, cx-bn .

    I, personally think it's a shame that EVERYONE is aiming for easy to learn. Once you've learned a program, you're stuck with the interface you learned it on. Why not become familiar with something efficient?
  • Anyone interested in interface design should read "Computers as Theater" and "The Art of Human-Computer Interface Design" by Brenda Laurel, VR pioneer and creator of Blue Moon Software, a company that designed computer games for girls until it was bought out and closed down :-(. "Computers as Theater" is especially thought provoking, as it explores the idea of interface by applying the concepts of Aristotelian Poetics. Basically, Brenda throws out the book on interface design and starts over from first principles. Rather than focusing on the interface itself, she draws parallels between human interaction with computers and the formal philosophy of drama as explained by Aristotle. This may not be an obvious parallel, but it makes perfect sense after reading her book. I have just finished reading the book, and feel I will probably have to reread it several times to really comprehend all she has to say, as her ideas are very different from the common thought on the subject. A human computer interaction is a collaboration between a human and various "agents" that perform actions based on the human's requests. These are the actors in the drama. It has a plot with a beginning, middle and end (which is hopefully the successful, and even more importantly in Mrs. Laurels world-view, enjoyable creation of a finished product.) It has dialogue and dramatic tension. Mrs. Laurel postulates that focusing on these aspects rather than the mechanics of the program and it's interface will ultimately lead to software that is more enjoyable and easier to use. I really haven't done her ideas justice here. As I said, I have just finished reading her book, "Computers as Theater" and am still digesting the dense load of new ideas presented therein. All I can really say is, buy the book, and keep reading it until you understand it, and you will design better interfaces, by ceasing to think of them as interfaces and beginning to think of them as dialogues between active agents within a virtual world.
  • Actually, a good UI must first complete the task it was designed to do.

    A UI for those FedEx package tacking/customer signature tablets is completely different from the UI for a Boeing 777 Jumbo Jet. Yet both are interfaces to computer systems.

    I can't imagine that computers as we know them today will be around much longer than another 20 years or so. Sure, there will probably always be a need for the developers and hackers to get right into a system and program it, but for the average user, the computer needs to become more of an assistant than a tool.

    The term 'Intelligent Agent' has really been watered down in the past few years, but I still see that as the way UIs are going to go. The intelligence of the system is going to be far more important then wether you use a keyborad, mouse, voice recognition or telepathy to communicate with the system.

    Most developers and hackers today don't delve into dip switches and machine code anymore, but they sure did 25 year ago. 25 year from now a developer or hacker might not ever touch a keyboard. Who knows? It's fun to speculate, but until it happens, no-one knows what it's going to be like.

    As for how a general-purpose PC interface could be improved upon today, well, my bets are on MacOS X as being pretty much the best thing since NeXTstep 2.1 :-) Sure, it's not going to be perfect, but it's going to be a lot better than everything else currently available.

  • "Be physically easy to use (single key-strokes and mouse use - you shouldn't have to let go of the mouse to use the keyboard for the basic UI) "

    But at the same time, you should be able to use it without the mouse.

    The mouse causes me the most pain in my arm and hand; mice seem to miss-behave more than keyboards, and mice are a lot slower for most tasks than keyboards. On top of that, other people do crazy things with their mouse settings (more frequently than re-mapping keyboards), such as switching buttons, making single-clicks act double-clicks, changing the acceleration, etc.
  • "2) A lot of people who take more than 5 minutes to think about UI's will respond with "but my grandmother doesn't need to run pipes and greps and stuff". OK, but that's not an argument for a simple (minded?) Linux UI--it's an argument for your grandmother to use a different OS."

    So I guess you want to limit your potential marketshare. I can't see companies like Red Hat listening to you - they will continue to try and push the Linux GUIs in the opposite direction to the one you want.
  • This is of course one place where MS Windows beats Linux hands-down at them moment. I hate X because it forces me to keep grabbing the mouse.
  • A GUI on top.
    A CLI for power users.
    Open formats (XML, Java, Apache, TCP/IP, etc) underneath it all.... heck, even Open Source?

    Sounds like Apple's plan for Mac OS X.

    Are we beginning to get the idea that perhaps Apple does Get It?

    Apple's long history of GUI development has given them a unique perspective on the new computer user. After all, they wanted to develop computers "For the Rest of Us.." and some of the features of the Mac OS that frustrate power users are exactly the features that enable newbies.

    Apple may just be the one company capable of making *NIX palatable to the masses. Eazel may improve the top level of Linux with their work, but as someone noted above, consistency is a major problem with Linux (look at all the config formats, at the distribution layouts, ...) and, though it's getting better, documentation is a problem as well.

    I hope Apple can pull it off, I really do. A successful Mac OS X will in one stroke create an OS that is powerful enough for the most powerful user yet easy enough for the newbie, and do a great service at legitimizing bringing the core of one's business into Open Source with Darwin.

    :)
  • the dancing paperclip...
    ------------
    a funny comment: 1 karma
    an insightful comment: 1 karma
    a good old-fashioned flame: priceless
  • Windows does the same thing: modal dialogs. Dialogs in general are, as my dad would say, "evil." They interrupt the user's flow of thought/work even if they are not modal. There are some rare cases where dialogs are the best solution (like when you're under tight time constraints) but most of the time there are better solutions.
  • Here [editthispage.com] is an online book entitled "User Interface Design for Programmers" that gives an opinion on the question "What is Important in a User Interface?".
  • One thing I've heard often that I simply have to disagree with is that the command line is not a user interface. Granted, it may be more difficult than a GUI, but the Unix prompt does present one of the best command line interfaces made.

    GNU utilities are extremely consistent. For instance, if you want help on something, type in command --help or command -h. Almost every command line option has two forms, long and short. Someone who learns how to use a basic GNU setup can easily switch to almost any new GNU program. Consistent and well designed, despite the lack of a GUI.

    Also, this idea that GNOME and KDE are Windows wannabes. Windows isn't the beginning and ending in GUIs. Windows looks like Macintosh. Mac looks like the Xerox Star. They all use WIMP (Windows Icons Menus Pointers) so they all kinda look alike. The concept is public domain. But, GNOME at least (I don't really use KDE so I can't talk about it) goes beyond Windows in a number of fashions. Better theming, better adherence to Fitt's Law, all of the panel applets, use of XML for application configuration (as compared to the nasty registry), a cross-platform, network aware component system, etc. Sure, the aim is similar and the methods of attack are similar, but GNOME is designed by the users of the system, as compared to Window's method of "take what we give you".

    -Dave
  • Microsoft had a Macintosh-Level GUI when they released Windows 1.0 and blatantly ripped off many Mac concepts. But since then they've improved a hundred-fold on the original design and now have a GUI that is far superior to anything Apple has ever produced. Just look at recent UI trends. Microsoft is expanding into ever more modular and customizable toolbars, menus, sliders, etc... While Apple released the Quicktime 4 GUI, which is completely unusable, and OSX which looks pretty but lacks distinctly different controls for different functions.
    • _____

    • ToiletDuk (58% Slashdot Pure)
  • I think you're completely missing the point here. While scripting arguably makes life easier for power users, it is pretty much useless for novice users. Shells, emacs and vi are nice if you already know what you're doing. Sit a computer newbie down at a login: prompt and give them the task of writing an email to their buddy in Australia, and you'll see (or not) just how necessary scripting is for a good user interface. I'd argue that one of the most basic needs for a good good user interface is for a user to immediately be able to identify the first step they need to take to perform a desired task.

    Actually, I think you're missing the point. Experts are users too. For experts, a user interface should probably include scripting. Even newbies eventually get to the point where they would like to automate some tasks. The "Startup folder" idea is an extremely simplified type of automation.

    And your assertion that "one of the most basic needs for a good good user interface is for a user to immediately be able to identify the first step they need to take to perform a desired task" doesn't always hold true. Compare Notepad to vi. Notepad meets your criteria. Does it have a better UI though? You'll probably argue that it does, but many will argue that it doesn't. The thing is, the better UI depends on the person. If you edit a text file once every couple of weeks, notepad is probably great. It gets the job done, and you can figure out where stuff is. But if you edit text files all day long every day, vi is probably better. Sure, it's got a steep learning curve, but it's worth it for those that need to edit text a lot.

    It really comes down to whether you need a basic "I just need to do this simple job" UI, or an industrial strength UI. You simply can't make a simple UI for certain tasks, because these tasks are inherently complex. An F16 has a more complicated UI than a VW beetle, and for good reason. It does a lot more.

    Of course, in the world of software, we're not restricted to static fixed UI's. Some programs are starting to offer both an easy UI and a powerful but complex UI in the same package. VIM [vim.org] is one example. The graphical version of VIM has menus and supports "point-and-click" operation. While in insert mode, it behaves quite a bit like an improved Notepad. But it's still got all of the normal vi features (and then some...). You can make mappings, and write scripts to do common tasks. You can even get it to behave almost identical to the original "plain ol' vi" if you like. The one big problem with VIM for newbies is that it starts up in "normal" mode (aka command mode, or "beep" mode).
  • that swishes across the bottom evertime you startup, even if you've been using it for 4 years. Oh and an awesome Brian Eno ambience wooshing sound every time you start up.
    Um, screensavers, cool wallpaper, CD player - Uh, I guess that's it!
  • with the original post - computer's are both relentless logical and complete arbitrary. However arcane it appears at first, people willing to learn a little pick up on LiSt (ls) and conCATenate (cat) - unix and c really do grow and mature well. There is, however, complete freedom to alias commands to anything you want, from dir to zous for 'ls'. I think the major cause of Msft 'blotoware' is the fact that they are pandering to contradictory demands of illogical users, i.e., trying to please everyone - it has to be 'easy to use' for beginners, which it pretty much fulfills, and 'powerful' for experts, which it could but tends to fall short, experts not being their primary target market. People want it to automatically correct spelling errors, but they don't want it to change foreign words in docs, blah blah etc etc.
  • I think *you* missed the point. I don't think he was calling for the elimination of GUIs, just that the scripting must be there, *somewhere*, available for when a user gets over being a novice. If a User Interface completely lacks the ability to script, you'll be stuck using the GUI for even the most mundane repetitive tasks.

    Imagine, for example, if the only way to copy a file was via drag and drop. Even Windows isn't so stupid to restrict the user that way, but they put comparable restrictions around so much of their OS. They certainly don't make it easy to change things.
  • I was teaching an introductory course for Linux and one thing surprised me. Two of the students were older and wanted to learn Linux. They were very computer literate, but due to their age they had trouble with the command line because they had trouble controling their fine motor movements. This meant that they often mystyped commands.

    After I noticed this, I went to help my mother who uses win 95, and I noticed the same thing. She is having trouble clicking on the proper icons, you hear the familar complaint "But I did not tell it to do that!" Which, before I noticed the motor control thing, used to make me angry because a computer just does not "go ahead and do things". You need to tell it to do something.

    The problem that the older generation (and non computer savvy people) are facing is that they cannot communicate with the interface, either because they cannot understand it, or because their fine motor skills are gone and they end up clicking on the wrong icon, or double-clicking when they are trying to single click.

    I still think that the interface of a computer needs a palm-style interface. It needs to be made really simple. I watch people wrestle with Windows Explorer all the time, but everyone I have handed my Palm to has understood the interface very quickly (my mother included).

    I think that double-clicking needs to go, and right on the desktop should be the following icons:
    INTERNET
    EMAIL
    WORD PROCESSOR
    GAMES
    SCANNER
    INTERNET CHAT

    Thats about all that the newbies need. They do NOT need a "AOL" "MSN" etc folder on their desktop that will never get clicked, and just consume precious desktop space. They need to be able to navigate their most used programs (see above list) in just seconds. Move mouse over icon - Click - Done.

    Now, you could argue that you could modify the interface, or that many interfaces currently DO this already. Well, Windows does not. Not right out of the box it doesn't, and due to antitrust rulings they CAN'T include some of the above.

    Sure, a computer guru can modify the interface for someone so that it conforms to the above... But note that someone else who knows how must do this for these people.

    So what an intuitive interface needs is NOT more buttons apps and "innovation". There is just too much "innovation" going on. Things need to be removed from the interface.

    As per voice control? A good idea, its not ready yet, but its a very very good idea.

  • For an excellent rendition of the problems, see Thomas K. Landauer "The Trouble with Computers" ISBN 0-262-12186-7.

    "Computers are often used to do things that are irrelevant or detrimental to true productivity, such as purely share-shifting marketing or excess report generation.
    And when computer applications are intended to increase worker or process efficiency, they often don't help. ... managers have been so interested in short term market share that they have not devoted needed resources to making computers do better things.
    But also it has proved so much harder to make computers do serious work that they have been diverted to easier but more frivolous employment. ... Foremost [there is] a reliance on traditional design and engineering methods that are not sufficient for the development of tools fgor intellectual work."

    The author advocates a deep analysis of 'user centred design".
  • the two most important things in a user interface are consistancy and quickness. This applies to both businesses and homes. In a corporate environment time is money, if you have to spend more time learning a new program or fiddling with something to make it work you're losing money. People at home also don't want to spend hours setting up and learning to use something. The most successful tools in the history of civilization are the tools that everyone can use. The first tools had a user interface (a rounded end for gripping) and a utlity side which performed a function, anyone with a moderate level of intelligence could figure out which end you were meant to hold as the converse end could cause pain if you held it. Computers ought to learn from the neanderthals. Interface goes beyond applications, it is also hardware and software installation.
    To me the perfect computer would be one that I could customize entirely for my needs and wants. Sure you 3l337 hax0rs think everyone who doesn't enjoy writing in assembler an idiot, some of us just have better things to do. A good UI offers the user anything they want in any form they want to see it in. Regardless of the internal plumbing a system should recognize all files as MIME types and are opened by modules that run inside the main interface, much like a web browser. The user shouldn't even have to know a plug-in (modules whatever) is being used, the file ought to just open for the user to view and/or edit it. Besides that a UI should be nearly infinitely customizable with several default settings for different types of users. This also means all programs should have ascii configuration files so they can be edited on the most raw of levels if you're interested in doing so. Large intuitive icons for new users and minimalist icons for people like me who want less overhead. As for the interface, all interfaces across all applications should be alike, if they can be themed thats great but they need to all work in the same fashion. This goes for visual apps and CLI ones, it is a waste of time to learn 20 different interfaces. If you want everything like pico you can have it so or everything like vi, as long as it's uniform. And that is that.
  • Keyboard shortcuts to access all, or at least the vast majority of, functions. Along with this, the defaults should be pre-set to what people are most accustomed to, like the standard shortcuts for open, cut, paste, etc. A neat program will get an early boost from its wow factor, but to get people wanting to continue to use it, the power user needs to be able to get things done quickly and efficiently, not constantly reaching for the mouse.

    One of the reasons why Mozilla has seen so little testing on my computer is because of the long lack of keyboard shortcuts -- browsing a lot of sites just gets to be a pain, and a slow one. Speaking of which, Netscape deserves some boos for changing ctrl+O to ctrl+L for opening up a URL box, as well as for not implementing backspace/shift-backspace for going forward and back. You should be able to retrieve both local files and web urls from a single ctrl+O action. (Actually, I can't even get alt+-> or alt+<- to work on the Preview Release, but surely they'll at least change this by the actual release.)

    Cheers,
    ZicoKnows@hotmail.com

  • Since when is vi scriptable? Is this some new
    feature in vim?
  • Here's a thought: anyone out there remember
    Wordstar? In many ways it was a traditional
    program using lots of odd keystroke commands to
    get things done. You could do a lot with it
    (for a program on an 8bit CPM machine with
    preciously little memory or disk to speak of).
    The keystrokes certainly weren't "intuitive"
    right off the bat, but they did their best to
    make it easy for new users to pick up on them
    by *putting the cheat sheet on the screen*.
    The program was configurable with "beginner" and
    "expert" modes, and in the "beginner"'s mode
    half of the screen (14 lines that is) was
    taken up with a description of common keyboard
    commands. A very slick touch was that this
    menu was context sensitive. For example the
    "Block" commands (used to do stuff like cut and
    paste text) were all two keystroke commands
    beginning with Control-K. When you did the
    first Control-K, the menu would change
    immediately to show all of the Block commands.

    There were other things that were cool
    about Wordstar's command set, as well...
    for example, the cursor controls were an
    embedded "star" pattern (C-s, C-d for forward
    and back, C-e, C-x for up and down), with
    other motion keys logically grouped around
    the star, e.g. C-f takes you forward a
    a word, because it's next to C-d that takes
    you forward a character. And the delete keys
    were all grouped together as well C-t, C-g and C-y.
    This sounds crazy at first, but it turns to be
    really easy to get into once you've used it
    for just a little while.

    So the point is you want software with some
    depth to it, which in all likelyhood means
    some complexity, but you want to be able to
    ease a new user into it gradually. This is
    a concept that was lost in the post-Macintosh
    scramble to make a computer "as easy to use
    as a telephone".
  • So vi has a keystroke recorder now, and the keys
    can be rebound. That's nice, and it sounds like
    an improvement [1], but it doesn't sound like
    a full scripting language to me.

    [1] One of my peeves about the vi/emacs wars is
    that for years if you told the vi guys about some
    cool emacs feature they'd respond "You don't
    need that!". Now that they've all switched to
    vim, they respond "We can do that now!"... but
    I thought you didn't *need* to gang?

    Typically you do an "ESC $" in emacs to run the
    spell checker.
  • In all other directions in this industry, scalability is an honored word. But not enought in user intarface design. A user interface most important task is to scale with the user. It should be good both for a novice a power user and a hacker. It should provide easy and intuitive ways of doing things, while not slowing down the power user by having him to retype a slightly modified command hundreds of time (Or move the mouse nearly the same way hundreds of times).
    Simplicity is another important factor. Hundreds of bells and wistles won't help anyone, if he/she can't find the forrest for all the trees.
    Graphical junk is something most of the "new" UI's for X has - for example, most of the enlightenment themes doesn't provide any new functionality to the user interface, just a new look, with even more lines, shades, 3d-borders and so on. Very few window managers (vm2, the pie-menu extended fvwm2 and one more that I have forgotten the name of) have really new concepts.
    Orthogonality. If something can be performed on one screen object, it should be possible to perform on (nearly) all of them.
    Every program should use standard interfaces to each other (E.g. sending guile scheme expressions to each other) for interaction. In addition, they should have good interactions between command-line and GUI. All graphical programs should read their stdin anyway, and interpret command they get from there, and do tasks based on them, possibly affecting the GUI data.
    Finally, a set of important concepts:

    *Drag'n'drop.
    *Scripting
    *Simplicity
    *Intergation beteen programs
    *Embedding of document inside each other (pictures in text)
    *Speed of usage
    *Speed of learning
    *Orthogonality
    *Minimalism


    --The knowledge that you are an idiot, is what distinguishes you from one.
  • Drive structures shouldn't be exposed? What, you think the computer knows how to correctly organize my files?

    Should I be able to find a file without remembering where I put it? Certainly.

    However, the drive structure has to be there, and I have to have the option of deciding how I want things sorted.
  • MacOS used to be consistent. Look at Quicktime 4. One of the most abysmally awful interfaces I've ever seen. It doesn't look like anything else, it doesn't work like anything else, hell, it doesn't even work like *ITSELF* from one window to another.

    The NeXT and the Amiga were my two favorite examples of "consistent" interfaces. I miss them both horribly. (Apple ripped the 2nd mouse button out for MacOS X, I'm told, so the NeXT is truly gone from us now.)
  • I think the *single* most important thing in *any* interface is consistancy.

    Books are no different one to the other. Copyright page, Table of contents, Prelude/Prologue/Introduction, Chapters 1 through X, Epilogue, Appendicies, Index.

    Commercial hi-fi/entertainment gear is no different one to the other... Channel up/down, volume up/down, play, stop, rewind, fast forward, pause, previous track, next track.

    Cars have a turn signal that clicks up for right, down for left, a gearbox that goes RPND321, a brake on the left and a throttle on the right.

    Windows, as much as you may hate it, is solidly consistant (in most places). File/Edit/View/Custom/Help/About

    I know it's ALWAYS Ctrl-X/C/V for cut/copy/paste, and Ctrl-Z/Y for undo/redo.

    Which leads me to the second most important thing in a user interface... keyboard shortcuts!

    mindslip
  • I agree with the modality issue. When I was teaching my parents to use the computer, the "overlapping windows" concept was the hardest thing. The whole visual metaphor of the "desktop" and clicking on things to bring them to the front was a real challenge for them.

    After Mozilla is really stable and KDE 2.0 is out, I plan to create a customized UI for my parents.

    The idea is a tool bar down the edge of the screen with a few big, friendly buttons on it. These buttons will start up a web browser, a word processor, and maybe some other essentials.

    The window manager will always run programs full screen, except for the reserved space for the tool bar. Eliminating overlapping windows will remove a major source of confusion.

    If a program is already running, the toolbar button will just make the window visible. This will eliminate the confusion between starting a program and switching to one that is already running.

    This will actually be a little like the Palm OS - everything seems to be running all the time, and you just push buttons to switch between apps.

    Other things: Simplified menus. Or even no menus at all: just a short tool bar in each program. And, simple dialog boxes that are really obvious when they grab the focus - maybe even graying out all the background when they are up. Have you ever seen people clicking on a window background, getting beeps back, just because there's a modal dialog open and they don't really realize it?

    All these things can be reduced or eliminated for people that just want to use the computer to do a few simple things, never want to change the settings, never want to install more software, and never want to think about "using the computer".

    You could even create a distribution based on this. Call it "Linux for Grandma." Forget simplifying the installation - grandma will get her 13 year old granddaughter to do that.

    But once it's up and running, all the complexity will be hidden away, and the user will never need to think about it.


    Torrey Hoffman (Azog)
  • These comments apply to the current standard graphical user interface we see on computers, PDAs, VCRs, etc, but should not be construed to apply to ALL user interfaces.

    I've been watching my grandmother learn to use Windows 98. It's painful. First of all, her motor control is not perfect. Second of all, Windows is highly inconsistent in how you approach actions. It's been very instructive, though. These observations are based on what I've seen:

    1. Consistency. There should be a standard "meaning" for each action. These should not change unless the context is really significantly different.

    2. Clarity. Controls and Widgets of all kinds should emphasize comprehensibility over coolness.

    3. Feedback. When something's happening, I should know what's going on.

    4. Performance. If the interface is going to stall while something is happening, it should provide feedback immediately, rather than waiting and then presenting a progress bar or the equivalent.

    5. Safety. Any destructive action should have at least one warning and a chance to cancel. These safety warnings should be set up so a pro can de-activate them if they want to live risky.

    6. Configurability. If I have a way I like to work, I should be able to streamline the process. If applicable, I should be able to script common tasks as well.

    -
    bukra fil mish mish
    -
    Monitor the Web, or Track your site!
  • "And so it came that one day I asked my Master, and how shall I design the user interface, shall I make it objects? shall I make it text? Shall there be menus or shall there be keystrokes, or shall I use voice?

    And he raised an eyebrow, and then snapped a finger, and then wiggled his fingers, and then waved his hands, and only after all this di he speak, and I was enlightened."
    - From The Tao of UI

    It is so very important to remeber that the phrase "User Friendly" does Not mean "Instant Usability", or "Simple Commands". When designing UI, one must take into account the number of core commands that must be represented, and the speed, not complexitiy, with which the truly core commands can be executed. I do NOT want a UI that makes me speak ever time a basic command is used, I would have a sore throat before lunch time. So make the core fast to execute, a key-combo perhaps, make the next level out a command of the form of a menu or typed command, and use things like voice to call up third teir commands, which you use infrequently, but want to execute quickly.


    ---
    "Elegant, Commented, On Time; Pick any Two"
  • Dialogs are often useful, and modal dialogs are sometimes necessary. It's perfectly possible for you to have a sensible, useful dialog which could be completely stuffed up by changes to the data in the originating window.

    Modal dialogs can be necessary for them to be meaningful and avoid data corruption. The problem is that there's an awful lot which are modal because it saved the UI coder thinking about whether this was necessary or not. But banning modal dialogs completely creates its own problems.
  • Believe me, I work in tech support. A new user today has to learn what an icon is, how to manipulate them, etc. A popular conceit is that once voice recognition software gets good enough, the problems of acquiring computer literacy, or, if you will, a 'vocabulary', will disappear, but I disagree.

    Even people who have learned the GUI vocabulary enough to get their work done have no idea what I mean when I say "launch this program" or "open this file"... Hard to believe, but true. And the people who have the GUI down are definitely in the minority.

    What I'm saying is that the average user, in my experience, has trouble grasping the abstractions that we understand almost implicitly, and that is not going to change with voice recognition, any more than it changed when CLI was largely supplanted by point-and-click. A user still needs to know WHAT to click on, and when voice finally arrives, he will need to know what to say.

  • What I mean is that as you, the user, learns how to use a given interface, navigating the interface should become quicker and easier at the same pace that you learn.

    When I initially pick up a piece of software, the menus are quite helpful, as I learn what the software does. But after several times of using a command, option or feature, I generally remember the keyboard shortcut. As I learn the interface, it "grows" with me, and I become quicker.

    The real difficulty is that almost none of the window driven programs today incoporate these design features and elements at the necessary scale. Sure, ctrl-B is bold and ctrl-I is italics, but full functionality through keyboard shortcuts? Yeah, right. I still love Wordperfect 5.0 - the last of the great purely DOS-based word processors. I used it enough that I knew that the bullets of the arrow style was Shift-F5, 1, 3, 1, Enter. How long does that take with MS Word?
    1) move had from keyboard to mouse
    2) click bullet in toolbar
    3) right-click over bullet in text
    4) select arrow
    5) click OK
    6) move hand back to keyboard and resume typing
    or
    Shift-F5, 1, 3, 1, Enter? You decide.

    I'm not claiming to be a guru, but I'll go out on a limb and say that a majority of software that is used by someone all-day, daily, (data entry types, I'd guess) is not window driven. I know the ones I've seen surely aren't. They're obscure, CLI-type interfaces that appear just awful to use. But it you sit there and watch someone, they're tap-tapping away at those keys pulling up the information quicker than you can believe. But even those UIs aren't the best, because the learning curve is so steep. In order to become that proficient with the interface, someone must spend a lot of time guessing and worrying.

    Unfortunately, the majority of the world has moved away from good UI design principles with Windows. Too many people aren't power users - the software winners have been winners because of time to market, not quality. A fact seen clearly in the success of Microsoft.

    Is there a perfect solution? (shrug) It's a hard middleground to master. I think the *nix world comes a whole lot closer than the Windows world. I've got my fingers crossed though - I think the rush to get software out the door is about to slow down - perhaps then companies can afford to spend time on good UI design.
  • ...but usually when people say "Ease of Use" what they really mean is "Ease of Learning", resulting in an interface that is clumsy and slow to use. UI designers need to think about what people will actually be doing, and how they'll be doing it, and then include tutorials so people know that's how they're supposed to be doing it.

    Another failure is help systems that give abstract information, but no concrete information and in particular, rarely are examples given and even rarer are cross references so if you don't understand a concept, you can look it up.

  • Themeability.

    Nothing's more iportant than having EVERY WINDOW look absolutly different with inconsistent controls!
  • At least the more generally you pose this question, the more abstractly you have to answer it. There are so many considerations.

    Is this an interface that will be used frequently (word processor, cell phone, PDA), occaisionally (web order page) or rarely (911)?

    Do you need to support a heterogenous or homogeneous user population (issues of handicap access; training; literacy)?

    Does the user have to multiplex the tasks supported with other tasks (e.g. word processor vs. inbound telemarketing system vs. car MP3 player)?

    How tolerant of user errors can the software be, and how does this balance with the need of the software to be responsive?

    What range of form factors will the application work in (PDA vs. laptop vs. large screen desktop)?

    Just to cook and example, lets say I want to deploy an application which coaches people through performing CPR. If this is as a training aid, the user can be required to spend ten or fifteen minutes figuring it out; if it is a field aid, this would render the system rather useless. If I am targeting PDA as my platform, then I'm pretty sure I have somebody who is literate. If it is a public kiosk, say at beach or industrial site, I don't know for sure whether the user is functionally literate in my language.

    I know what you're primarily asking is about desktop GUIS, but I think it's helpful to keep in mind that the answers you get are probably going to be slanted toward office productivity type applications. While these are important, the shrinkage of computing power and proliferation of networking is going to render this a minority niche in a few years.

    There will never be a one size fits all GUI, let alone UI in a general sense.
  • I'd say that the ability to change window managers is an important feature, but not because it allows everyone to change their window manager.

    The reason - it allows improvements to the window manager.

    If you can't change the window manager, you can't slip in an improved one.

    Even if only the superuser can change it, on a system wide basis, that's still miles better than everyone stuck with a 10 year old wm that's not improved.

  • ...good GUIs put the human first. It's just as simple as that.

    Why is that I can find something easier on the Web (thanks Google!) than I can on my hard drive? Why can't I use the same spell-checker (yes, including the same custom dictionary) in my MUA that I use for word processing? Why do I have to dig through directories, hierarchical structures and all that crap to find a file? Because someone, somewhere, was coding an application and stuck to the design that was easier to *implement*, not easier to *use*.

    A drive structure should not be exposed to the user; documents must be tracked by the OS, not the user. Functions and functionality should be transparent and consistent in all applications. The Macintosh succeeded in the first points (hide the machine complexity away behind closed doors), Windows succeeded in the last --all Windows apps (make that *Microsoft* Windows apps) share components, functionality, and up to a point design philosophy (yes, I know, that's not 100% true, Word doesn't do everything the same way that Excel does, but they are very, very close).

    Gnome and KDE should learn from their predecessors' successes and failures, rather than copying them blindly --and if you're gonna copy antyhing, please not CDE ;-)...


    engineers never lie; we just approximate the truth.
  • I'll just reply to everyone at once.

    Windows may allow scripting - but it doesn't provide it. You have to buy/beg/borrow/warez additional software to do it. And that's not good.

    It is nice if a user interface teaches itself to you, but not necessary. For simple applications, it may be necessary... but for complex applications, you'll end up spending so much time using them that it's a good idea to RTFM anyway.

    Are scripts user-interface features? You bet! You're a user... and you're using them to control the program.

    Scripting is not sufficient for a good UI. But it is necessary. Given sufficiently powerful scripting, even the crappiest UI can be re-made into something vastly more powerful. As an example of this, someone brought up WindowBlinds.

    I think that's about it.


    -Dave Turner.
  • I disagree with those who demand "no learning curve" or a system that works with "no training required." I think that, computers being complex machines, the UI by definition inherits a certain amount of complexity.

    You couldn't, for instance, sit down at a large bench saw with no training or experince and reasonably expect to operate it (more likely you'd cut your arm off). Moreover, the saw shouldn't be designed FOR the inexperienced at the expense of the experts.

    A computer is ridiculously more complex than a saw.

    The UI should present a clean, consistent, pleasant(!) method of control, but the user must sit down with a clear goal in mind, and at least a modicum of basic training. Given experience, they will benefit from consistencyt expecally (newbies often ask me how I knew how to use Windows a program I'd never seen before. The answer is that I can click my way around ANY app with File, Edit, View menus, toolbars, etc.)

    Embrace a common ground, but don't design for the ignorant.
  • Hear, hear. Modality easier for the beginners, and more powerful for the power-users. It's also easier to integrate with keyboard-only I/O than non-modal interfaces, which for those of us with mousebite is a serious win.

    There needs to also be non-modal interfaces, but right now we've moved almost completely away from them. The pendulum should swing back.

    The things for which modality is crucial is for any program which provides a user experience of "environment". When a user is "within" a program, doing something, interacting with the program, then modality is powerful. By way of contrast, when a user experiences the program as a "thing", then a non-modal interface is probably best.

    For example, compare a word processor to a cd player. The first is something you work in. Contrary to everything everyone expected based on ideas of modality being "hostile" and "unnatural", the most preferred word processor in history was Word Perfect 5 -- which was strictly modal. Meanwhile, a cd player is something you want to set up to do something (play a cd) and then have it function without you. It doesn't need a modal interface.
    ----------------------------------------------

  • ...in the real world, if you want to manipulate a typewriter, you have to bring it into focus (pick it up and sit in front of it) before you can interact with it. Although that doesnt make much sense to a geek, the perfect user-interface would be the one that makes the most sense to someone with no preconceived notions about how computers work.
    In the real world, I can write on a piece of paper that's sticking out from under another piece without pulling it to the top, and without tapping it with my pencil first to make it the recipient of my writing. GUI windows that claim to implement a "desktop" metaphor should work the same way.
    The mouse should serve as a device for manipulating the screen and icons, whereas the keyboard is for manipulating text.
    Most of us select text with the mouse. Using the mouse to manipulate that selection is not only more convenient but more sensible.
    Reducing it to its titlebar makes a lot more sense then sending it off to a taskbar. ... it makes more sense to shrink a window in its current position and regrow it in the same place then it does to send it all the way to the opposite end of the screen
    I disagree. It breaks the whole desktop metaphor - when I want to remove a piece of paper from my workspace, I don't fold it up and leave it sitting there, I move it off the desk.

    If you're going to have a metaphor, stick with it as much as possible. That's consistency, in a more important sense than whether a menu item is called "Customize" or "Options" or whatever.

  • While scripting arguably makes life easier for power users, it is pretty much useless for novice users. Shells, emacs and vi are nice if you already know what you're doing.
    But what is often forgotten is that novice users don't stay novices forever. (It's like arguments to "protect the children" at the expense of adult liberties, forgetting that children might want to be free adults someday.)

    What's needed is a layered system, with a GUI or menuing system on top for newbie, a CLI for "power users", and open formats and protocols and system utilities for the hacker to get in under it all.

    Example: I use exmh - a Tcl GUI program - to handle my email. I can also use the MH CLI programs (very useful when I'm telneted in to my box). I can also get underneath it all and just access mail messages as files - using grep to search them, moving them between folders manually, etcetera.

  • Windows does the same thing: modal dialogs.
    But system modal dialogs haven't been allowed since Windows 3.1. Only the OS can prevent you from switching out of a dialog box to another application. (And it only does that rarely... e.g., for the "Are you sure you want to shut down?" box.)

    Unfortunately, DirectX provides a lot of loopholes. It's pretty easy to break task-switching on a Win9x machine using DirectX -- the EverQuest client is a notorious example.

    Since I've switched to Win2K, no application has ever succeeded in taking exclusive control of the system (not even EverQuest,) but I have occasionally been forced to log off to kill a program.
  • Cars are not easy to drive, but practically everyone learns how, and they don't have to re-learn a new interface for each model year.

    Good point, but the automobile has been around for around 100 years now, and the GUI, 30(ish). The gui, really, hasn't been in mainstream use since 1985-1990(ish).

    The gui can't settle down until it has matured. Imagine if we hadn't developed new concepts since Win3.1?

    Basic things like Drop Down Lists, Radio Buttons, and different types of scroll bars, most certainly have evolved over time. Multi-Select, for instance, boxes still don't work all that well. How would a new user know to press CTRL to select more than one item?

    We've still got a way to go before we can make every interface behave the same release after release.
  • Well, IMO, one of the major problems is the way that documents are organized. The hierarchial file system is not appropriate for the common document oriented user. The user should be able to arbitrarily and easily organize documents into whatever groups they want independent of how or where the documents are stored on disk. The same document should be able to go into more than one group without dealing with symlinks or shortcuts.

    The grouping should also be "active" rather than passive, like a folder. You should be able to open a group up and have all of your documents exactly where you left them when you closed the group. You should be able to bookmark the view state of the group as well as any individual document. Selecting a group bookmark returns you to the bookmarked view in all of the open documents. One predefined bookmark would be the initial view of a document. For example a web document would consist of a particular URL which is its initial view. After browsing you can go back to that URL by selecting this bookmark.

    Another problem is there is often obscured elements in the "desktop metaphor". Windows can obscure other windows and also icons on the "desktop". A good interface would provide some clue that something is obscured.
    At all times there should be some visible representation (icon?) of open documents even if the document is not itself visible. Documents that "need attention" but are otherwise obscured would flash this icon.

    -- Eric
  • I think there are several things that a user interface needs in order for the user to be comfortable and productive using it.

    First, the UI must be customizable. The needs of a user change over time, and the UI should change accordingly. If something can be streamlined by the user for his/her particular situation, then the UI should be able to accomodate them.

    Second, the UI must find the delicate balance between feature-rich and simple. The truly good UIs will be the ones that provide what the user needs, not more and not less. Any added "fluff" features will go ignored by the user adding overhead to the program for no reason. Conversely, missing features will frustrate the user anddiminish productivity.

    Third, it must be attractive. A UI that sucks visually, misses the point entirely. Style is a form of usability...nobody wants to look at an ugly screen all day. This applie to text interfaces as well. Well designed textual interfaces should have a professional-looking layout just as if it were a graphical app, and/or well designed key "shortcuts".

    Lastly, a good UI will be well designed internally. It should be as modular, code-wise, as possible to allow for customizability, as well as be streamlined and efficient.

    Well just my 2.....

  • Yes! Consistency is one of the most important aspects of increasing usability in a GUI. Until recently, Mac OS and many of the apps that ran under Mac OS were consistent with each other, largely because of the style guides that Apple wrote and published for Mac OS (see the Human Interface Guidelines [apple.com]). Guidelines seem less stringent for developers these days, and fewer applications meet all of Apple's "rules" these days.

    Above all, behavior of interface elements must be consistent in order to maintain intuitiveness. GNOME and KDE are actually doing quite well in implementing consistent interfaces while allowing for themability (one thing that is lacking in Mac OS because Apple has refused to release the Appearance Manager theme specs). My only gripe about GNOME and KDE is that both desktop environments are setting things up a lot like Windows, which often fails to maintain consistency and "sensible" behavior. For instance, why is shut down under the Start menu? Why does Windows hide important options that should be grouped throughout different control panels--hardware management (under Windows 98, you have the System control panel the Add New Hardware control panel, and the Modems control panel (which controls COM port assignments, speaker settings, etc.)), for example. Also, the design metaphor used in Windows sometimes confuses new users. Thus, the fact that GNOME and KDE are being used to attract new users to Linux is a cause for concern.

    People often don't understand that the little details in Mac OS make it a stronger interface than many of the others. (Another strong interface is the one in BeOS, for various reasons.) The close box for windows is on the opposite side as the grow and window shade boxes to denote the strong difference in behavior (which is one thing that might change in Mac OS X--bah). Windows that have the focus have textured title bars, while windows in the background do not. Granted, there are some weird aspects of Mac OS--like dragging removable disks to the Trash and restart and shut down being under "Special."

    Anyway, consistency and well-planned behavior are highly important. Flexibility (and themability) are also significant to strong user interfaces. GNOME and KDE are showing great potential, and I think that with time they will develop into strong desktop environments.
  • Well, here's what matters to me:
    • FULL keyboard and mouse support. I'd like to be able to perfrom every single operation with the keyboard. I'd also like to perform every operation (except text entry) with the mouse. Mac OS is bad for this because there's a lot of mouse only stuff. Windows, for all that it sucks, is actually not too bad.
    • Good memory management. Don't you just hate it when you have to sit and wait for a window to refresh?
    • Configurability. I might not want my system to look like yours. I might not like a taskbar and a start button. Or I might. Nobody else should choose for me. This should also apply to what the mouse buttons do.
    • The ability to save/backup the desktop and all configuration settings.
    • The ability to escape back to a command prompt when necessary.
  • One of the sad things about the anti-trust trial is that Microsoft had not long ago started an R&D division that is researching user interfaces. Among the things I remember were voice control and facial response recognition (the paperclip is watching :-). With the cost of the trial and whatever penalties they may suffer, they'll probably have to cut back on R&D since that kind of investment is usually undertaken by a stable company that is able to plan decades in advance.
  • I agree 100%. In most cases, how something is done is unimportant so long as it is always done that way.

    One of the annoying details in Windows is how to do a search. Sometimes it is F3, sometimes Ctrl-F, sometimes Alt-S. Damn it! I don't care which one it is, so long as it is ALWAYS the same thing.

    The ONLY purpose of a UI such as X or Windows is to provide a consistent interface to the user. If it fails in that it doesn't matter how good it looks, or how stable the OS is (and I'm of the school that does not confuse the UI with the OS).

    Graphics are not a requirement for a good UI. Always using "--help" to bring up help on switches and supporting "info name" makes for a friendly environment. I'm new to Linux, but knowing these to features are available makes the learning curve a little less steep.
  • If you'd read an elengant discourse [acm.org] on the subject, you'd find that without scripting, or similar, you've doomed the user to do multiple, repetitive tasks. Have you ever had to rename 50 files before? That's either a lot of time clicking, typing, and clicking again in an interface (such as the Macintosh's finder, or Windows Explorer), or a few seconds writing a shell script (once you get the hang of shell scripts, of course).

    If your interface can't free the user form the original hard work you intended to eliminate (the whole reason to use a GUI in the first place), you're back on square 0. True, a newbie won't know about it, but when they do need it -- it's there.
    ---
  • No! No! No! Security through obscurity is not a viable solution. Mom may be unable to find your (ahem) personal files, but your blackmailing younger brother will threaten to show them to her. What you need is good encryption.
  • Most modern GUIs focus on the object->action technique: select an object, then select an action to apply to that object. For example, select an icon on the desktop, then double-click to Open or right-click to see other options...

    The problem with this is that it doesn't intuitively allow someone to start new documents or find old ones. To start a new letter, you first need to start the application for letter writing, which means you have to know where to look. To load an old letter, you wither have to go through the application, the "recent documents list", or the file system...

    As you can see, the verbs here are "start", "continue". and "write". The user's action is TASK oriented, not object-oriented. An interface that allows you to do choose a TASK at the top level gives a better starting point to the user (I use uppercase to denote the specific idea I'm discussing here). Note that none of what I'm about to describe are new ideas, but they're worth considering...

    A TASK menu might have choices like "write an e-mail" or "play a game"; though, of course, more specific. Some may think at this point, "Well, that's just like the "Start" menu in Windows!" Not quite: the TASKs must be listed with intuitive, easy to understand names. "Write a Letter" as opposed to "MS Word 2000" or "Emacs". In a sense, the TASK menu is more like the "New..." submenu you'll find when you right-click on the Windows desktop, except TASKs are not always for document-creation.

    A TASK menu wouls also support continuing saved work: "Work on an existing letter", "Continue a StarCraft campaign", etc. One must be careful to balance what is available at the top-level and what choices become available under specific applications. "Print letter" may be useful at the top-level, but it would be better if this option were only available whle one was working on the letter.

    A few more notes:
    1) The file system should be invisible. As someone proposed in another comment, the OS should support finding saved work using searches or heuristics (ie. recent document lists, etc). A hierarchical directory scheme should still be available for users who like to organize their data that way, but it need not necessarily reflect the underlying data structures.

    2) Applications should be invisible. Applications implement some set of TASKS for the user; we might expect that in the near future all apps will be downloaded, so users can simply search the net for a new TASK they may want to do. For example, I may not have "Create flow chart" implemented by any app on my local machine, but I could search for that task and find a number of apps (Visio, etc) that can implement it. I choose one, it downloads and installs itself, and I'm up and running. Maybe even better, the actual app is stored remotely -- my system just stores my files and configuration information.

    3) There's no idea of "saving" a document: all work is logged (as with a versioning system); users can return to any snapshot of their work through history. By default, the most recent version is loaded, but a "Continue from old version" option might be available as well. Check out the Elephant File System [mit.edu] to get a better idea of how this might work.

    Well, I've gone on quite a bit about what I hope is a different way of looking at things than what you're used to. I'm sure there are plenty of issues that would make this sort of system a pain for current computer users, but remember we're thinking about future users. Also note that voice recognition won't solve anything without a redesign of the standard UI: I'd hate to have to spell out filenames and name specific applications when all I want to do is "Start a new letter..."

    --Sameer
  • We need to look at this on a number of levels:

    - One of the most interesting UI ideas I've heard of comes from the Oxygen project at MIT. Apparently, they have realized that the computer we know today is a terrible interface for most of what we do. Their idea is to have smart dust that is constantly around you and takes shape according to your needs. There is a lot of organization required to manage today's GUI's. Our handy icons, folders, etc require lots of time to manage. This should all be hidden from us. Computers are smart enough to find the data we need, it's just a question of a good indexing method. For most communication purposes, we wouldn't need a monitor and keyboard of we had good enough speech technology.

    - As far as speech recognition goes, it'll be useless until we have seamless natural language processing. Then we'll only need monitors for reading. And then your grandmother will be able to use your computer without any difficulty.

    - Computers need to be able to learn about their users. What OS have you ever seen offer to place an icon on your desktop for mozilla after it noticed that you used it everyday? (and speaking of ui's, I wish copy/paste even worked in mozilla)

    - And gui, oxygen, or speech based, whatever the OS, the _BEST_ feature any UI can have is to be organic. The best thing about the macOS is that it's organic. It lets you know when the network is down with a dialog, and when it is returned. It refreshes the contents of network volumes for you, without your having to hit F5, F5, F5. It responds (like gnome does sometimes) when a disk is inserted. Machines that are more self propelled will be the answer to truly augmenting human ability, as opposed to hindering it with slow launching, whiz-bang email suites (can you say, Outlook!) that are more of a problem then they're worth. The most pleasing thing about slackware is so tiny, but it's amazing. Just the simple touch of adding fortune to the .bashrc makes the user experience radically happier. Just a touch of organic, proactive, non-order lifts things up so far.



    ___________________________
    Michael Cardenas
    http://www.fiu.edu/~mcarde02
    http://www.deneba.com/linux
  • "About Face" is one of Alan Cooper's earliest books. It's a bit raw, and I found a few disagreements with him, but in general, it's got a lot of wisdom.

    I don't have his current book's title, but it would also be a solid read on interfaces.

    Alan Cooper started Cooper Interaction Design [cooper.com] as a consulting firm that specializes in optimizing any human-machine interaction. They've helped with cell phones, programmable toys, word processors, hospital records management vertical databases, you name it. They don't write the code. They help you build the RIGHT interface for YOUR application.

    Cooper has trademarked the term, "Rich Visual Modeless Feedback." Rich: lots of it; Visual: seen on the screen; Modeless: doesn't interrupt you; Feedback: lets you see what the computer thinks. A classic example is the red squiggly underline in Microsoft Word: it happens automatically, you see it, you know the word is misspelled, it doesn't interrupt you, you can go back to it when you want to.

    There's two sides to any interface. In computer user interfaces, the computer and the human should be considered in an implicit partnership to get the human's tasks done.

    In essence:

    • The Computer should be able to figure out what the Human is thinking, and
    • The Human should be able to figure out what the Computer is thinking.

    Alan likes to say things like "Don't make the user feel stupid!" By that, he means situations where the computer program seems to delight in stopping the user's flow, just to pop up annoying messages. Or they can't seem to remember the user's preferences.

    Anyone who has used a computer before, bitches loudly at the Win95 default setting of showing subdirectory contents without a tree view.

    As it turns out, in many useability studies, some Microsoft, some not, it turns out that a frightening percentage of people (even existing computer users) were unable to grasp the concept of a hierarchy . They just can't get it. Win95 hides the tree by default, since people can get used to "click this, click that, click that," sequences, much like driving-by-landmark.

    One of Microsoft's aphorisms, which unfortunately they fail to follow, goes something like:

    Make the everyday tasks simple; make the more complicated tasks possible.

  • The most powerful and useful GUI out there is actually an OOUI, and it's called the WorkPlace Shell, available on an OS/2 desktop near you.

    I had high hopes for GNOME, but the truth is that the GNOME developers are only interested in making a Windows-like desktop, which is a real shame. Both GNOME and the WPS are CORBA-compliant, but I wonder if the GNOME developers really understand what that means.

  • All of the above has been stated by Donald Norman (former Apple Fellow and now member of the Norman [Jakob] Neilsen Group).

    Course Don Norman's new thing is Internet Appliances and the industry is gradually catching up. It makes a lot of sense, Don's fond of talking about the interface of doors and the like, the interface of any/ever computer/os is too hard and not intuitive, by building computer controlled appliances/tools with discrete functionality, the task of creating a sensible interface is a lot easier/actually achievable.

    Linux UIs suffer from lack of consistency amongst applications and the proliferation of too highly customisable window managers that never seem to get to a 1.0 release (Linux is stable but the window managers aren't... to the user [who views their computer as a tool, not a forver hackable toy] this translates to an unstable computer/os).

    My concern with OS X is that Apple has lost so many of it's UI scientists (Don Norman, Brenda Laurel, Tog, Jeff Raskin, etc...) that the Aqua interface is going to break so many ui design principles in the interests of looking cool. Hopefully Aqua 2 will get rid of the candy and Apple will have the sense to bring back some of its old ui team.

  • "About Face," by Alan Cooper. Probably one of the best books ever written about proper UI design. It has everything M$ ignored when Cooper was trying to help them with their UI development. It should be required reading before anybody is permitted to develop a UI.
  • The switch statement you make should be treated as part of the (G)UI.

    I generally try to separate application logic from UI as much as possible, since it is a real pain to change code because of UI changes.

    Let the core functionallity of the program have a well defined interface (use CORBA, EJB, ActiveX or whatever) and *then* build a UI shell around it. That way, the next person who touches your app has a fair chance to make UI adjustments without groking every detail of your code.

    Fitting a GUI on top of a CLI is rather easy, the reverse can be almost impossible. Ergo: Never think just GUI.

  • 1. Multiple overlapping windows are very hard to sort out for someone who's not used to it. Notice that on video games, ATM's and the like that everything is completely modal; you're not distracted by everything else that's going on.

    This is a biggy when i'm helping out my dad. I just "know" which window to be dealing with, but he doesn't. perhaps an optional dim-everything-but-the-window-in-focus feature would be good, to make it clear.

    or, perhaps neater, dim-everything-except-what-you -need-to-read-or-can-click-on. ie: window titlebars would not be dimmed (unless they had an overriding modal window up), nor would the text in your current window, but everything else would be.

    might have some interesting consistency problems (under windows, I can do a single click to ICQ to pull up their menu, even though it's in a window that is not the current window.

    certainly I think we have enough horsepower to do this, considering it would be a reasonably rare occurence with the kind of person that would be helped with it. I can deal with most dialog boxes without looking, using only keyboard shortcuts, so they're gone as fast as they're up. but my dad usually takes a few seconds, so this sort of background-fading wouldn't be so bad.

  • There are two thoughts in design: Bauhaus and Baroque. The Bauahus School is one of elegance and simplicity. The other goes over the top.

    The best analogy and comparison is the diffrence between a Buick LeSabre GS and a BMW 540ti. Both are luxury cars but one was designed with Bauhaus principles that put the user first while the other has all the toys thrown in with little thought to ergonomics. I can drive the BMW without taking my eyes off the road because everything in the cockpit was purposefully placed for my comfort and safety. Whereas with the Buick, I have to futz with the light switch because some dumbass GM engineer decided to obscure the light switch with some useless decoration. I take my eyes off the road for 5 seconds, and I hit a Mack truck!

    If I were driving the BMW, I would of kept my eyes on the road and I would still be alive or walking.

    As computers enter into mission-critical areas like medicine, the UI design becomes a factor if someone lives or dies. If a nurse can not grok a interface panel on a computer-controlled piece of med equipment and presses the wrong button, he/she can kill the patient.

    Keep it simple, especially when time to make a decision is crucial.

    Also remember that mistakes do cost money, whatever you can do to lessen errors in your UI will save people time and money.

    The overiding principle when designing a functional object, like a UI, is to follow the mantra contained within my sig:




    If design is not Bauhaus, it is Baroque.
  • by Noonian ( 226 ) on Wednesday April 26, 2000 @09:28AM (#1109524) Homepage
    I'm sure everyone will agree that speed is crucial, but simplicity takes a little more convincing. One of the distinctions that many people fail to make is the difference between the complexity of a task and the simplicity of the interface to that task. Where Apple has made a lot of progress is in maintaining the simple interface to a complex task. Consider the rocker arrows on many of the progress dialogs: in its default configuration, the dialog informs you of the percentage of the task completed (by the visual cue of the progress bar). Click on the rocker arrow, and you get a veritable cornucopia of information -- what file/folder is being processed, how many have been processed/how many remain, time elapsed/remaining, etc.

    Just because an interface is simple, doesn't mean that it can't be complex. Just because an interface is complicated doesn't mean that it's powerful.
  • by jht ( 5006 ) on Wednesday April 26, 2000 @09:22AM (#1109525) Homepage Journal
    A UI should present a simple view by default to the user that makes most, if not all, of the functionality of the software available. 10% of the learning should be able to accomplish 90% of the tasks you'd need to perform. Ideally, the user should be able to happily use the product without ever being forced to dig deep into customization, preferences, skins, or any of the like - the UI should, however, offer any additional chrome as an option. The original Mac (with a few exceptions like dragging disks to the Trash) came pretty close to this ideal - but has become more complicated and convoluted with time.

    Installers should be smart - either dragging the application to the hard drive should be sufficient to install it properly (like much of the simpler Mac software), or a simple installer (the new Windows Installer isn't bad), or a .configure script that handles everything necessary. Reasonable defaults should be set, and the advanced user should have a simple way to access those defaults to change them.

    There's nothing inherently wrong with a CLI - so long as users can function without it. In that sense, it'll be interesting to see how MacOS X turns out. Applications should be consistent to the OS's bulit-in UI functionality - using the system's UI elements should be the default behavior for any application. Chrome and skin use should be optional, if used at all.

    Finally, the keyboard/pointing device combination should be enough for most anything. Not that there's a lot of alternatives out there, but I don't see voice recognition (in cubicle farms?) or touchscreens (the old "gorilla arm" syndrome) being too useful for anything but a specialized environment. Day-to-day applications should not be designed with those type of inputs in mind. More audio feedback would be nice to see in the future, so long as it's not required to use the systems properly.

    For the most part, I remain a relative fan of the MacOS for UI consistency and design. Though it's a lot more complicated than it used to be, and there really isn't easy access to the underlying OS (AppleScript is great and powerful, but a CLI would have been nice years ago), I agree with the pundit (I can't remember who it was) many years ago who said, basically, "The Mac is the first and only personal computer that's good enough to dislike". And though I own and use systems running Windows 98, Windows 2000, and Linux, when I go home and just want to turn on one of my computers and just get something done quickly and easily, without having to think about how to do it - 9 times out of 10 that means turning on my Mac. So I really guess a good UI should steal as much of that as possible.

    - -Josh Turiel
  • by kcbrown ( 7426 ) <slashdot@sysexperts.com> on Wednesday April 26, 2000 @09:36AM (#1109526)
    After 20 years of GUIs, you'd think we'd have them pretty much nailed down by now, and that we'd have learned much more than was known when the Macintosh UI was designed. But interestingly enough, the same basic principles and requirements still apply:
    • Consistency
    • Predictability
    • Simplicity
    • Obviousness
    • "Least Astonishment"
    • Fitts' Law


    A GUI under Linux or any other Unix system will have a tougher time of meeting all these requirements than a GUI built on a newly-designed OS. The reason is that Unix already has certain ways of doing things and the requirement for consistency demands that those ways be complied with in a GUI. An example is the documentation access method: Unix uses manpages, and so a GUI should also use manpages. There's nothing that says that you can't build on that, but it's very wrong, IMO, to build an entirely new documentation structure because it violates the rule of consistency and predictability (those two tend to go hand-in-hand).

    Thus far, pretty much every Unix-based GUI (and Windows, too) violates Fitts' Law, which basically says that larger targets are easier to hit and thus more desirable, so edges of the screen are prime real-estate since they are infinite in at least one dimension. Gnome has the additional problem that its default scrollbars are far too narrow and thus are difficult to hit, which makes them difficult and annoying to use. Why the width of the scrollbars isn't included in the .gtkrc theme settings (it can only be changed in a binary theme) is beyond me.

    Both Gnome and KDE are making slow but steady progress towards being easy and pleasing to use. But I think it's very important that they avoid the mistakes made in Windows, even at the cost of compatibility with the Windows GUI: it's more important to get the UI right than it is to get it to be compatible. People can learn, especially if what they're learning conforms with the principles listed above.



    --
  • by binarybits ( 11068 ) on Wednesday April 26, 2000 @10:47AM (#1109527) Homepage
    I'm sorry, but you seem to have no respect for anyone whose life doesn't revolve around computers.

    There is nothing "logical" about most *nix GUI's. What confuses people is not relentless logic, but incredible arcaneness, the assumption that the user has a great deal of computer knowledge, and no clue whatsoever about where to start in getting a job done.

    If a user wants to make a text file (and most users aren't even clear what a "text file" is) there is nothing "logical" about typing "vi newfile.txt." And there is *certainly* nothing logical about the controls in vi.

    A computer is a tool. For geeks, it's an extremely important tool, and one that we therefore become intimately familiar with. For us, the primary job of a GUI is to get the hell out of the way so we can get our work done. We memorize key shortcuts, write scripts to automate common tasks, and do most of our work from the command line. Therefore, any attempt by GUI writers to add features is likely to just get in the way, since we already have things just as we like them.

    Most users have neither the time or the interest to become this familiar with their computers. This does not make them stupid, lazy, or irrational. It simply means that learning the inner workings of a computer is not a priority. For these users (and 90% fall in this category) the interface needs to be simple, consistent, and provide the user with a limited set of high-level choices that are clearly marked and make it clear what options the user has. A good interface for these users also hides and automates as much as possible the nitty-gritty details of computer operations.

    In other words, a mechanic might be perfectly happy reaching into the engine and manipulating it directly, but the rest of us like our steering wheels, dash boards, turn signals, etc. The fact that I can't distinguish a spark plug from an air filter does not make me stupid or irrational. I shouldn't have to know how to rebuild the engine before I drive to the store in my car.

    So for geeks the interface doesn't matter that much. We work with our machines long enough that we'll figure out practically any interface. So for us, the priorities are power, flexibility, and minimal intrusiveness.

    There *are* however, several facets of good UI design that should be observed in all good GUI's reading these comments I see that most open source types seem to be oblivious to the importance of good UI design. Some of the most important, just from my personal observations:

    The possible actions should be available at all times. This is the biggest factor in reducing the learning curve for a new interface, and it's the primary purpose of menus.

    Unix GUI's are just awful on this score. If a new user sits down at an average Unix terminal, he's not going to have a clue where to begin. I know I didn't. You *have* to have someone sitting at your side to explain shell commands to you, and even then there are dozens of little tricks that I have learned only by watching other users. Compare this with the Mac OS, in which--although there are still lots of tricks-- all the important functions are either done by direct manipulations or are listed in menus.

    Once a user becomes familiar with the interface, this is less important, but even then there are going to be features that the user hasn't used yet.

    The second requirement is consistency. The Mac OS imposes a fairly strict set of conventions for widget behavior, menu placement and layout, etc. There are standard shortcuts in almost every app for cut, copy, paste, quite, etc. Unix apps have nothing that vaguely resembles this level of consistency.

    If you think that the computer is simply a device to be "really fast at mathematics and transferring data around," I don't think you understand what the information revolution is all about. The whole point of the last 20 years of UI development is that the user can get work done with the computer without understanding its inner workings. A good UI hides unnecessary details and provides simple, high-level abstractions to accomplish the user's objectives. Often these interfaces are poorly done, which is probably why many power users have turned to the raw simplicity of the command line. But the fact that most GUI's today get in the way does not mean that all GUI's are useless.
  • by jetson123 ( 13128 ) on Wednesday April 26, 2000 @09:28AM (#1109528)
    I think different user communities have very different needs and preferences. Here are some of the parameters along which UIs can vary:
    • simplicity vs. features
    • reliance on keyboard vs. mouse
    • command language, scripting, or "pure" UI
    • dense UI with lots of features visible vs. sequential screens with big fonts and limited information
    • UIs that are easy to learn vs. UIs that cater to the experienced user
    • UIs with lots of visual features (e.g., 3D buttons and textures) vs. very simple UIs
    • easy customizability vs. predictability of the UI across installations (for easier training)
    • easy prototyping (for developers)
    There are probably many more. I find it regrettable how most of the current UIs just keep copying each other. They all seem roughly like clones of the original MacOS and Windows and somewhat related to Smalltalk.

    What are some alternatives? Here is a list:

    • The free Squeak Smalltalk system has a UI called "Morphic", which looks fairly conventional on the surface but supports visual programming and scripting. Even the traditional Smalltalk UI (which it supports) is still rather different from the current Windows stuff.
    • The Oberon system (Wirth, ETHZ) is text oriented in a rather interesting way.
    • The Plan 9 window system (called 8 1/2; from Bell Labs) is also oriented towards consoles and commands and supports network transparency.
    • The Symbolics Lisp Machine UI (some of which lives on in CLIM) could be transcript oriented: you interact through something like an xterm, but the program output contains buttons, input fields, graphics, etc.
    • The Mathematica notebooks are also an interesting example of a new kind of UI (partly implemented transparently over the web in Schelter's netmath system).
    • Web browsers themselves do represent a kind of new UI paradigm: text oriented with input elements scattered throughout.
    • Scalable UIs (implemented in Pad++ and Jazz) represent another interesting new UI paradigm. (Scalable UIs are basically toolkits similar to 3D toolkits, but only allow 2D view transformations plus zooming.)
    • There has been some work on true 3D UIs with things resembling real-world "objects". (These may be particularly intuitive to get started with but somewhat cumbersome for expert use.)

    Window management itself is also an area of variability.

    • Most window management right now requires explicit manipulation and placement.
    • There have been some tiling window managers (even for X11) that distribute screen space automatically among windows. Some may go as far as to switch windows for you (e.g., when opening a new Netscape window).
    • Zoomable UIs present the possibility of an interesting new approach to window management.
    • Emacs is another example of tiling window management, and Emacs has managed to support a useful set of keyboard based "window management" operations. Maybe someone can figure out how to capture X11 desktop windows and place them under Emacs management so that some eoplec can live completely in Emacs?

    Altogether, I feel that there isn't enough experimentation with new UI styles, but I can see reasons for it. I hope this posting will encourage people to look around a bit more and think about alternatives (Google will quickly find pointers to the systems I mention). Most likely, in the near future, new UI styles will simply live within the current system, just like web browser and Mathematica notebooks exist within pretty sparse UI frames.

    As far as UIs go, I think one size doesn't fit all. There are too many different applications and different cognitive styles. Let's hope that with Microsoft receding in significance, we'll see a new wave of experimentation and different systems.

  • by hanway ( 28844 ) on Wednesday April 26, 2000 @09:24AM (#1109529) Homepage
    Right! Computers will be hard for your mother to use until the GUI styles settle down and stop changing so that a normal person can learn them once and only once. Cars are not easy to drive, but practically everyone learns how, and they don't have to re-learn a new interface for each model year.

    However, I don't think it's a good idea to force a stagnation of GUIs yet. If automobile controls had been standardized too soon, we'd still be starting them with cranks and steering them with tillers.

  • by Mr. Slippery ( 47854 ) <.tms. .at. .infamous.net.> on Wednesday April 26, 2000 @10:01AM (#1109530) Homepage
    You tell me how many years it has taken to MS to get anywhere near Macintosh level GUI.....

    The Mac's GUI should not be taken as a gold standard. I've had to use it at work for the past few months (I'm typing this on a Power Mac) and I find it rather clumsy.

    Not that the Windows GUI is any better, mind you, but I'll take my Linux box any day.

    Frustrations with the Mac GUI (some apply also to Windows):

    • Focus follows mouse. Why should I have to bring a window to the front to type or click in it? This is a relic of the single tasking world, where window managers were also task switchers. Feh! Gimme a real OS, separate windows from tasks.
    • Decent cut and paste. X users know the joy of the three-button mouse and the single click paste. (Selecting text precisely also seems to be more difficult on the Mac, but maybe that's just me.) Really, many of us are smart enough to have more than one button on our mouse. Much more convenient than the keyboard accelerators - which fail to work a good percentage of the time.
    • Resizing windows - why only at one corner? This often makes me drag and then resize instead of just resize. Yuck.
    • Please let me iconify a window in some better way that reducing it to it's title bar. That takes up much too much screen space - even the dreaded taskbar is better.
  • by re-geeked ( 113937 ) on Wednesday April 26, 2000 @09:51AM (#1109531)
    Actually, he is right that even novices should be able to construct complex activities that the computer can perform again and again. If the UI has such a feature, you can have elegance and modularity in your tools. Without it, you get feature bloat.

    The problem is that novice-usable UI scripting that is also useful to power users may not really exist yet. If it did, I'd think that the world would be beating a path to its door.

  • by grnbrg ( 140964 ) <slashdot&grnbrg,org> on Wednesday April 26, 2000 @10:05AM (#1109532)
    Having different interfaces (e.g. voice recognition/GUI/command line) is vital for a usable computer. So is being able to change the interfaces you are given. MS don't seem to be aware of this fact.

    Whadda mean M$ isn't aware of this? You've got lots of interfaces to choose from! There's

    • The paper clip
    • The dot
    • The Genius
    • The HoverBot
    • The Office Logo
    • Mother Nature
    • Power Pup
    • Scribble the Cat
    • and William Shakespeare

    See? Lots of options!

  • by cvillopillil ( 147104 ) on Wednesday April 26, 2000 @09:28AM (#1109533)
    I think most people would agree that with changing technology, dynamic corporations and rollercoster-esque stock markets, software politics, and a huge number of other factors, there should be some universal way of accessing hardware, which is powerful, yet not overcomplicated, fun and yet useful, fast yet flexible. It's estimated that in 20 or 30 years, comptuer literacy will be almost as important as conventional literacy, in many areas, more important. The key to true computer literacy is programming, and finally there's a language that combines all of these factors: ease of use, portability, openness, and flexibility - Python. That language will soon replace conventional UIs.

  • by Fzz ( 153115 ) on Wednesday April 26, 2000 @09:28AM (#1109534)
    A good user interface wouldn't use windows. At least not windows as pretty much all current window systems function. Humans just aren't good at handling the pseudo-3d stacking of windows in a way that makes good use of screen space.

    What does a UI use windows for?

    • Context switching between applications
    • As a metaphor for a directory
    • For pop-up dialogs
    For none of these tasks is a window a good mechanism.

    For context switching, the stacking and overlapping of windows confuses people, makes partially obscured windows fairly unusable, and results in poor usage of the limited screen real-estate. This isn't to say we don't want multi-tasking - just that the pseudo-3D window is a pretty clunky way of managing the interaction. Modern window systems should be able to perform more active management of the division of screen space between apps, scale the results, etc, etc, so that all apps are usable to some extent if they're given any screen space at all. This becomes especially important if voice-command interfaces ever become popular.

    As a directory metaphor, a window filled with icons is a terrible user interface - really bad use of screen space, and provides no context as to what a file is for (other than filename and file type) or where it actually came from. A better interface could be based around HTML, with automatically generated web-like pages serving the purpose of a directory, and having the advantage that they can be annotated by the user so she doesn't lose track of what the file is for.

    For dialogs, windows are pretty poor too - they're only appropriate for cases where some catastrophic event occured and the user's work flow absolutely must be interrupted. Even then, you want to tie the dialog to the window that generated the error, rather than have it pop up in the middle of the screen and where it needs to be managed separated from the application.

    Unfortunately, window-based applications are really easy to program, so the interests of the user play second fiddle for many applications.

    -Fzz

  • by gwernol ( 167574 ) on Wednesday April 26, 2000 @09:29AM (#1109535)

    A user interface should let you: Run programs Alter system settings Allow your programs to communicate with each other (drag and drop, calling up a browser when you click on a URL)

    A few more things an OS should let you do:

    Store documents

    Locate documents

    Find the program you want to run

    Open documents

    Connect to external devices

    Locating external devices

    Allocate memory to a task

    Stop programs running

    Manage screen real estate

    Arbitrate CPU time between running programs

    Plus many others. And OS is a complex beast that has to do a lot of things.

    A user interface should be:

    Intuitive - no learning curve

    Unfortunately there is no such thing as a UI without a learning curve. All UIs are learnt. Sit down with a truly novice user some time.

    The question is how easy is a particular UI, and the answer is complex and depends heavily on the skills, knowledge and previous experience of the user trying to learn it, as well as on the nature of the UI and its documentation.

    Be physically easy to use (single key-strokes and mouse use - you shouldn't have to let go of the mouse to use the keyboard for the basic UI)

    With the caveat that what one user finds easy, another might not. Not to mention that not everything can be accessed by simple operations, so you have to choose some things to be a single click, and other require several clicks to make happen. The question is which operations do you make easy and which hard? That's what UI design is all about...

  • by Raveness ( 176320 ) on Wednesday April 26, 2000 @09:40AM (#1109536) Homepage
    My dream is that a UI will be able to test the user for average intelligence then bring up an interface that is on the level that the user is on.
    • If the user is too stupid to use a computer it will show in big white letters on a black screen. "You are too stupid to use this computer. Please get a clue then try again."
    • If the user has the intelligence of a child (whatever the actual user's age), then make it with only a few large buttons and heavy restrictions.
    • If the user is average and has at least a lick of common sense, then at least make the errors give the people a clue what is going on. Instead of "memory dump..." put "I hope you saved whatever you were just working on or you're screwed. Don't bother to call Tech Support, they're just going to tell you to reboot it anyway."
    • If the user is advanced then go ahead and keep the UI the way it is.
    But Above all, make it stable! Even if they have 50 million applications open and a huge Access Database plus Oulook, make it so it doesn't crash and my life will be a whole lot simpler!
  • by Kaa ( 21510 ) on Wednesday April 26, 2000 @11:05AM (#1109537) Homepage
    What programmers and designers need to realize is that they need to provide alternatives. Or at least, they need to make it possible for the user to choose/install a third-party UI if they so choose.

    That's a laudable goal, but a very hard thing to implement. Consider this: we pretty much agree that the interface across the applications has to be consistent (for obvious reasons). This means that all applications must be decoupled from their interfaces, and that's nontrivial if possible at all. An application will no longer be able to do

    switch(some_event) {

    ...

    case button_1_release: ....

    ...

    }

    because it doesn't know whether the user interface used actually has buttons (maybe it's voice input). I actually don't think it is possible to decouple an application from it's UI to this extent.

    On a simpler note, consider writing an application the full functionality of which is accessible through (1) command line; (2) GUI; (3) voice input. It's much harder than make a just-GUI or just-command-line applications.

    The second problem is: how do you plug in a new user interface for an application? An application has a set of inputs that it reacts to -- the user interface has to know each one of these inputs and map each of it to some mouse/keyboard/voice even. Retrofitting a new user interface onto an application is going to be pretty hard (and demand the application's source most likely) and writing a user interface that you can plug into existing applications is going to be basically impossible (no, I'm not talking about simple things like theming and keyboard remapping).


    Kaa
  • by FascDot Killed My Pr ( 24021 ) on Wednesday April 26, 2000 @09:08AM (#1109538)
    What kind of handle should a tool have?

    Form follows function. The user interface is defined by the application and the people who use it. That's why it's called an "interface".

    It's also why I cringe when I see GNOME/KDE/UI of the Month (well-intentioned as they are) essentially trying to port the UI from Win95/MacOS (OS's that, IMO, are utterly powerless) to run on top of Linux. It's like covering a bandsaw in wrapping paper: it looks pretty, but now you can't use the tool.

    To forestall the inevitable "what about my grandmother" arguments:

    1) I'm not saying "keep it ugly and complex to keep the lusers out". I'm saying "think about the power of the tool, THEN decide on a UI." For instance, "gless" (a GNOME pager) is completely useless. How do I pipe to a graphical tool? And even if I could, does it provide me with anything I didn't already have? Does it take anything away?

    2) A lot of people who take more than 5 minutes to think about UI's will respond with "but my grandmother doesn't need to run pipes and greps and stuff". OK, but that's not an argument for a simple (minded?) Linux UI--it's an argument for your grandmother to use a different OS.
    --
    Have Exchange users? Want to run Linux? Can't afford OpenMail?
  • Working with people who are new to computers, I've noticed several common problems:

    1. Multiple overlapping windows are very hard to sort out for someone who's not used to it. Notice that on video games, ATM's and the like that everything is completely modal; you're not distracted by everything else that's going on.

    It would be better if computer GUI's took care of some of the complexity associated with arranging windows, dialog boxes, etc.

    2. People aren't used to having to organize their files in a thougtful manner. Many users give their files names like 'Bob.xls' or 'Mary.doc'. What directory are they saving to? Many (maybe even most) people have absolutely no idea.

    If the computer organized the user's data into a searchable database, rather than a hierarchial filesystem, information would be much easier to retrieve and reuse.

    3. Collaboration is excessively difficult. This could be remedied through better versioning, easier interfaces to web publishing, and the like.

    There are a lot of other problems, too, such as creeping featurism, emphasis on style over substance, etc., which I'm sure will be mentioned in other posts.

  • Every decent interface I've used has scripting. Shells, Emacs, vi, GIMP, Blender - they're all scripable. An interface without scripting is like .... Windows.


    -Dave Turner.
  • a desktop with overlapping windows is not very intuitive from the start for novice users. It doesn't map to an intuitive human concept at all.
    Really? A desktop covered with overlapping papers seems very intuitive to me, but maybe that's just because I'm sloppy.
    I would be that 90% of the general computing public has a hard time dealing with hierarchical file systems. Check out the Download directory of your parent's PC. Everything they downloaded in the last 10 years is there...
    Just like that oh-so-intuitive pile of bills and papers on my desk, you occasionally have to go through them and sort them into folders. Hierarchical file systems are no more un-intuitive than filing cabinets - but they're no easier to use, either. ("Do I put this receipt from the vet in the "Dogs" folder, the "Medical" folder, the "Visa" folder, or do I start a new folder?")
  • by LiNT_ ( 65569 ) on Wednesday April 26, 2000 @09:13AM (#1109542)

    I just found this the other day on some linux quotes list. Sorry I can't find the link

    "The only "intuitive" interface is the nipple. After that, it's all learned."
    -- Bruce Ediger, bediger@teal.csn.org, in comp.os.linux.misc, on X interfaces.

    LiNT
  • by smoondog ( 85133 ) on Wednesday April 26, 2000 @09:04AM (#1109543)
    M$ used to make fun of this when IBM was bragging that you could format a disk in OS/2 and still do other things, but I think they had a point. I hate it when an OS makes me sit while it is doing something stupid or nothing at all! (Like dialog boxes on Macs). Sometimes on Macs I get a dialog that doesn't allow me to switch windows, but I need to see another window to know that answer it wants.... Arghh. There is no excuse in this day and age to not have an interface that allows you to click between windows and objects seemlessly.


    -- Moondog
  • by JamesSharman ( 91225 ) on Wednesday April 26, 2000 @09:05AM (#1109544)
    I can't speak for anyone else but I value consistency in the interface above almost everything else, this can of course only be achieved with well-written style guides etc. One of my biggest gripes with windows recently has been the seemingly diverging application interfaces, many apps even go so far as to design pretty graphical controls which may look pretty but are eroding the intuitiveness that remains one of windows few good points. Projects like GNOME and KDE should pay careful attention to interface design trends and encourage consistency in the different applications.
  • by roman_mir ( 125474 ) on Wednesday April 26, 2000 @09:48AM (#1109545) Homepage Journal
    It is quite unfortunate that masses are mixing up the notions of system functionality and of the actual science of User Interface.
    It maybe a necessary functional requirement for an operating system to allow scripting capability, however user interface has actually nothing to do with that. An operating system may impose certain functional restrictions and it may provide standard user interface libraries, this does not mean that those restrictions are good or those libraries are at all usefull.

    If I remember correctly from my UI classes the major problems in creating a successfull user interface are always related to certain restrictions in functionality and thought barriers.

    Well Designed User Interface faces many challenges, here are some of them:

    1. Interface must allow new user training and it can gradually allow more and more difficult tasks.
    2. Interface must have the possible minimum number of movements (levels) to do a task (instead of moving a mouse onto a menu item, click the button and a circular menu appears where the cursor is with the cursor in the middle, let's say you divide the circular menu into four sections, once you strike in the direction of the needed section without releasing the finger, another circular menu appears with the cursor in the middle, then you have another hand motion to do instead of selecting an item from a bar menu etc).
    3. Good interface provides analogies - if you want a magnifying glass, why can't you actually take a square or otherwise shaped magnifying glass from your office desk. So in VR, you actually would have items physically associated with your tasks. Pull your magnifying glass over your text and it magnifies for you (not just zooming in and out, actually moving the real magnifying glass over something). (virtual office)


    In fact there are departments totally devoted to user interfaces. Without these departments, what kind of user interfaces would we have for a computer? a car? a tv? a vcr? your stove, your microwave (bad example), even your door - How many times have you being in a situation where you walk into a door and you don't know whether to push or to pull the handle? (bars are for pushing, handles are for pulling - one way for identifying the correct way to open a door)

    Most of the time we all are users of someone elses idea of a user interface
  • by Sunpig ( 125666 ) on Wednesday April 26, 2000 @09:16AM (#1109546) Homepage
    I think you're completely missing the point here. While scripting arguably makes life easier for power users, it is pretty much useless for novice users. Shells, emacs and vi are nice if you already know what you're doing. Sit a computer newbie down at a login: prompt and give them the task of writing an email to their buddy in Australia, and you'll see (or not) just how necessary scripting is for a good user interface. I'd argue that one of the most basic needs for a good good user interface is for a user to immediately be able to identify the first step they need to take to perform a desired task. -Sunpig.
  • by Ron Harwood ( 136613 ) <harwoodr@nOspaM.linux.ca> on Wednesday April 26, 2000 @09:05AM (#1109547) Homepage Journal
    A user interface should let you:

    Run programs
    Alter system settings
    Allow your programs to communicate with each other (drag and drop, calling up a browser when you click on a URL)

    A user interface should be:

    Intuitive - no learning curve
    Be physically easy to use (single key-strokes and mouse use - you shouldn't have to let go of the mouse to use the keyboard for the basic UI)
    In obtrusive - in other words, it's not the end goal, it is a means to a goal.
  • by seebs ( 15766 ) on Wednesday April 26, 2000 @09:07AM (#1109548) Homepage
    Consistency is a primary feature for most users; "easy" is often irrelevant, because beginners end up using a cheat sheet of some sort anyway. Consistency is one of the things that allows rapid learning, and is vital to the success of an interface among non-expert users. It's actually fairly valuable to experts, too.

    GUI? CLI? Voice? Who cares! The key thing is that:

    1. You can get a list of plausible options in most cases. The list may be a bunch of icons, any of which you can click on. It may be a dock. However, somewhere, there should be some kind of guide to what your choices are.

    2. There will be cases where no such list can be made, because there are thousands of entries; in these cases, a little sorting goes a long way.

    3. You must be able to pick an action unambiguously.

    4. You must get feedback as to whether an action has succeeded or failed, and if it failed, you should get an indication of what prevented it.

    5. You should be able to control the level of feedback based on your needs.

    6. You should be able to abort unintended actions. Undo is nice, but abort is absolutely essential. For newbies, dangerous actions should come with a clearly labeled delay during which an abort will be harmless.

    Most UI's try for some portion of some of these. Some attempts to make "easy" user interfaces end up falling down. How do you rename a file on a mac? Click on the name and wait a while, and it becomes a text box. However, if it can't be renamed, no one tells you, because there's no reason to believe that you really meant "rename", not just "select", and it would be stupid to give you the warning if you were just selecting a file.

    This gives us also:

    7. Explicit actions are preferable to implicit actions. You should always know what the computer thinks you're doing.
  • by ToyKeeper ( 17042 ) on Wednesday April 26, 2000 @09:18AM (#1109549) Homepage Journal
    There are lots of things which matter in a UI. Different people care about different parts, which explains why some people use Enlightenment and others still use twm.

    But a few big, important things:

    • Ease of learning - steep learning curves bother people!
    • Power - it must accommodate both novice and advanced users (scripting is good here)
    • Consistency - users should be able to use new programs without having to relearn a new interface each time
    • Response speed - it must respond quickly when the user tells it do do something
    • Efficiency - it must allow the user to complete tasks quickly, rather than getting in the way. This is one spot where Windows has really failed.
    • Aesthetics - yes, most people care about how pretty their desktop is (me included)
    • Appropriateness - the UI should reflect the task it was designed to facilitate. For a computer, this means it must be flexible enough to allow many different kinds of applications to work
    • Flexibility - both for different types of tasks (word-processing really is quite different than video editing), and different kinds of input devices (why can't I use the joystick to navigate programs?)
    • Predictability - things should do what they look like they'll do; nothing more, and nothing less
    • Context - the UI should give obvious context to the user, so they'll know what they need to do. Conversely, it should also provide simple and easy ways for the user to specify a new context (multitasking, etc)
    That's only a few things which matter, but hopefully it illustrates the difficulty of doing it well...
  • by Kaa ( 21510 ) on Wednesday April 26, 2000 @09:50AM (#1109550) Homepage
    I think one of the major requirements for a user interface is a very hard one -- it has to simultaneously:

    (1) Allow newbies to understand what's going one and learn (e.g. menus);

    (2) Allow casual users to use "standard" skills in an application (consistency across applications);

    (3) Allow experts to use fast but nonintuitive ways (e.g. keyboard shortcuts) and to considerably modify the user interface if desired (e.g. remap keyboard).

    (4) Allow a smooth progression from the newbie status to the expert status (newbie and expert should not be two completely different interfaces).

    Kaa
  • by alkali ( 28338 ) on Wednesday April 26, 2000 @09:46AM (#1109551)
    [A] desktop with overlapping windows is not very intuitive from the start for novice users. It doesn't map to an intuitive human concept at all.

    Pieces of paper on a desktop?

  • by cje ( 33931 ) on Wednesday April 26, 2000 @09:58AM (#1109552) Homepage
    This is one area where I think a lot of the open source tools get it right. A good example would be the utilities that are available for burning CDs under Linux (and other operating systems) such as mkisofs and cdrecord. These tools provide the functionality that you need to premaster and record CD-Rs on the command line. Then you've got software such as xcdroast that essentially acts as a graphical front end; when it needs the services of either of the previously-mentioned pieces of software, it simply opens a pipe to them and lets them do the work. The result is that if you prefer working with a command line (as I do), you're good to go. If you prefer working with a GUI, you're still good to go.

    In many ways, this type of architecture is an extension of the classic paradigm of Unix tool development: have a lot of tools that accomplish small tasks, and have the ability to chain those tools together to perform more complex operations. Only in today's environment, "chaining together" often involves wrapping a functional GUI around them to make them easier and more intuitive for users to navigate. This type of architecture really does offer the best of both worlds; it gives users the tools they need to perform a task, and it offers them a choice as to how those tools will be used.
  • by JimDabell ( 42870 ) on Wednesday April 26, 2000 @09:04AM (#1109553) Homepage
    Recognise that one interface cannot possibly be the best thing for everyone in every situation. What I need from an interface is significantly different from what my mother needs. Also, my needs change depending on the task at hand.

    Having different interfaces (e.g. voice recognition/GUI/command line) is vital for a usable computer. So is being able to change the interfaces you are given. MS (as well as other companies) don't seem to be aware of this fact.

  • by Gurlia ( 110988 ) on Wednesday April 26, 2000 @09:21AM (#1109554)

    Absolutely agreed!

    I think one of the major factors in people's dissatisfaction is due to the designer of the UI recognizing that there is no such thing as one UI to suit everybody. Almost all UI designers are motivated by seeking the "holy grail" of UI's, so to speak. This is especially true of GUI's. However, my opinion is that there is no such thing as a Holy Grail of GUI's (or any other UI for that matter). Everyone has their own preferences, and different people have incompatible preferences.

    This is why GUI's like MS Windows are loved by some and hated by others. This is why debates over whether or not Window's GUI is good or not will never be resolved. There is no one UI that satisfies everybody, and until UI designers realize this, we will always be complaining.

    What programmers and designers need to realize is that they need to provide alternatives. Or at least, they need to make it possible for the user to choose/install a third-party UI if they so choose. What turns people off is when they are force-fed with one and only one, irreplacable UI, which they happened to dislike, be it CLI or GUI or whatever else is out there.

    We can argue forever over what features are "necessary" and what features are "superfluous" but IMHO we will never get anywhere until we accept the fact that different people consider different things as necessary, and they are often irreconciliable. Let's not even talk about GUI's: even with CLI, some people prefer bash, some prefer csh, others prefer other shells out there. Just try to convince a csh lover to switch to bash and watch their reaction.

    There are already too many UI's out there designed by people who are seeking the "holy grail" of UI's. IMHO what we need isn't a "better" UI, what we need is a system where the user can choose his/her own UI easily, and where there are many alternatives that the user can choose from to find one that best fits his/her need.


    ---
  • by Lan-Z ( 148249 ) on Wednesday April 26, 2000 @09:08AM (#1109555)
    "Why are computers still hard to use for people like my mother, and how can we make this better?" Hmmm...then she'll find all my porn. I wish not to make this better.

"The one charm of marriage is that it makes a life of deception a neccessity." - Oscar Wilde

Working...