Technology for the rest of us

Thursday, November 17, 2005

Clarity and serenity on the desktop

The Appeal-project is a subproject inside KDE that aims to refine, redefine and beautify the desktop. Besides Plasma, it's the most interesting KDE-project at the moment, in my opinion.

(Note: I'm not related to either the Plasma-project or Appeal-project. Opinions and ideas presented here are purely my own personal opinions)

If I were the benevolent dictator of Appeal-project, how would I go about creating a "serene" desktop? What would it be like?

Shapes

Keep the shapes of objects, windows and icons smooth. By this I mean no sharp corners (if possible). For example, windows with rounded corners look nicer and "friendlier" than windows with sharp corners.

When I look at app-windows on this XP-machine I'm typing this on, the windows look harsh with their sharp corners. They look... old.

EDIT: I feel like I need to clarify this point. Of course it's OK to have sharp-corners in icons, if the icons represent objects that have them (arrows for example). But if there's a choice between having a smooth icons and harsh and pointy icon, I would prefer the smooth one.

Related to the shape of the icons: KDE should take a hint from Apple GUI-guidelines (even though Apple itself doesn't always follow them....). That is, the icons should have clearly distinguished shapes that make them easy to tell apart. For example, I Konqueror there could be arrows for back and forward, round button for reload and square button for stop. Each of those would be recognizable from their shapes alone.

Colors

Keep the colors toned down. Bright colors demand attention from the user and they are distracting. It is OK to use colors, but they should not be bright. Use bright colors only when they are genuinely needed. If the system requires urgent attention from the user or it's conveying an important piece of information, then it's OK to use bright colors. But if we use bright colors everywhere, it becomes very distracting because it makes it seem like every object on the screen is demanding attention.

Use colors that fit well to the surrounding area. For example, compare Finder and Konqueror. Notice the lines around the content-area. In Konqueror they are very harsh and apparent, whereas in Finder they blend in with the background. the line is still there, but it's a lot less obvious. As a result, Finder looks a lot smoother (well, there are other factors in there besides that, but still).

Pop-ups, flashing and the like

We all hate flashing banner-ads. I don't know anyone who likes them. They are annoying, distracting and a general pain in the ass. Banner-ads as such might be OK, but if they flash, they became a nuisanse. So why would we want to have flashing things on our desktop? Instead of having flashing things, have something smoother and nicer. Fade-in/fade-out would be a lot nicer than simple flashing.

Related to this: instead of having windows, dialog-boxes and the like simply appear and disappear from the screen, have them fade in and out. It makes the whole process seem gentler. Other option besides fading would be sliding (like sheets in OS X do).

Separators and other UI-elements

Keep a keen eye on all that generic stuff that can clutter the UI quickly! As an example, look at these two screenshots of a proposed KDE-GUI:

The two look very similar. But the second shot has no framing around the content-area in Konqueror (I touched on this subject in my Konqueror/Finder-comparison). End-result looks smoother and nicer. And this begs the question: why do we have those frames in the first place? To tell the user "this area here shows your stuff!"? I think they get the idea without the frames as well ;).

Same thing can be seen in toolbar-separators and the like. Even the text-boxes (like location-bar in Konqueror) have those unneeded frames and lines. Why? They make the UI look cluttered and "un-smooth". I have tried photoshopping few Konqueror-screenshots and removed many unneeded lines. With few minor changes, the whole UI looked a lot smoother and nicer, yet usability was not harmed one bit.In fact, I think that good-looking UI's are inherintly more usable, everything else being equal.

What is beauty?

We want KDE to be beautiful. But what is "beauty"? To some, it means fancy 3D-effect, cool gizmos ("whoa, the video is thumbnailed when minimized, and it keeps on playing while being minimized!") and general bling-bling. And while those things might be good, there's more to beauty than that. I think the important beauty is the kind which makes the system joy to use. the user looks forward to the time when he can use the system again. The system just feels right, and it's easy on the users eyes. The interface can be beautiful, without resorting to "bling-bling".

The difference between those two is that the first one is very apparent and easy to show off, whereas the latter is less obvious and harder to show off. But in the long run, the latter is the better approach. Of course, the perfect system would offer all the benefits of the latter, while offering the benefits of the former as well.

"Bling-bling" can be useful as well. For example, in the recent discussion on kde-artists.org about the Strip, I suggested that instead of minimizing or shading the apps, we could push them to the background. The app-window would get smaller and transparent when pushed back, but it would still be visible. And when the user moved around the strip, the windows that were pushed back would seem to move slower than the maximised windows that are closer to the user. It's the same effect when you sit on a train and the landscape close to you zooms past very fast, whereas the mountains far in the background move a lot slower. In this case the effect would look very cool indeed, yet it would be familiar to everyone since they see it in real-life every day. And it gives the workspace the feeling of depth. And it would be useful, just like shading of apps is useful even today. It would have both the bling-bling, and it would serve a genuine purpose

I bet many of us would spend long periods of time just moving around the strip, just to see those windows fly by :).

