NeWS (for Network extensible Window System) was a windowing system developed by Sun Microsystems in the mid 1980s. Originally known as "SunDew", its primary authors were James Gosling and David S. H. Rosenthal. The NeWS interpreter was based on PostScript (as was the later Display PostScript, although the two projects were otherwise unrelated) extending it to allow interaction and multiple "contexts" to support windows. Like PostScript, NeWS could be used as a complete programming language, but unlike PostScript, NeWS could be used to make complete interactive programs with mouse support and a GUI.
NeWS started by implementing a PostScript interpreter that runs in a cooperative multitasking fashion, since, unlike PostScript in a printer, NeWS would be displaying a number of PostScript programs at the same time on one screen. It also added a complete view hierarchy system, based on viewports known as canvases. Like the view system in most GUIs, NeWS included the concept of a tree of embedded views along which events were passed. For instance, a mouse click would generate an event that would be passed to the object directly under the mouse pointer, say a button. If this object did not respond to the event, the object "under" the button would then receive the message, and so on. NeWS included a complete model for these events, including timers and other automatic events, input queues for devices such as mice and keyboards, and other functionality required for full interaction.
To support user interface widgets, NeWS expanded the original PostScript stack-based language into a complete object oriented (OO) programming style with inheritance. This eliminated the need for an external OO language to build a complete application.
Since all of these additions were implemented as extensions to PostScript, it was possible to write simple PostScript code that would result in a running, onscreen, interactive program. Two popular demonstration programs were an onscreen clock, which required about two pages of code, and a program which drew a pair of eyes that followed the cursor as it moved around the screen. The eyeball program was shown at SIGGRAPH in 1988, and was the inspiration for the later well-known X application xeyes.
NeWS included several libraries of user interface elements (widgets), themselves written in NeWS. These widgets ran all of their behaviour in the NeWS interpreter, and only required communications to an outside program (or more NeWS code) when the widget demanded it. For example, a toggle button's display routine can query the button's state (pressed or not) and change its display accordingly. The button's PostScript code can also react to mouse clicks by changing its state from "pressed" to "not pressed" and vice versa. All this can happen in the windowing server without interaction with the client program, and only when the mouse is released on the button will an event be sent off for handling.
Full article ▸