What Is Important In A User Interface?
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?
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
Kaa
Kaa's Law: In any sufficiently large group of people most are idiots.
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?
Linux MAPI Server!
http://www.openone.com/software/MailOne/
(Exchange Migration HOWTO coming soon)
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.
Your design to a real part online: Big Blue Saw
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.
Become a FSF associate member before the low #s are used
Tom Swiss | the infamous tms | my blog
You cannot wash away blood with blood
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."
LiNT-- Bruce Ediger, bediger@teal.csn.org, in comp.os.linux.misc, on X interfaces.
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
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.
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.
BlackNova Traders
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.
My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
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...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
Kaa
Kaa's Law: In any sufficiently large group of people most are idiots.
Pieces of paper on a desktop?
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.
We're going down, in a spiral to the ground
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.
"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.