Wednesday, November 16, 2005

The Vision for KDE4

KDE4 is an ambitious project. It's propably the most ambitious thing KDE-team has ever embarked upon. There is a vision in the minds of the developers. It's still somewhat vague, and it's far in the horizon, but it's there. And now is the right time to discuss what that vision could be in reality. When the system is being built, it's too late to discuss how it should be done.

The Desktop for The Future

Like Aaron Seigo said: KDE4 should be the foundation upon which the future of KDE will be built. KDE4 needs to be more than "same stuff, only prettier". While move from KDE1 to KDE2 and from KDE2 to KDE3 were quite big, the idea of the desktop stayed the same. And it has been the same ever since the idea of "the desktop" was born, first at PARC, and later made popular by Apple. Since then, the desktop has been practically unchanged.

Some might say that the desktop does not need to change. But it does. The world of computing has moved at a trendemous pace, yet the interface through which we use the system has remained relatively static. We still use separate application to carry out our work, we are still confined to relatively small area on the screen.

Content is the key

Fact is that people don't want to use applications. People don't launch Konqueror and say "Yes, I can use Konqueror again!". What they might say is "Yes, I can read Slashdot again!". What people want to do is to work and use the content, they do not want to use the apps. Apps are merely the necessary evil in accessing the content.

I touched this idea on "The Desktop is The Application", and I stand by it. Of course, we can't eliminate apps altogether. But we should try to minimize their importance. There are lots of things the user could do, without having to actually use a full-blown application. In "The Desktop is The Application", I suggested a simple plasmoid that resides on users desktop that allows the user to do many simple thing quickly and intuitively. Instead of using an email-client to write and send a mail, the user could simply write the mail and send it, without having to use a specific app to do it. Instead of launching a text-editor to write text, the user could simply write the text, and be done with it.

Make it simple and easy for the user to access, create and use content. The content is the key. The applications are merely a necessary evil. Instead of saying things like "KDE has some kick-ass applications!", we should try to move towards "KDE allows you to do your stuff with minimium of fuzz!".

First Impressions

Currently KDE suffers from some simple yet annoying problems. And the sad thing is that these problems would be very easy to fix. Yet, they are still there, in KDE3.4.2. KDE doesn't deliver a good first impression to the user.

I'm talking about simple things like sizes of windows for example. I remember when I compressed some files in Konqueror. KDE popped a dialog-box on the screen which said on the titlebar "Compressing". Well, that is what it was SUPPOSED to say. Instead it said "Compre...". Why is that? It was because the default size of the window was too smaal to display the titlebar. And I had NOT changed the default-settings that's the way it was out of the box. Of course I could fix it by adjusting the size of the window, but the point is that the user should not be expected to fix trivial things like that! It gives a very bad first impression. Things should be optimal right from the start.

The same problem can be seen in configuration-options as well. Quite often the option-window displays so much information that the default size of the window is too small to show all the information. And that means that the user either has to increase the size of the window, or scroll around with scrollbars. Unacceptable.

Progress-dialogs in KDE are propably the worst offender on this area. Just about every time I download something, the progress-window is insanely wide, and I have to scroll around it to see all the information it displays. My screen has a resolution of 1280x1024, so this is not a question of low resolution. It's simply a question of design-oversights that simply should not be there.

