First Commandment of User Interface design: I'm the computer, your platform. Thou shall have no other platforms before me.
Not even Especially not the shiny, web2.0 ones.
Plasma is a project with a solid foundation in the open source movement. For years open source communities have changed the way we think of software development and they are constantly challenging our expectations of what is possible through free and open collaboration of dedicated individuals. Today large parts of the technological infrastructure driving the civilized world are relying on open source software and life there would simply break down without it.
In the near future the open source collaboration model is also about to change the corporate landscape as businesses around the world, spurred by the current success of open collaboration in the realm of the web2.0, are realizing the potential of giving employees, as well as customers, a more active role across various communication channels.
As a subproject of one of the largest open source projects to date, Plasma is well aware of that cultural heritage and builds on that, adding at least two new aspects:
Traditionally the strong point of open source projects has been their exemplary treatment of humans as collaborators in the process of creating software. But open source projects, just as closed source projects, lacked an understanding of putting the human also into the center of their design considerations. User centered design is a fairly new topic in the field of software engineering and Plasma is one of only a few projects to truly use it as a guiding principle to create better software.
Doing so is also a bold experiment, since the open source development model lends itself perfectly to incremental improvements, but will first have to prove itself suitable also for genuine innovation, where not the competition but one's own imagination is the only guiding light.
Venturing something like this usually requires a shared vision among large parts of the involved parties. This document is intended to serve as a central scaffolding around which the necessary discussions for this shared vision can be had.
An interesting exercise to understand what user centered design is all about, is imagining oneself as an interface designer for an automobile's interior. Today every part of a driver's cockpit is, or could be, activated electronically; not just navigation systems or car stereos, also steering, braking and shifting can be done "by wire". This would potentially allow designers to create an in-car experience any way they pleased. Yet, designers hold off, because they understand, that they can not interfere with what the user is actually doing: driving a car. Regrettably such modesty is seldom to be seen in designers of computer user interfaces. Granted, their failure may not be as fatal as failure in interface design for automobiles would be, but survival of the user is hardly a measure of good user interface design. A clear notion of what the user is actually trying to achieve is of paramount importance to start a user centered design process.
While the look of computer user interfaces has changed a lot in past decades, the interfaces have hardly become better. The reason for that seems to be, that the undeniably ingenious ideas of former generations of software engineers have been "improved" without a proper understanding of their ingenuity; windows, icons, panels or files come to mind. Although they were good solutions in their time, no user needs these; but every computer user still needs solutions to the problems that they solved. Plasma is unique in its effort to not simply create fancier icons, panels and system trays, but to understand the problems icons solved for the user and create new and modern solutions to these problems.
In earlier user interfaces it was not always possible to directly interact with content. For different kinds of content different sets of functionality had to be loaded to provide suitable means of interaction, think text processing or image manipulation. So due to limited resources at that time it seemed more economical to not have all functionality loaded at all times and have some interactions be executed on representations of the actual content, instead of on the content itself.
Initially those representations were just text based, namely the file name of the file containing the relevant content. This brought with it the problem that all content was suddenly "the same". Imagine looking at ten pictures: it is instantly obvious which content is which, but looking at a list of the ten file names of these pictures, takes considerably more cognitive effort to discern the pictures. This remains true, even when not all pictures are named "IMG_#####.JPG", but have descriptive names.
So to help users to better get along with just representations of their content, icons were introduced. With icons it was possible to create a richer and more visual experience for the user.
As systems became more and more powerful, it was possible to play with the icon-metaphor to enhance user interfaces even more. Different kinds of icons could be used to represent different kinds of content, so the user's facility to discern content at a glimpse was restored; at least partially, since obviously content of the same kind still had to be identified by means of a file name.
Today systems are so powerful that it is possible to use an actual rendering of the content as an icon. So obviously one would think that representations of content could now be superseded by real content, at least in many places of an user interface. Real content allows for a much richer and immediate user experience and is more expressive than its representations, textual or iconic, could be.
Yet, in most user interfaces content is still represented as icons along with a file name. This puts an unnecessary cognitive strain on the user. Perhaps plasma can provide means to remedy this situation.
As others have so aptly put it: Let content be content; or as humorous natures might say: I am your content, thou shall not make for yourself an idol.
Another example of a fine idea drowned in current user interface misconceptions is the "Recent documents" menu. Giving users quick access to all the projects they are currently working on, is an excellent idea. But in the current user interface landscape, this idea was bound to fail. It is near impossible to represent the notion of a project in terms of what is currently available: files and applications.
The only remedy, when leaving all the other user interface concepts untouched, is to give in and embed the "Recent documents" idea inside every single application as an application specific "Recently opened" menu.
This works to a certain extent, but that way the user has to memorize his projects in terms of applications (, which violates the First Commandment: it renders the computer as a platform virtually useless, since the user has to use the text processing platform, to compose a letter or a paper or has to use the graphics editing platform to touch up photographs. While the underlying platform remains completely unaware of the projects the user is indulging in).
Funnily everything in the realm of digital machines is based on "ones" and "zeros" and to tap into the power of digital machines to process ones and zeros, abstractions have been devised, to make it easier for humans to handle ones and zeros. But sadly those abstractions stopped short of the abstractions that are actually needed to build user interfaces that don't get in the user's way.
In this regard current developments, of users "living on the internet" instead of on their desktops, might actually be beneficial. The notion of a file might soon be supplanted as bookmarks, text documents and photo collections are no longer file based but are accessed through specialized APIs. This current trend of vanishing files in user interfaces could be cleverly exploited by plasma, to adopt more usable user interface primitives, that help users get their work done.
Applications have been a really great part of user interfaces. In a command line environment a user could install new applications and thereby extend the functionality of the whole system. Imagine for example the sort(1) command, after a user installs it, he has, by means of a universal IPC mechanism, sorting functionality throughout his system.
With the advent of graphical user interfaces applications have been "stuffed" inside windows and despite the many advantages of this new approach, a lot of great features have been lost.
Today the system itself remains pretty useless, no matter how many applications are installed. It's applications instead, that offer functionality and usefulness to the user. But they don't add to the system as a whole. This increasingly becomes a problem as digitalization progresses. The feature set that even an inexperienced user uses to work, for example, with digital photographs is enormous and all this functionality has to be bundled with the application. This leads to functionality duplication among applications, which is a source of confusion for the user and system bloat.
But probably the most severe drawback is, that content becomes bound to applications and is not free for users to use on their systems. Of course a "JPEG" image can appear in many places across the system and in various applications: in a picture viewer, an image manipulation program or a desktop background chooser, but the interactions a user can have with this content are limited to specific applications. Although generally limitations are not a bad thing, since they could be applied strategically, the way current graphical user interfaces impose limitations on the way users interact with their content is a sign of fundamentally wrong design.
Related to how applications are used on today's desktops are surely windows. The basic role of windows in user interfaces is, to visually bundle functionality together to allow interaction with multitasking environments.
The problems associated with windows are probably the easiest to cope with, since they will dissolve almost on their own, when the whole concept of multitasking has to be rethought with multi-touch and especially multi-user input lurking just around the corner.
The best feature of windows is perhaps, that they make the common mantra: "Think outside the box!" almost tangible.
The usefulness of a system tray is also closely related to the problems we have in today's windowing environments.
The very rigid form of displaying information along with the possible interactions, that windows afford, is hardly suited to all information visualization needs on a users system. Some pieces of information are just of marginal importance, yet current windowing environments dictate either full representation or no representation at all.
Windows can of course be of different size, but their scalability applies not to the information displayed, but to the viewport, making the scale operation rather useless in many cases.
A system tray brings some limited form of semantic ZUI to the game. It essentially introduces a third form of representation. Besides a minimized application and an application running in a full window, the application can also be reduced to its system tray icon. There it can display various forms of status information or tooltips and also present a specialized set of interactions.
It is actually a promising idea, but it blatantly shows how its designers tried to just improve the current system, instead of searching for solutions that solve the real problem in terms of what the user is actually doing.
to be continued ...