Tuesday, November 02, 2004

the interface is not the implementation

i often see user interfaces that are nearly literal translations of the algorithms and code structures in the program. the challenge here is that what is efficient for the computer and/or the programmer is often bizarre and confusing for the user.

viewing things from a user's point of view often helps. i try and ask myself, "if i was doing X, how would i do it if i had never used this software before? how would i do it if i weren't using a computer?" this can be particularly difficult, since it means jumping out of our own context as software designers and code crunchers.

a trivial example i recently ran into was digiKam's album properties dialog. it had a list box showing all the collections that you could add this album to. you could only add it to one collection, and if you wanted to add it to a collection that didn't exist yet, you had to click the Add button and fill in a sub-dialog first. you could also delete collections here, which made sense from the code's point of view, but from a user POV it was a bit odd that you could delete a collection here and have it affect all your other albums, too!

so i re-jigged the dialog a bit. nothing fancy really, as i was trying to work through a number of dialogs that evening, but here's the result:



the collections item is now a single, editable drop down. if you type in a name that doesn't exist in your collections, it gets created for you. you can also select no collection (the blank entry) or one that you set up previously in the drop down. deleting collections is now done solely in the collections management dialog. this frees up the user to just "put the album in a collection" without having to think about how to manage their collections; it also made the dialog a lot shorter.

happy day.

3 comments:

Anonymous said...

Hi Aaron. Thanks for your great work on kde!

"i often see user interfaces that are nearly literal translations of the algorithms and code structures in the program"

Very true! One good example of this is rapresented by the "printers" dialog in the control center. I really hate this one. The printer, print server and print manager items in the menu toolbar seem to be exactly the name of the classes in the kprinter's code. IMHO this dialog should be completly rewritten from scratch, trying to forget the organization of the code that runs below the kde printing system.

Have a nice day!
Dario (nekkar@libero.it)

Anonymous said...
This comment has been removed by a blog administrator.
James D. Smith said...

This is exactly why listening to the users is so important in open-source software, particularly in DE projects.

Devs need to be able to focus on the foundation code. If they can mock up something functional and unpretty enough, some genious will get fed up with the look and design an award-winning interface that blows the socks off any other implementation, because it's task-oriented, not tech-oriented.

Gnome devs don't seem to get this; I hazard that it has a lot to do with the mentality of coding in C instead of something more OO. It's a one-shot deal, reuse it or rewrite it all. The latter is often way too much work for a small improvement that comes naturally to a tweaked KDE user/developer. If KDE is a Lego mansion, Gnome is a clay sculpture.