If little things like these are problems, the user will get a very bad first impression of the system. And since these are little things, yet easy to fix, but still unfixed, many things will start to wonder that if these kinds of things are not fixed, what problems are hidden in the "big things"?

KDE should aim for perfection. And while true perfection is practically impossible to reach, it should still be the goal which KDE tries to reach. And perfection is composed of lots and lots of "little things".

Peace on The Desktop

This is closely related to first impressions: KDE should look welcoming and peaceful. Bright colors and "Look at me! Look at me!" UI is distracting. the just previewed Oxygen icon-theme for KDE4 is a big step in right direction. It doesn't look boring (like icons in GNOME do), yet it looks understated.

And related to this, is the clutter (again). The more clutter there is, the more confused the user will be. And that is the wrong first impression we want to give to people. If the first thing user has to do is to clean up the UI, we are definitely heading in the wrong direction. In short: the UI should look serene, with minimium amount of distracting UI-elements. Make it easy on the eyes.

KDE should highlight the things that are important. Currently KDE highlights everything, and the end-result is a mess. By having less stuff visible, the stuff that is visible gets more attention. So remove all the fluff, and only show handful of things by default. And those things that are visible should be the things that really matter.

KDE should aim for the serenity of the mind and serenity of the user interface. And this should start right from the login-manager and splash-screen. What happens when user logs in to KDE? Well, we get the splash-screen with flashing icons and text explaining what's happening. Only thing missing is the klaxon wailing in the background. Instead of all that, why not simply fade to black when the user logs in. Instead of flashing icons, we would simply have black screen with white text in the middle saying "Starting up KDE...". The "..." could appear one by one to tell the user that the system is working. After the desktop has been loaded, the "splash-screen" would fade in to the users desktop, which is ready to be used.

This sort of behavior would reinforce the feeling that the login-manager is a portal to the system. As the login-manager fades out, and the desktop eventually fades in to view, it reinforces the feeling of moving from one system to the other. And it does that while being very un-obtrusive and peaceful. And maybe we can shave few fractions of a second from the startup, when we don't have to load a complex splash-screen ;)?

Rethinking the desktop

Like I said, the desktop has been unchanged for over two decades now. Instead of re-implementing the desktop in identical way it has been done before, we should really ask ourselves "how could this be done better?". What follows is collection of ideas I have seen (and I have been involved in most of them in one way or the other, mostly by providing feedback). Note: I'm not suggesting that KDE4 should be done like this. Rather, I offer these as a food for thought.

Recently on KDE-artists.org, I have been involved in a discussion about an interesting proposal for the desktop. Instead of having a desktop, what about having a strip? Instead of being confied to single desktop of certain size, what if the desktop scrolled left and right? On the bottom of the screen would be a navigation-strip, helping the user to navigate the strip.

Friday, November 11, 2005

On the mindset of design

Introduction

People talk of systems, user interfaces and the overall design of things. But beneath all that is the mindset of the design. The details of the design (toolbars, icons etc. etc.) all reflect the mindset of the design. Yet, no-one talks of the mindset, instead people spend lots of time discussing the details. Details are important, and they deserve good discussion. But first, the designers need to answer few simple questions: "What do we want to achieve with this? How do we want to achieve it?"

The Mindsets

When you look at modern user-interfaces, you can see some prevalent mindsets among them. If we want to look at diametrically opposed mindset, I would say that we can find the two extremes at Mac OS X and Gnome with one end, and KDE on the other. I call these two opposites "Mindset of Usability" and "Mindset of Power".

Mindset of Usability

As the name implies, this is all about usability. And it often means simplifying the UI, reducing options, and streamlining feature. But before we brush this off as "not suitable for power-users", we should keep few things in mind:

a) Most users are not power-usersb) Less is more.

The point a) is quite straighforward. Most people do not live and breathe computers. To them, computers are a tool to get job done as easily and effectively as possible. For these people, overloaded UI's and features that get in their way are a hindrance that slow their work down.

