Okay, I'm not sure if the last two posts made a hell of a lot of sense. I'm trying to express a feeling I have way back in my head about User Interface stuff. It's just 'there'... I feel like if I could just grab onto it...
I hate the fact that you need to "relearn" how to use every new application. Three different email apps have three different ways of being used. Even applications within the same "suite" like MS Office have a zillion different ways to do things. How many dialogs are there? How many menu items? How many times have you heard that people only use 10% of the application? And do you think the designers of applications have put any real concern for the user into their apps? No - they just said "I want to do 'x' so where can I fit that option in this UI?" And because they're so ingrained on how WIMPs work, they think that everyone else is too and put the options in various randomly tabbed dialog boxes hidden under tree menus behind hierarchical menu items and think it's just fine...
HTML works because of its simplicity - it's exactly opposite of this WIMP nightmare. But programmers just can't stand that HTML doesn't have more widgets! The whole Java Applet and later Flash movement was an effort by the geeks to ADD MORE WIDGETS! Dammit, what's a graphical UI without lots of widgets!?! I understand that HTML has its limitations, but more widgets are not the answer.
In fact, the widgets that exist today, along with standard UI components like pop-up dialogs, toolbars, menus, etc. are all old and tired anyways. They're confusing. They trap data in ways that aren't flexible or easy to use. But we continue to reuse the widgets - and find ways to add more to places where they don't belong - because of sheer momentum and laziness. The widgets are there (Swing, SWT, WxWindows, Gtk, Qt)... so let's use them. There's even whole Interface Guidelines which show you the "right" way to combine all these widgets into more and more confusing configurations.
Look at Spaces - the idea is straightforward: it's an app to grab information from different places and organizes it for you in a centralized application. But look at its use of widgets. It's all the same widgets that every other app is using - but reshuffled around in different - and somewhat confusing ways. It's sorta like Outlook, but not really. Yet again, you need to "learn" how to use the application. (It's great work don't get me wrong, I'm just picking on it because it's the last new app I saw.)
This is how modern GUI applications work, I know. But being trapped in widget mode makes using the application unnecessarily difficult. If you want to add a contact, you click a toolbar button and up pops a dialog with fields which you need to click in and fill out and then click another button that says "okay", etc. Why? Why not just start writing your contact info in a contact document form? Why the pop ups? Why the fields? Are all these widgets actually producing something of value? Is it really that much easier and faster to use a table widget than to display the data in an html table? I guess, because you can sort without refreshing the page... but I'm not convinced.
The idea that seems to permeate Interface Guidelines is that because users are used to standard widgets, they'll be able to understand all the various combinations and extensions that you can come up with. But that's ridiculous. First, users can only understand a finite number of components and secondly by putting these components all over applications in various hard-to-return-to places, it makes users nuts.
There's got to be a better paradigm out there for both capturing and displaying information. More powerful than HTML, but far away from the widget hell that we're all trapped into now. My favorite, non-standard UI is as I've said before, Lotus Notes. In it, the view of the data ("forms" or "views") are separate from the data. The docs were very open - you never had the sense that you were filling out a form. You were always using a document. Notes has its faults, but still - it's got a great document paradigm that I think should be used more.
So in summary I think I'm coming to the conclusion that a different form of GUI development is needed. I don't think current UI guidelines are showing us the way. They focus on flexibility and widgets. It should be the exact opposite. It should be about strict widgets and free form data in Document-centric UIs. That's how we think - we've been using pages of information for hundreds of years, it's shaped our language and our way of thinking.
So here's my summary of what I'm thinking the way to design UIs are:
- Document centric
- No dialog boxes or "hidden" options
- Able to describe any point in the application in a hierarchical manner
- Minimal widgets
- Minimal menu items
- Data not tied to UI
- Specific entry and exit points
Personally, I'm going to stick with Web-based UIs for the time being until I can figure out how to implement what I'm thinking about.
I think that David's link to the OEOne guys was perfect. They've got the idea that I'm trying (and probably failing) to expand on here (though they still have too many pop-up dialogs). Experienced users want their 30 ways to do stuff, but they're few and far between. It's the novices and normal users you need to concentrate on.
Whew. This took me hours to make somewhat coherent.