In recent years, applications with interactive user interfaces have become more difficult to develop because the expectations placed on such applications have grown dramatically. An application was once considered "user friendly" if it provided a row of mouse-selectable buttons instead of, or in addition to, a command-line interface. Today, applications are expected to conform to much higher standards of excellence. Good contemporary user interfaces provide features such as context-sensitive on-line help, support error recoverability, provide the ability to undo the application's most recent actions, and so on. Contemporary interfaces may involve hundreds of user interface widgets, and support multiple real-time views of various types of underlying information. With new advances in hardware, modern applications routinely support audio, integrated video, and even speech input. Applications are generally integrated with a desktop manager, provide drag-and-drop interfaces, and support inter-application communication and data exchange. Combining these pieces to create a complete application stretches the model of most current toolkits to their breaking points.
In addition to contending with advanced expectations from users, developers also have to deal with appearance and behavior guidelines. Most major vendors have begun to specify user interface guidelines that all applications are expected to follow. These guidelines generally take the form of a checklist of rules to which an application must conform. Often, no existing toolkit provides direct support for these rules, because the guidelines were developed independent of, and possibly later than, any available toolkits. For example, the OSF/Motif Style Guide forms the basis of many vendor's user interface standards.The guide specifies that applications should provide context-sensitive on-line help and specifies in some detail how help is supposed to work from a user's perspective. Yet the Motif toolkit provides only rudimentary support for such a system.
Developers who try to conform to the requirements of such style guides often find themselves facing an overwhelming task. Furthermore, asking each individual developer to implement these features from scratch defeats the very purpose of such guidelines. Programmers will inevitably introduce minor variations into each implementation, even if everyone agrees on the interpretation of the rules. Ideally, support for stylistic guidelines should be provided by a user interface toolkit as automatically as possible. Unfortunately, the piece-meal approach supported by most current toolkits cannot adequately address this need. Many style issues have broad implications on the architecture and design of applications that individual widgets cannot address.
___________________________________________________________________