The point b) is related to what I just said: by having less UI-elements, options and features, the UI-elements, options and features that ARE there are more apparent and easier to access, making their use easier and simpler. Even complex tasks are easier to do, if the needed features are not buried under a layer of trinkets.

Sometimes, this approach might mean removing features that some users use and love. But it doesn't HAVE to mean that. For starters, things could be implemented in a different way, or the features could be moved to a separate app. It's a question of implementation.

Mindset of Power

This is what KDE is all about. KDE is a powerful system. Very powerful. It propably has more capabilities than GNOME and OS X combined. If there is a system that is closest of making your breakfast and washing your car, KDE would be it.

KDE has lots of features, and it's not afraid to show them. And that's why it's so cluttered. It can be seen everywhere. Menubars and menus are overcrowded. Toolbars are overcrowded. Configuration-options are overcrowded. Kmenu is overcrowded. The functionality is there, but since ALL the functionality is diplayed all the time, it gets very confusing, very fast. It's like the designers weren't able to decide which features should be highlighted, and which should not be highlighted. So they highlight them all, which means that none of them is really highlighted.

KDE has so many features, options and apps that finding the one specific thing the user needs becomes a chore. Take text-editors for exmaple. KDE ships with three editors. Yes, there are "reasons" for having three editors. But users don't care. When they want to edit/write text, why are they required to choose between three editors? They don't want to do that, they just want to write text.

Instead of presenting the user with choices and options, present them with solutions. Right now, it's up to the user co create the solution for his problem. And KDE faciliates that by presenting him with all the options and features he could ever need to create the solution. Intead of doing that, remove the burden from the users shoulders, and present him with a solution. Instead of "You want to edit text? You can do that with this. Or this. Or this. And there are several ways for you to use these tools!", have something like "You want to edit text? Here is the tool to do it, and here's how you do it" instead. Laserlike focus to the solution, with no need for the user to wonder which choice he should make. Because, in the end, user does not want to make choices, he just wants to use something that works.

Changing the mindset

Change is good, but it can be painful. There are lots of users who like KDE because of all the power it presents to them. But if KDE optimizes for 5% of users, instead of 95% of users (that's the situation right now), KDE is destined to be a niche-player. The needs of the 95% outweights the needs of the 5%. Unfortunately, the developers are often in the 5%. They create the system, and they optimize it for their needs (consciously or not). And that means that the usability of the sytem goes down for the 95% of users, while the 5% are happy campers.

I know: "Those who code, decide!". But we should understand that designing a system like KDE is not solely a job for the coders. Are the developers more important than those who write documentation, create artwork, organise events, review usability etc. etc. KDE and other system like it are a result of team-work (at least they should be), why should the end-results be tailored around the wishes of the developers? Yes, the developers write the code. But KDE is a lot more than just a bunch of code. Yet, for a long time, the people who write that "bunch of code" were the ones calling the shots. And, in many ways, they still are. They are the gatekeepers, all the changes that the user will ever see, has to go through them, because they are the ones who turn those ideas in to code that form the system.

That might be a big change for many. But fact is that coders are not experts when it comes to usability. The usability-people don't start telling coders how to code, why should the coders tell the usability-folks how the UI should be designed? No, this thing should be a result of synergistic team-effort. In the past, KDE was solely about developers. They decided and create. Now-a-days things do seem better, but a lot needs to be done.

Tuesday, November 08, 2005

Marketing for KDE

I just noticed on dot.kde.org that KDE has formed a marketing effort.. Finally! For more times I can coun I have ran in to a situation where some user says "It would be cool if KDE had feature xxxxxx", only to be told by someone else, that KDE has had that feature for a long time. And several times I have seen GNOME-guys market some feature their desktop has, as greatest thing since sliced bread.... While KDE has had that feature for long time. Or I have seen them parade about implementing some piece of technology. While KDE-guys quietly implement the same stuff with minimium of fuzz.

You could say that the KDE-folks are focusing on important stuff: making their desktop better, instead of spending their time writing press-releases. But that work might be more or less wasted if others get the credit, or if the users don't know the feature exists. This problem might be related to the problem KDE has: It has so much options, features and clutter that the great features are buried beneath that layer of cruft. KDE is a powerful system that can do a lot for the user. But the user never realizes that, because all that greatness is buried beneath trivial clutter. In a way, KDE is not ruled by a powerful set of core-features, it's ruled by trivialness.

I like to talk about KDE's clutter. Mainly because it's an easy subject to talk about. It's everwhere. And it doesn't need to be that way. That clutter makes KDE look awkward, unsexy and... well, cluttered. It leaves bad first impression on the users mind. And first impressions are important. I can't stress this enough: first impressions are very, very important. They are important in meeting new people, and they are important in choosing your desktop. If the user has to choose between smooth, streamlined and uncluttered desktop (GNOME) and cluttered, confusing and chaotic desktop (KDE), he will propably choose the first one. This isn't just a question of usability and aesthetics: this is a question of marketing as well.

I also like to talk about the clutter because

a) it's relatively easy to fixb) fixing it would remove the nr. 1 complaint people have about KDE.

