What's Wrong With Existing User Interfaces and How We Might Improve Upon Them

(Last modified Saturday, 2/18/95 @ 4:00PM PST)

What's Wrong With Today's OSs (from a user standpoint)

Today's computing systems are based on a number of loosely-connected ideas: hardware, an operating system kernel, applications and users. This is bad for a number of reasons. (Is it?)

All this seperating is of no benefit to the users. Knowing that he is interacting with the application layer of the system does nothing to benefit the user's productivity or happiness with the system.

This structure also generally seperates programmers--those who create application, from users--who use the applications. This philosophy is bad because using a computer is really programming it--telling it what to do.

Tunes should be a computing environment combining the users with the applications, kernel and hardware, to create a setting that can be used in the most productive and interesting way.

What's Wrong With Today's UIs

The user perspective

Today's user interfaces are inconsistant. A command run in one application may have no relation to the same command in a different app. Even the way to run commands between apps can vary widely (ie X windows).

Users are dependent on developers to provide decent interfaces for their applications. There is nothing they can do to make an ugly program look better.

The whole concept of applications and linear flow of control, on which many OSs and applications are based, goes against how the human brain works. These concepts force a good user interface to use abstraction, to hide the "real" system from the users. If the underlying OS had been designed well from the start, you could present them with what was really there.

Concentrate on how users work with the system, not how the system can work with the user (Ask not what you can do for your operating system, but what your operating system can do for you.)

The programmer perspective

Current UIs are a pain to program for. Not only must the devloper concentrate on program logic, but he/she must also provide painstaking details to the interface. In a windowing system, for example, the programming cannot simply ask for the user to select one item from a list, but must instead display a window, draw each button seperately, and track their individual pressing.

Many OS/UI vendors, such as Apple Computer, provide rigerous standards for an application's look and feel to conform to, but provide little or no software assistance to developers for implimenting such standards.

Due to the non-OO nature of most UIs, a helpful subroutene developed in one application may require changes in the logic of another program, should this other program's developer wish to incorporate it.

The Tunes Way

The first step to remedy some of the current problems with how users percieve computers is to seperate interface from operating system. That is every component in the system--seen from both the user and programmer mindsets--should be replacable. This, done through object-orientation, will make replacing individual, outdated pieces of the OS as painless as possible.

To make different copies of Tunes compatible with one another, there will exist a set of standards that all Tunes systems should support in some way or another. Such standards should allow for IO of a number of different data types.

These standards should concentrate on specifying what should be done, and not how to do it. Instead of specifying the interface with which a user can input a certain data type, a program would ask the interface for a certain type, and it would input it in a user-selectable way.

By having a standard, simple API, it would not be difficult to allow users to design their own applications, or front ends that combine and extend their existing applications. A simple scripting language should exist for such purposes, that takes much of the learning curve out of programming.