What Features Would Make a "Better" GUI?
Rudyatek asks: "When it comes to desktop OSs, there has been much talk about 'the end of the desktop', 'reinventing the GUI', etc. Usability has become increasingly important as we battle the ugly UIs of Windows and X11, and watch companies like Red Hat and Ximian try to improve them. But I'm curious if anyone has any clear ideas on what a truly 'better' UI would really be like? As a hobby OS programmer I have a great interest in alternative OS ideas, and this is one that I hear more complaining about than actual ideas. Anyone have ideas?"
Everyone keeps talking about a "Better GUI" but nothing ever emerges. Why? Because there's really nothing wrong with the Windows GUI (or the various GUIs for Linux that are essentially knock-offs of Windows). The real problem is that nobody can stop hating Microsoft long enough to admit that they've done something well.
Some of the most interesting window managers I've seen lately are those that are controllable from the keyboard, like ratpoison and ion. I've been using Ion just about exclusively for the past month and it is really quite good. You can arrange your windows the way you want once and save the configuration so you'll never have to waste time moving xterms around so you can see them all. And because all desktops are tiled, screen real-estate wastage is minimised.
Well, there's always true translucency. Yes, it's mostly pointless, but it's so cool to look at. But if you're going to allow that, then you have to make everything hardware accelerated (just for speed). And if you're going to do that, well, you may as well base everything on a recognized standard such as PDF for cool scaling and whatnot, and then well ... you've got Aqua, and Quartz Extreme. So why not throw in a robust video layer too. And implement that funky vsync tweak that makes window movements sooooo smoothe.
I dunno, XFree has made little progress in these directions and I just doubt it'll ever get up to par. I'd like to have native rotation, and a fast shapelib. Maybe I'm just wrong though. Everytime I tell people about the real problems I encounter with XFree I'm told they don't exist. Or they mutter something about the protocol. All I know is that I don't give a damn about network translucency (I'm no admin, just a user), I want my bloody alpha translucency. And the slowness and bugs ARE really there.
The toolkits have really progressed over time, QT and GTK really are top quality. The only layer that I find lacking, surprisingly enough is the Window Management layer of the UI. Most window managers are either ugly or half complete (like MetaCity and Sawfish2 -- which I'm told have the FEATURES of being half-complete). The cool and configurable ones, like Enlightenment DR16 are buggy as HELL. And E17 doesn't look like it'll ever be realeased.
As you can see, I could go on for days on my misinformations, but I'll cut it off here. At least I know I want a hardware accelerated, eye candied up, configurable UI.
Scripting by dragging tool (program/action) icons onto a document and connecting them with reactions (follows / pipe to / while / if). One such document (sheet) can be used as a subprogram in others.
A desktop that continues left and right (not up or down) from visible area. Activities in unseen parts are mapped to stereophonic sounds with or without visual hints. turning head / pushing with mouse bring that side visible. Just like virtual desktops except for the part of the audiovisually directing hints.
BTW: if you have been annoyed by sound feedback from your UI, you have had the sounds too loud. Same goes for visual hints. Keep them low/small and short enough not to disturb you, just visible/audible enough to inform you. Helps with becoming closer to your content (be it then cli terminals) when your UI acts as what feels natural for you.
Vocal interfaces to chats: irc2speech and VoIP. No sad attempts to have computer understand speech. It's always faster to write that script with a keyboard. So why'd we need that D&D scripting? To ease the text2concept work for the brain. Our brains have it easier with pictures. So D&DS would be for those who like to continue coding even half asleep =)
That's just some. FP, I think, no more; had too much to say
I think, therefore thoughts exist. Ego is just an impression.
The "desktop" metaphor is getting increasingly outdated, but I haven't seen a really good overhaul yet. There are some links at this site, the most interesting of which is David Gelertner's LifeStreams.
Maybe you can play around with text files to tweak your system's fonts, but most users have neither the technical expertise nor the inclination.
If you release a distro with unreadable font, people don't say "hey, this distribution isn't configured very well". They say "Linux is hard to read".
Oh, and can we please have checkboxes that make it obvious whether they're checked or not?
I'd pay someone half a year's worth of sexual services if I could keep logs running dimly in the background while keeping my interactive CLI windows on the front.
That, and the network transparency. Oh, and the ability to move around in 3D representations of networks. Just so that I were not expected to visualize them barely in my head all the time. That makes my thoughts fuzzy and responses to realtime challenges - like gf's speech or overrunning cars - slow.
I think, therefore thoughts exist. Ego is just an impression.
Everything out there now sucks.
:)
:)
There have been some neat ideas tossed around, including those with are not only 3d.. but '4d', allowing you to track file and system history through a 3d interface.
Eventually we will have commonity hardware that can display 3d (opposed to hardware which currently only displays on a 2d surface).. at which point we will need a truely 3d interface, we should develop this interface now... rather than waiting for the hardware before building the software. History has proven that progress is best done with software pushing the development of hardware, not the other way around... current hardware is fast enough to write software that could be viewed from a 3d display, even if such displays aren't available yet
There are a few features I'd suggest for 2d widget s like those with GTK..
The tabs in GTK are done terribly wrong as they are modelled after Microsoft's equally bad tab widget. If there are more tabs than can be displayed, then the tabs should either create a new row (causing problems with nested tabs which shouldn't ever be used anyhow), or it should provide a menu for the selection of the hidden tabs like with SGI's Motif (which is different than plain Motif).
Close buttons for windows should be on the upper left side of the window.. I'm not sure why Microsoft changed this (and hence creating a whirlpool effect); Windows 3.1 had a upper-left close button, MacOS has it, MWM (and clones/spinoffs), etc. It much faster, easier, and more natural to have it on the upper left. I believe Microsoft's intention was that it should be difficult and slow to close windows.. something that may help novices from making mistakes (which is why MWM and clones, including Windows 3.1 require it to be double-clicked); however, I find that a lot of people new to computers cannot find the close button due to it's location... advanced users are just annoyed or learn to use keyboard shortcuts.
Speakers of languages based on latin are instinctfully drawn to the upper-left.. this is why having a menu in the upper-left is more effective than one in the lower-left (Microsoft Windows 95, per default). This can be different for those who read/write languages from right->left or from bottom->top. I believe Microsoft put their menu on the lower-left as it was initially designed to be 'supplimental' to the desktop icons which would be more prominently placed in the upper-left. However, desktop icons are a bad idea.
Desktop icons are a bad idea. There should be a distinction between the execution layer and the runtime layer. A menu-bar which provides the execution layer then a 'viewport' for the runtime layer. Putting launchers in the runtime 'viewport' causes confusion between the runtime and execution layers. Think of a panel in Gnome as the 'execution layer', this is where programs are executed from.. and then the desktop where windows are allowed as the 'runtime layer'. This also means that programs should not be allowed to overlap the panel.
I must agree; however, that the PalmOS interface is quite adequate considering some of it's defiance of some of my suggestions (desktop icons , for instance). However, their desktop icons could be easily replaced with a 'spring-loaded' folder such as in MacOS.. this would provide the abstraction of the 'execution' and 'runtime' layers by providing a panel, while still being usable on a small display. This 'spring-loaded' folder while minimized would sit along the bottom of the display for easy access while the user is utilizing any programs within the 'runtime' layer.
A distinction between 'runtime' and 'execution' layers should require that the 'runtime' layer cannot overlap the viewport of the 'execution' layer, but the 'execution' layer's programs should be able to visually overlap programs contained within the 'runtime' layer.. as would be necessary for menus or usage on small displays as found on PDAs.
Look at the Palm OS gui. The Palm was the first widely used PDA because it's interface is so intuitive and easy to use. Why?
There is no concept of a "running application", nor is there a real concept of files or a file system. You basically just switch between apps, and you never have to worry about exiting, saving, quitting, etc. Furthermore, you are very abstracted from files. Each app knows what bits of data were created with it, and which to let you open.
Now granted, the apps on a PDA are much simpler than those on a desktop machine, but the concept is still good.
Applications are always available and you don't worry about "runnig" or "quitting"
Modern OSes have virtual memory, so there is really no need to worry about apps running and not being used. With slight additions of features like app "sleeping" (disallowing it from using CPU cycles on demand), File->Quit is a thing of the past. Just leave apps running when your first start them (or start common ones at boot time). The Mac OS X Dock fakes this pretty well by combining an app launcher and task bar. It's great, because I always do the same thing to use a particular app, regardless of whether or not it's running.
Removing the "file" metaphor, and the concepts of "saving" a file
By having applications constantly save files, and additionally version them as well, the user really has no need to ever save. I mean, you don't "save" your memo-pad entries or contacts in the palm, because you don't need to. They are simple structures, so versioning isn't needed, but for larger documents, something similar to the VMS file versioning can be used. Furthermore, since you abstract the user from managing files, their task is greatly simplified; you just click on your app, and choose which thing to work on. Since it's always saved, you never need to worry about exiting, or crashing, or anything. Additionally, apps know what files they created and can open, so the user never has to wade through files that aren't relevant to the current application (Mac OS 9 faked this by using the Type/creator codes).
Files, folders/directories, running apps, are a construct the user shouldn't need to be exposed to. That is why the Palm is so simple to use, and browsing in Windows Explorer is such a pain (for the avg. user).
http://www.naildrivin5.com/davec
1. circular context menues, with common items in the center, can less common ones on the outside, I belive that there is no GUI API which makes this easy.
2. Nothing radicaly different from whats gone before, no one likes to leave old habits.
3. Non of that rearanging of menues which apperared in ME ond office, it just gets confusing when menu its move arround.
Also speed is the most imnportant, responsivness aids learning and easy of learning is key to easy of use, as well as a whole host of other factors of course
If you read a speed reading book, does it take you less time to read the second half?
So you wind up with a command line prompt, but it uses the GUI space to handle things that get a bit clunky in a regular command line prompt, like history, pipes, etc.
Needs work, but it's clear in my mind...that's the basic idea anyway.
- adam
respond to my input automatically
if i type "cstrike" start up counter-strike
if i type "google" start up a browser and go to google
if i type "letter to mom" or the start of a sentence open c:\data\letter_to_mom.txt in word processor
if i type a name listed in my contacts, open the contact and an email message
to use the cliched analogy of a car, i just want to get to my destination - i don't want to fuss with the tire pressure or change the oil first for every trip.
I've seen a fair number of people mention that they want something closer to the command-line, and more involved file-system management. That may be fine for you, but what about for my grandma who just wants to use word, outlook, and her knitting pattern designer. She dosen't want anything to do with the command line - she wants a (virtual) button to press that will "make it go" and run what she means.
So when you say a better GUI, I challenge you to qualify what you mean. Do you want a better GUI for the programmers and hardcore command-line-junkies out there, or do you want somthing for the majority of users who don't give a shit about the command line or the filesystem, and who just want to "make it go?"
Fos us who like the line (and like things like gcc, regexps, or **nix), then maybe a GUI with command lines everywhere is what we need. But all my grandma (or Joe Sixpack) needs is a bunch of buttons - like (as someone suggested) PalmOS. Or a Mac.
Cue The Sun...
-speed.
i want speed, i dont want to drag a window accross the screen and have to wait for it to arive, or have it jerk its way to where i want it. i want windows to pop up quickly. i want instant and accurate feedback on what my program is doing, is it busy? is it truely busy or is the UI lagging?
-simplicity
i want more control with less controllers. i dont need 7 buttons on each window to decide if i want to close, min, max, put to the back, bring forward, menu, etc. it should be(in my opinion):
left, minimize and maximize
right, close
double click titlebar, shade
right click title bar, menu
maybee-right click minimize, put to back
and and click in the window brings that window forward.
any border should resize.
-standards
i want standard controls throughout apps. the file,edit,view, etc should all have the same layout on each application. preferences should always be in the same spot, everywhere, and help should always be on the right end.
id also like the option of puting the menu bar on the top ala Mac, but i want that choice.
-usable space
i want usable desktop space. see fluxbox/blackbox. i dont want my file explorer to force me into a left side info bar. this should be optional. as in not like windows, but like mozilla.
-solid code
how about some solid bugfree code. something that wont crash because i did a rightclick/properties on a file while also doing a file copy.
-personal
i do like "skinning" to a certain extent. i like to be able to set color schemes and taskbar locations. but the buttons should be pretty much standard. Maybee be able to increase or decrease their size.
-keyboard
100% keyboard capable UI.
easy to tab through open windows, easy to launch programs. standard shourtcut keys(cut/paste/copy/search) i dont run with just a keyboard, but some do mostly and i like keyboard shortcuts. using the keyboard and mouse together makes the UI way faster to navigate, assuming that your not running windows and have to wait for every little thing to happed before you even get input back.
thats about it.
kinda like BeOS..
Folks love to comment how ugly they think GUIs look under X in Netscape/Mozilla, and the same folks often suggest the solution is to use anti-aliased fonts. Sure, anti-aliased fonts are good.
However, I'd like to share my experience with a very simple alternative method of getting really great looking fonts in X without installing or changing any software.
Change your X11 display resolution so pixels are about the same size as the dot pitch of your monitor. The jagged edges of the unaliased X fonts totally disappear. Quasi font anti-aliasing is as good as true anti-aliased fonts but without the hassle! If I had my macro lens handy I'd take a photo of my monitor screen running 1600x1200 and show you the incredibly smooth font outlines I've got with this very ordinary variable width Times Roman 18pt font. If I reduce X to anything less than 1600x1200 like 1024x768, of course, the jagged edges return.
Why oil price increase equals economic trouble (Score: Interesti
I want my computer/os/gui to learn from what I do. Do I launch mail at 9am every day? Then mail better be somewhere accesible at that time. Do I then load up a spreadsheet? Have it next in line. Make life easier for me.
MULTIPLE MOUSE POINTERS
That's right, I would like to see multiple mouse pointers. Society is stuck on the singular-mouse idea. We need to move beyond this 20th century dogma and start developing a multiple-mouse environment. If we can put a man on the moon, we can add a second mouse pointer to a GUI.
BUILT IN HOMELAND SECURITY ALERT SYSTEM
Are we at orange or yellow? I have no idea! But if my GUI incorporated the Terror Alert System into the desktop, I would always know precisely how scared I should be. Right now there is a 14-Click pathway to information about our current Alert Level. With integrated Homeland Security Alertware, the 14-Click barrier could be broken, and America would be that much more safer. If the next popular GUI doesn't feature Alertware, then the terrorists have already won.
SUPERFLAT 3D-THIN BUBBLE BUTTONS
In the beginning, all buttons and menus were flat. Then, Windows developed buttons and menus with a 3D appearance. Windows 95 took buttons and menus to a new level by incorporating the 3D-Thin look. While these new buttons appeared 3D, they had that appealing Thin look. Windows XP revolutionized Three Dimensional flatness by inventing the 3D-Thin bubble buttons. These button, although appealingly 3D, are so flat that they appear to be bubbles. I don't know about you, but this is already getting old. We need to add another dimension of flatness. I would like to see Superflat 3D-Thin Bubble buttons! Although Three Dimensionally thin and bubbly, these buttons would appear to be Superflat. I could get a lot more done, as a user, this way.
----
"Those who quote others are more likely to one day be quoted" -Tom Planter
This is probably more of a "Desktop Enviroment" more then just a GUI idea, but I'd like to see something where basic functions (in the internet age) are built in.
As in you don't "open" an program to check your email but it's constantly open, checking mail and alerting you of new mail.
Bah! I just don't know how to put this into words properly....
Wiwi
"I trust in my abilities,
but I want more then they offer"
If you are looking for features to fix usability problems then you have fundamentally misunderstood the problem. There was essentially nothing missing from the original MacOS or Amiga's Intuition that you'd need to make a usable UI. In fact, feature (and processing power) limitations have inspired some of the most usable interfaces around (PalmOS, my Nokia phone).
The other assumption of this question is the notion that usability is poorly understood. In fact, there has been extensive HCI (human/computer interaction) research, and it has produced some very readable, accessible books targeted at software people. The real question is: why don't we apply these lessons?
Unless someone can suggest a good reason I'd like to have /desktop removed entirely with /home in it's place. This means I get rid of that stupid home icon, too.
--Giving to trolls for the benefit of us all
A good UI should first of all be fast. Everything should be responsive and quick. If I click to launch an application I expect the application to appear instantly. If I maximize a window it should maximize instantly. So on and so forth.
The UI should also be full of every possible feature, and each of these features should be completely optional and customizeable. Transparency, animations, skins, icons, menus, buttons, bars, decorations, colors, everything should be customizeable to my taste.
The UI should also be uniform. Even though everything is customizeable everything should look the same as everythign else. All applications should have the same style of window. All dialog boxes should be relatively uniform. Mac does a very good job of this.
This is all assuming a GUI. Since the best UI is the perfectly customizeable one IMHO, a CLI has to be an option. The underlying OS in no way should require the user to see the CLI if they don't desire to see it. However it should be an included and optional feature. There should also be an audio interface, and a touch interface, so blind/deaf people can use it.
It's not possible or realistic, it's idealistic. A 100% complete feature set with complete customizeability.
The GeekNights podcast is going strong. Listen!
When?
When you first use the interface,
or after you've used it for a while and know how to do things.
Take a guitar, does it's interface do what you would expect? hell you have to tune it in a sansible manner even before you start.
Somone who's never seen a guitar before would be supprised and find the interface unnatural, but after you've played the guitar for a while you realise the interface isn't that bad afterall.
thank God the internet isn't a human right.
A dual panel file manager, like Midnight Commander/Krusader/Norton Commander.
Tabbed xterms.
A good CLI: The CLI isn't a GUI, but it is a UI, and a very effective UI for some types of computer interactions. I especially like the feeling of a consistent, single focus point of accessing and manipulate _everything_ on my filesystem.
Multiple desktops/consoles, like KDE/Gnome/etc.
Maximum screen real estate (see above)
"Everything" must be able to be manipulated by keyboard short cuts. A mice is nice, but a short cut is more hot.(yuck)
Decent default settings. /light users. When GUI producers caters for one group, the other group is alianated and vice versa.
There is a schizma between power users, and people who can be considered newbies
Maybe there should be a GUI switch, swithing between power user (advanced) and home user (simple), both with default settings that are apropriate.
The GUI switching could also work across the apps; eg. in "simple mode" the mail client would have few, large icons with text beneath them, optimized only for: get, send, read, write and organize mail. No option for turning on html mails, no cc field, no advanced edit features etc.
If the "simple mode" user needed any one of these features, they could costumize to their hearts content by selecting from the "advanced mode" representation, why deny people anything.
Such a dual GUI setting could cater for the people with simple computer needs, without dumbing down the GUI for those with more complex needs.
Something I find very frustrating about Windows and many *nix windows managers, is the propoensity to waste screen real estate on useless items and pleasantries.
Take a full-screen window (such as IE) under Windows. At the top you have a title bar, then a menu, then a row or two of toolbars, then your actual application space, then a status bar, then the start bar. All in all, more than a fifth of my vertical space is wasted.
Windows has one (poor) solution: auto-hide the start bar; but this also hides some useful indicators on your tray. IE (specifically) has a nice full-screen mode (F11) but again you lose your master menu system, tray icons, and still have a useless bunch of pictures at the top of the screen.
I have long believed that a windowing GUI is an outmoded idea. Provide an "OS interaction" screen (full screen) with a menuing system, access to OS configuration, some monitoring/info, and a list of running applications. Each application runs full screen, with a single global hot-key to change back to the OS screen. There is some provision for a floating menu button and status icons (tray icons) over every application, or called up by a hotkey.
While this moves back to a DOS/menu or Desqview view of the world, I have found that most users are more comfortable with a clear menu system in which there is only one way to do something, and with applications which seem to take over the computer instead of sharing it.
Another feature I have found useful to myself and end users is visual presentation of options and immediate feedback. I am thinking particular of a DOS editor called PC-Write; there were several other programs at the time (including the Borland IDEs) which did similar things. At the bottom (or top) of the screen was a bar with 10 segments, representing the actions for the F1-F10 keys. It was easy to tell at a glance what pushing a particular key would do for you. What if more, if you pressed ctrl, alt, shift or any combination, the bar changed immediately to display the meta-F actions.
Most software today expects you to use a toolbar (point & click), navigate a menu using several keystrokes (or point & click), or discover deep in some forgotten help file the special key or key sequence you need for a particular task. This makes improving productivity (by reducing mouse dependancy) extremely difficult.
i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
Few random ideas:
/usr like traditional Unix does.
(i)
Well, I, for one, would like to see the window title bars becoming task bars/tabbed panes, and the start menu attached to the title bar, not buried in the bottom left of the screen. I'm not talking exactly about a tabbed-wm like PWM, more like each window being an xemacs buffer, so that every application is "in" every window, just only one in the foreground of the window at a time.
(ii)
Right-button menus. Context menus aren't bad as such, but why aren't ALL menus available on right click ANYWHERE. Grey out inapplicable entries, don't shuffle them around for each different object. Think Amiga+MagicMenu - all actions available in the same places each time, just greyed out if they are irrelevant. Also, make sure they appear on button down, not on click. Windows RMB menus really suck that way.
(iii)
Well integrated GUI/CLI combo. Think Common Lisp CLIM. If you've never used it, check it out. XMLTerm is a similar idea.
(iv)
A decent file manager. Think Directory Opus.
(v)
Animated icons and sounds.
(vi)
Vector graphics for most operations.
(vii)
Resolution-independence. MY SCREEN is 120DPI, DAMMIT, but a 10pt font should be THE SAME PHYSICAL hold-a-ruler-to-the-screen size as on any other screen. Just more readable than on a lower DPI screen. Very few GUIs get this right.
(viii)
No more cryptic little icons on toolbars. Humans invented writing for a reason. If you need an obscure little picture, put the writing underneath or beside it. "Tooltips" are an admission of defeat by lazy GUI designers.
(ix)
Bring back the on-screen FKey bar. F1-F12 printed along the bottom of the screen, along with what each key does, was immensely usable, fast, and obvious. "modern" GUIs really neglect the keyboard.
(x)
Amiga-like removable media handling. Disk goes in, icon appears on desktop. Disk comes out, Icon disappears. Icon corresponds to the volume label, not the drive the disk is in. So one can take the disk out and put it in a different drive, AND THE SYSTEM DOESN'T CARE. You can install a program from your fifteenth CDROM drive, AND THE SYSTEM DOESN'T CARE.
(xi)
AppDirs. Don't confuse the user. Make the filesystem hierarchy where applications live. Means installing is "drag icon off the cdrom onto the harddrive". Don't invent an alternate hierarchy in the Start Menu like Windoze does, or glom everything together in
Experiments in "3D" interfaces always seem well-intentioned, but miss the point. When folks start placing the user in a virtual environment, making it necessary to "walk around" a cluttered file system or data structure, it becomes far more cumbersome than the file manager metaphor.
For my money and/or time, the proper direction for a 3D GUI would be something like a combination of Personal Brain and the GUI from Minority Report. (Don't laugh, I'm serious!) You want to give the user the ability to establish relationships between chunks of data, and visually echo those relationships in the UI -- thick cord connects to parent; thin line connects to peers; ghosted dots indicate references; etc.
So the "depth" isn't really about being inside a 3D space -- it's about always having related data nearby and available while keeping unrelated data out of the way. And, again, we know what's related, and in what way, because the user has established these relationships.
On kde-look there is a very nice looking replacement proposal for kicker and the desktop metaphor.
The author proposes a card based metaphor which would allow you to mix and match componants to create your own desktop environment. There is no code yet, just some annotated "screenshots" here and here.
In the discussion there are several people volunteering to help code so this project may actually become reality.
Red Hat 8.0 has made a lot of progress with attractive fonts and icons, and a moderate level of consistency. Unfortunately there is far to much copying of MS paradigms
For now, this is exactly what is needed in order to get people to consider alternatives to Windows. The less of a problem that switching becomes, the more likely it is to be a viable option.
I haven't used it recently, but I remember AutoCAD 12 and 13 allowed a user to use the menu or the command-line alternately. Any action could be done in either location, and the bonus was that menu, mouse activities generated events in the command-line pane.
I totally agree that there's an unfortunate clash between keyboard/console and mouse/GUI input at present. It's silly that I can form vastly more powerful commands at a prompt than with a mouse, and yet it's so hard to just select a list of arbitrary files to operate on in that command line (or, for those who prefer the mouse, to highlight *.bak to move elsewhere).
I think the fundamental problem with today's GUIs is the way they receive input. Sure, you can have your super-3D-funky-translucency-skinned-configurable-w idgets, but ultimately they just display the same stuff slightly differently. When I can
then we'll be getting somewhere. I rate the second point almost as important as the first, BTW. Serious people don't like repeating themselves, they use scripts. Today's GUI front-ends are absurdly hard to script, which is kinda silly since most of them fundamentally use a messaging architecture underneath, and the technology to do it has been around for years.
Once I've got sensible input, from whatever devices, then I think the desktop metaphor is getting a little tired and we could do better now, but that's way down the list of things I'd like to see improved.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
There is only one thing that ultimately counts: usability. The quality of any interface depends solely on how effectively it can be worked with. What features make an interface effective to work with largely depends on what you want to do with it. Your average office worker likely loves the simplicity with which a good point and click interface lets him do simple things, J. Random Hacker likely loves the power and flexibility of the command line. Nevertheless, I know few hackers who don't prefer GUIs over CLIs when it comes like highly visual tasks such as web browsing. Disclaimer: the following is largely a collection of my observations of wins and losses in existing GUIs. There's nothing revolutionary here, probably not even anything innovative (unless taken in the `MicroSoft's tablet PC is innovative' sense).
Modern GUIs tend to be full of colors, icons, animations and decorations. While nice to look at, these are all bad.
1. Animations are bad.
Animations distract the user, waste user time, and keep the system from doing useful things. Simple animations can be helpful (such as indicating the position of the icon while a window is being iconified), but smooth maximizing|minimizing|dropdown just slows down both the user and the system. I especially hate buttons etc. that grow or shrink when the mouse moves over them and change the whole layout of the controls in the window.
2. Too many controls is bad.
Controls are what make a GUI a GUI. Buttons are the most common, and provide one-click access to functions. However, modern, feature-laden applications usually have far too many of them. I saw one user with all toolbars that his word processor offered open at the same time, occupying half the screen. The idea behind toolbars should be that they provide easy access to commonly used functions. Having to search through half a screenful of buttons is not my idea of easy access. While typing or reading (the main activities on a computer), these controls are dead weight at best, distracting at worst.
3. Too many colors is bad.
While colorfulness can be visually pleasing, it is always distractive. It's much easier to find ones way through a black-and-white GUI than through one where every square centimeter has a different color. The same goes for fonts. My GUI has basically 3 colors: white (background), black (foreground), and blue (background for highlit items). I am thinking that swapping background and foreground colors might prove easier on my eyes. I mstly use two fonts: monospaced for controls, proportional for content. Of course, the actual content might have additional fonts to indicate its particular structure, but the monospaced font on controls makes clear the distinction between controls and content. More fonts would be distracting.
4. Desktop icons are useless.
Most GUIs I know use desktop icons. Most people I know have windows that occlude the icons. What use are icons when you can't see them? Icons are good, but keep their number low and put them in a toolbar. Files and applications that you don't use frequently don't go in your toolbar, but in a popup menu.
5. Inconsistency is evil.
This is something that annoyed me to death when I first tried to Linux. It affects other systems as well, but especially Unices. There are a plethora of widget toolkits, each with their own look and feel. Themes help, but there are always applications that do things their own way. XMMS and WinAmp are good examples. Different interfaces make switching applications extra painful, as it requires adapting to the new interface as an additional step.
6. Doubleclicking hurts.
I don't know who came up with double clicking, and I can't understand why so many GUIs rely on it. Double clicking is hard to do and counter-intuitive. Old people can't do it. Click to activate, draw a box to select, drag to move. Right-click (not click-hold; it hurts, not modifier-click; it requires two hands) to do unusual things (e.g. renaming).
7. Focussing unrequested popups.
Don't you just hate it when you're typing something and some window pops up, causing the key events to go through the wrong windows? Especially for those who look at the keyboard while typing, this can really have disastrous effects.
Now for some Good Things I've observed in various GUIs. I use WindowMaker as my window manager, and most of the wins here are found in it, but some come from other GUIs.
1. Dividing the screen into areas according to function.
WindowMaker dedicates one area to the dock. This is where you put icons for frequently used applications. Windows don't go there, so your icons are always accessible. The same should be true for the icons for iconified windows; WindowMaker fails me there.
2. One input device for everything.
Something that requires the mouse, should only require the mouse, and something that requires the keyboard should only require the keyboard. In fact, since the keyboard is mostly indispensible (despite speech recognition), everything should be accesible by keyboard. MicroSoft Windows 95 mostly does it right, only how do I get to the icons (that they foolishly put underneath my windows)?
3. Minimize wasted space.
This is hard to do inside windows, which are rectangular (and should be, because it makes it easy to lay them out efficiently), but one thing it does apply to is title bars. Usually, these are much wider than needed. I believe has fit-to-content title bars that can be dragged along the top of the window. This allows windows to overlap, but still be accessible through their title bars.
4. Window groups and hiding.
A huge win of WindowMaker is that it groups windows of the same application together. All of them can than be hidden and unhidden with one command, making switching applications efficient and eliminating the need for virtual desktops to keep applications out of each other's ways.
5. Drag and Drop
A feature that most GUIs have, which can greatly speed up working. X's select, paste feature is higly efficient, so is MS Windows's dragging files to other windows to view them, or to directory views to copy them (I know they didn't invent it, but they have it).
6. Expressive dialogs.
Grasping graphics is fast, reading text is slow. I read this on Apple's site somewhere, and wholeheartedly agree with it: The ideal dialog has a short but to-the-point title, a text with a more detailed description, and controls that describe what they do. Examples:
BAD:
Confirmation
Are you sure you wish to delete this file? Doing
so completely removes the file from your
computer.
[ Yes ] [ No ]
GOOD:
Delete File?
Are you sure you wish to delete this file?
[ Delete ] [ Don't delete ]
Optionally, this could have a [ Help ] button which would give a more detailed description of why one would delete or not delete a file.
A number of random thoughts to conclude. Configurability is a ducious feature. I think it's good to be able to customize the interface to ones own preference, but it goes against uniformity. It would be nice to be able to script GUI operations somehow. I think Windows 3.x had some kind of macro recorder that might have done this, I've never used anything of the sort, though (I grew up with CLIs). Saving window positions is good. I like my windows arranged in a certain way, so I have the system remember how I had arranged them, and restore their positions next time they're used. Now I _really_ need to go sleep (+1 Insightful).
Please correct me if I got my facts wrong.