The Desktop is The Application

Why do we use separate apps to carry out simple, everyday tasks? Couldn't there be a simpler way to carry out those tasks? What I'm proposing is somewhat radical, yet very simple in everyday use. Namely: The Desktop is The Application.

More detailed description: How do we use our systems these days? What do I do when I decide to type and send a mail to someone? Well, after I have decided that I want to send some mail, I launch Kmail/Kontact. Using the app I then type the mail, and send it. But why do I need to launch a whole app just for something as simple as that? What if I want to read some website? I launch Konqueror. What if I want to copy some files around? I launch Konqueror. And so forth. Do I really need separate apps to do those tasks?

What if we had a plasmoid in the desktop that allows me to do those tasks, without having to launch separate apps to do them? Allow me to clarify:

The plasmoid would consist of a textbox (similar to location-texbox in Konqueror). Next to the textbox would be an area for handful (3-5 at most) of buttons that could be used to carry out the task. Underneath the textbox would be an area for actually carrying out the task. And that's it.

How could I use that plasmoid? Well, I could type an URL in to the textbox (either in the web, or in the filesystem). Contents of that URL would be displayed in the area underneath the textbox. The control-button in browsing-mode could be Back, Forward, Up and Home (for example). Or if I wanted to send an email, I could simply type the address of the recipient, and I would then get a text-area underneath the textbox where I could type the message. The control-buttons could simply be (for example) "Send" and "Attach". Additional buttons aren't really needed for everyday mailing. The app could also be used to read mail, but I'm still working out the details ofthat :).

As you propably noticed already, the capabilities of the plasmoid would be limited. But it would still allow the user to carry out most everyday tasks, without having to launch separate apps to do those tasks. If the user wants more features, the full-blown apps would still be available.

Now, why have something like this? Well, not all users need all the features Kmail, Konqueror etc. offer, so having an simple alternative would be ideal. Also, since the user doesn't have to launch separate apps for his tasks, it helps keep the system tidy and manageable. Didn't David Faure say that no-one wants to do windowmanagement? Well, in this case, no windowmanagement is required, because the desktop is the application :). The app is always there, right on the desktop. If the user wants to quickly do something, he could do it right in his desktop, without having to launch separate apps. Also, every time we introduce new apps to users, we require him to learn new stuff. That would not happen with this proposal, since there would be no apps to learn really.

Of course, the user could run as many of these plasmoids as he sees fit. But the fact remains that one plasmoid could only be used for one task at a time. So the user couldn't really surf the web and write an email at the same time, using the same plasmoid. But this system is not meant for something like that, this is meant for quick and simple tasks. Of course, the user COULD use the plasmoid for his primary email-client, and he could use it as his primary web-browser (for example). But then he would lose some of the advanced features Kontact and Konqueror offer (tabs etc.). Although in case of email, all the filters the user has set up would still be applied to messages. And typing email-addresses could be automatically looked up from the Kaddressbook etc. those things wouldn't really make the app more complex to use. But the plasmoid would not have any way to configure options related to those features for example, since that would make the app more complex than it needs to be.

The examples I have mentioned (web-browsing, email, filemanagement) are simply a tip of the iceberg. Developers could simply write plugins that added functionality to the plasmoid, like they do now with KIO-slaves. I could see the plasmoid being used for playback of music and video, and doing some simple text-editing.

KDE and it's future: It's the usability, stupid!

incrementalism is not what we need in KDE4. we need to embark on a course that will support our next decade of success and we are no longer competing with windows 2000.

Amen! We (well, I'm not a KDE-developer, just an user) need to make sure that KDE4 will be truly great. No, not great: groundbreaking. We must not feel shackled by our past, rather we should explore new areas in interface design. We should not make things a little bit better, we should make it A LOT better.

The desktop-metaphor we have today was introduced close to 22 years ago (even longer than that, really). And during that time, there has been no major changes. Sure, things look better and we have more eye-candy. But deep down, the desktop has not changed.

No, I'm not saying that we should change things for the sake of changing them. But we need to rethink many things in KDE.

People who have read my ramblings in dot.kde.org, kde-devel-mailinglist or kde-artists.org, propably have a vague idea what I'm about: usability. Before you start to roll your eyes, ask yourself: what is usability about? It's about making the system easy to use. And that is a worthwhile target, don't you agree?

Many of you are thinking of GNOME and their drive towards usability. They took the route of "less is more", and removed fetures and options.And you know what? For the most part, they succeeded. No, we should not do a 1:1 imitation of GNOME, but we CAN and SHOULD learn from them.

The road to Usability

The worst thing software can do to the user is to confuse him. Unfortunately, KDE delivers confusion in spades. What do I mean by this? I mean that KDE and it's apps offer all the options and functionality to the user right from the start. And that makes it look too confusing. Toolbars are full of buttons, menubars are full of entries, settings are full of.... settings. Users will not know where to start. By offering them so much choice, KDE in fact removes the choice from them. Users are capable of choosing between handful of options. They are not capable of choosing between dozens of options.

The app should have a defined purpose, and a UI that matches that purpose. When you have defined the purpose of the app, define the core set of funcntionality needed to carry out it's purpose. Remove all the extra fuzz, focus on the essential. This way the purpose of the app becomes apparent to the user, and it becomes harder for the user to make an error, since the app guides the user towards correct solution.

If the app offers dozens of features and options to the user, the user can (and often does) gets lost in the maze of functionality. When there's more things for the user to choose from, the possibility of error grows. In a way, the app has more points of failure.

This would mean that we remove the more advanced features and options from the default-view. But, basic users don't need them anyway. And those advanced-users who do need them, are advanced enough to get to them. But if we offer those features and options by default, we will confuse the basic users who have no idea how to navigate the maze of features.

In short: basic users will get confused by the multitude of functionality. Advanced user are advanced enough to add the missing functionality if they miss it.

The best UI is no UI at all

What if we could make carrying out tasks so easy and intuitive that we didn't really need an UI to do them? And I say that we CAN make it so easy. UI is another point of failure. And before you start worrying about losing the beloved UI, remember: we don't use computers to marvel at the UI. We use computers to carry out certain tasks.

A while back I made a suggestion entitled "The Desktop is The Application" in kde-devel mailinglist. While it sparked some discussion, nothing tangible came from it. I still support that idea, and I think it could help us re-think the way we use our apps.

What is "The Desktop is The Application" you ask? Well, I will post my proposal in a separate blog-entry. It's somewhat long piece of text, so it's better not to clutter this blog with it.

"From my cold, dead hands!"

What worries me is complacency. KDE-devels have talked about overhauling KDE for 4.0-release. And that is a good thing. But I have already seen indications of people (read: other developers) complaining that things should not be changed too much, that only incremental updates are needed. That "things work the way they are, why change them?". For starters, because things DON'T work the way they are. KDE is in need of a serious overhaul. And, IMO the scope and magnitude of that change should rival the change from KDE 1.x to KDE 2.0, if not surpass it.

Someone has to be the first to do new things. Why couldn't that "someone" be KDE? Time of conservatism is over!.