NeWS ( Network extensible Window System ) is a discontinued 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 .
55-431: NeWS started by implementing a PostScript interpreter running 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, based on viewports known as canvases , and a synchronous event distribution system, supporting events , interests , threads and monitors . Like
110-471: A computer somewhere on a network (such as the Internet) can display its user interface on an X server running on some other computer on the network. The X server is typically the provider of graphics resources and keyboard/mouse events to X clients , meaning that the X server is usually running on the computer in front of a human user, while the X client applications run anywhere on the network and communicate with
165-497: A desktop environment, which, aside from the window manager, includes various applications using a consistent user interface. Popular desktop environments include GNOME , KDE Plasma and Xfce . The UNIX 98 standard environment is the Common Desktop Environment (CDE). The freedesktop.org initiative addresses interoperability between desktops and the components needed for a competitive X desktop. The X.Org implementation
220-717: A functional form of the "network transparency" feature of X, via network transmissibility of graphical services, include: Several bitmap display systems preceded X. From Xerox came the Alto (1973) and the Star (1981). From Apollo Computer came Display Manager (1981). From Apple came the Lisa (1983) and the Macintosh (1984). The Unix world had the Andrew Project (1982) and Rob Pike 's Blit terminal (1982). Carnegie Mellon University produced
275-473: A native windowing system hosts X in addition, the X system can either use its own normal desktop in a separate host window or it can run rootless , meaning the X desktop is hidden and the host windowing environment manages the geometry and appearance of the hosted X windows within the host screen. An X terminal is a thin client that only runs an X server. This architecture became popular for building inexpensive terminal parks for many users to simultaneously use
330-595: A network protocol supporting terminal and graphics windows, the server maintaining display lists. The email in which X was introduced to the Project Athena community at MIT in June 1984 The original idea of X emerged at MIT in 1984 as a collaboration between Jim Gettys (of Project Athena ) and Bob Scheifler (of the MIT Laboratory for Computer Science ). Scheifler needed a usable display environment for debugging
385-443: A non-async function, but only an async function, which is a kind of coroutine . Cooperative multitasking allows much simpler implementation of applications because their execution is never unexpectedly interrupted by the process scheduler; for example, various functions inside the application do not need to be reentrant . As a cooperatively multitasked system relies on each process regularly giving up time to other processes on
440-419: A port of X to 386-compatible PCs and, by the end of the 1990s, had become the greatest source of technical innovation in X and the de facto standard of X development. Since 2004, however, the X.Org Server, a fork of XFree86, has become predominant. While it is common to associate X with Unix, X servers also exist natively within other graphical environments. VMS Software Inc.'s OpenVMS operating system includes
495-722: A protocol that could both run local applications and call on remote resources. In mid-1983 an initial port of W to Unix ran at one-fifth of its speed under V; in May 1984, Scheifler replaced the synchronous protocol of W with an asynchronous protocol and the display lists with immediate mode graphics to make X version 1. X became the first windowing system environment to offer true hardware independence and vendor independence. Scheifler, Gettys and Ron Newman set to work and X progressed rapidly. They released Version 6 in January 1985. DEC, then preparing to release its first Ultrix workstation, judged X
550-784: A remote machine, the user may do the following: The remote X client application will then make a connection to the user's local X server, providing display and input to the user. Alternatively, the local machine may run a small program that connects to the remote machine and starts the client application. Practical examples of remote clients include: X primarily defines protocol and graphics primitives – it deliberately contains no specification for application user-interface design, such as button, menu, or window title-bar styles. Instead, application software – such as window managers, GUI widget toolkits and desktop environments, or application-specific graphical user interfaces – define and provide such details. As
605-533: A remote-access application called Alto Terminal, that displayed overlapping windows on the Xerox Alto, and made remote hosts (typically DEC VAX systems running Unix) responsible for handling window-exposure events and refreshing window contents as necessary. X derives its name as a successor to a pre-1983 window system called W (the letter preceding X in the English alphabet ). W ran under the V operating system . W used
SECTION 10
#1732845421149660-560: A result, there is no typical X interface and several different desktop environments have become popular among users. A window manager controls the placement and appearance of application windows. This may result in desktop interfaces reminiscent of those of Microsoft Windows or of the Apple Macintosh (examples include GNOME 2, KDE Plasma, Xfce) or have radically different controls (such as a tiling window manager, like wmii or Ratpoison ). Some interfaces such as Sugar or ChromeOS eschew
715-457: A specification for client interoperability, has a reputation for being difficult to implement correctly. Further standards efforts such as Motif and CDE did not alleviate problems. This has frustrated users and programmers. Graphics programmers now generally address consistency of application look and feel and communication by coding to a specific desktop environment or to a specific widget toolkit, which also avoids having to deal directly with
770-468: A version of X with Common Desktop Environment (CDE), known as DECwindows, as its standard desktop environment. Apple originally ported X to macOS in the form of X11.app, but that has been deprecated in favor of the XQuartz implementation. Third-party servers under Apple's older operating systems in the 1990s, System 7, and Mac OS 8 and 9, included Apple's MacX and White Pine Software's eXodus. Microsoft Windows
825-414: Is a complete, albeit simple, display and interface solution which delivers a standard toolkit and protocol stack for building graphical user interfaces on most Unix-like operating systems and OpenVMS , and has been ported to many other contemporary general purpose operating systems . X provides the basic framework , or primitives, for building such GUI environments: drawing and moving windows on
880-406: Is a network-oriented operating system, used cooperative multitasking up to NetWare 6.5. Cooperative multitasking is still used on RISC OS systems. Cooperative multitasking is similar to async/await in languages, such as JavaScript or Python , that feature a single-threaded event-loop in their runtime. This contrasts with cooperative multitasking in that await cannot be invoked from
935-440: Is a style of computer multitasking in which the operating system never initiates a context switch from a running process to another process. Instead, in order to run multiple applications concurrently, processes voluntarily yield control periodically or when idle or logically blocked . This type of multitasking is called cooperative because all programs must cooperate for the scheduling scheme to work. In this scheme,
990-407: Is generally not possible. However, approaches like Virtual Network Computing (VNC), NX and Xpra allow a virtual session to be reached from different X servers (in a manner similar to GNU Screen in relation to terminals), and other applications and toolkits provide related facilities. Workarounds like x11vnc ( VNC :0 viewers ), Xpra's shadow mode and NX's nxagent shadow mode also exist to make
1045-447: Is in the button, switch the state, and finally instruct the server to display the new state. If client and server are not on the same machine, these interactions must travel over the network, which results in a delay in responding . The best example of such a library is TNT ( The NeWS Toolkit ) which Sun released in 1989. Sun also shipped an earlier "Lite" toolkit intended for example purposes and making small programs. Although adoption
1100-521: Is no accessibility standard or accessibility guidelines for X11. Within the X11 standards process there is no working group on accessibility; however, accessibility needs are being addressed by software projects to provide these features on top of X. The Orca project adds accessibility support to the X Window System, including implementing an API ( AT-SPI ). This is coupled with GNOME's ATK to allow for accessibility features to be implemented in X programs using
1155-492: Is not shipped with support for X, but many third-party implementations exist, as free and open source software such as Cygwin/X , and proprietary products such as Exceed, MKS X/Server, Reflection X, X-Win32 and Xming . There are also Java implementations of X servers. WeirdX runs on any platform supporting Swing 1.1, and will run as an applet within most browsers. The Android X Server is an open source Java implementation that runs on Android devices. When an operating system with
SECTION 20
#17328454211491210-419: Is that they are not capable of any input or output other than the keyboard, mouse, and display. All relevant data is assumed to exist solely on the remote server, and the X terminal user has no methods available to save or load data from a local peripheral device. Dedicated (hardware) X terminals have fallen out of use; a PC or modern thin client with an X server typically provides the same functionality at
1265-414: Is the canonical implementation of X. Owing to liberal licensing, a number of variations, both free and open source and proprietary, have appeared. Commercial Unix vendors have tended to take the reference implementation and adapt it for their hardware, usually customizing it and adding proprietary extensions. Until 2004, XFree86 provided the most common X variant on free Unix-like systems. XFree86 started as
1320-531: The JES2 subsystem. Cooperative multitasking was the primary scheduling scheme for 16-bit applications employed by Microsoft Windows before Windows 95 and Windows NT , and by the classic Mac OS . Windows 9x used non- preemptive multitasking for 16-bit legacy applications, and the PowerPC Versions of Mac OS X prior to Leopard used it for classic applications. NetWare , which
1375-576: The display and interacting with a mouse, keyboard or touchscreen. X does not mandate the user interface ; individual client programs handle this. Programs may use X's graphical abilities with no user interface. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces. Unlike most earlier display protocols, X was specifically designed to be used over network connections rather than on an integral or attached display device. X features network transparency , which means an X program running on
1430-458: The process scheduler of an operating system is known as a cooperative scheduler whose role is limited to starting the processes and letting them return control back to it voluntarily. This is related to the asynchronous programming approach. Although it is rarely used as the primary scheduling mechanism in modern operating systems, it is widely used in memory-constrained embedded systems and also, in specific applications such as CICS or
1485-558: The Argus system. Project Athena (a joint project between DEC , MIT and IBM to provide easy access to computing resources for all students) needed a platform-independent graphics system to link together its heterogeneous multiple-vendor systems; the window system then under development in Carnegie Mellon University 's Andrew Project did not make licenses available, and no alternatives existed. The project solved this by creating
1540-542: The GNOME/GTK APIs. KDE provides a different set of accessibility software, including a text-to-speech converter and a screen magnifier. The other major desktops (LXDE, Xfce and Enlightenment) attempt to be compatible with ATK. An X client cannot generally be detached from one server and reattached to another unless its code specifically provides for it ( Emacs is one of the few common programs with this ability). As such, moving an entire session from one X server to another
1595-698: The ICCCM. X also lacks native support for user-defined stored procedures on the X server, in the manner of NeWS – there is no Turing-complete scripting facility. Various desktop environments may thus offer their own (usually mutually incompatible) facilities. Systems built upon X may have accessibility issues that make utilization of a computer difficult for disabled users, including right click , double click , middle click , mouse-over , and focus stealing . Some X11 clients deal with accessibility issues better than others, so persons with accessibility problems are not locked out of using X11. However, there
1650-454: 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
1705-714: The OPEN LOOK user interface specification in several toolkits: The NeWS Toolkit (TNT) was an OPEN LOOK toolkit written in PostScript that ran in the NeWS server. OLIT was built on the same Xt (X Intrinsics) base as Motif , and XView used the same APIs as Sun's earlier SunView window system. After it was clear that OPEN LOOK had lost out to Motif in popularity, and after Adobe acquired FrameMaker , Sun stopped supporting NeWS. Products based on NeWS stopped being developed. Cooperative multitasking Cooperative multitasking , also known as non-preemptive multitasking ,
NeWS - Misplaced Pages Continue
1760-496: The X project, with the current reference implementation, X.Org Server , available as free and open-source software under the MIT License and similar permissive licenses. X is an architecture-independent system for remote graphical user interfaces and input device capabilities. Each person using a networked terminal has the ability to interact with the display with any type of user input device. In its standard distribution it
1815-578: The X server by a remote X client program, and each then rendered by sending a single glCallList(which) across the network. X provides no native support for audio; several projects exist to fill this niche, some also providing transparent network support. X uses a client–server model: an X server communicates with various client programs. The server accepts requests for graphical output (windows) and sends back user input (from keyboard, mouse, or touchscreen). The server may function as: This client–server terminology – the user's terminal being
1870-563: The application's control. The potential for system hang can be alleviated by using a watchdog timer , often implemented in hardware; this typically invokes a hardware reset . X Window System The X Window System ( X11 , or simply X ; stylized 𝕏 ) is a windowing system for bitmap displays, common on Unix-like operating systems. X originated as part of Project Athena at Massachusetts Institute of Technology (MIT) in 1984. The X protocol has been at version 11 (hence "X11") since September 1987. The X.Org Foundation leads
1925-453: The bandwidth of a 100 Mbit/s network for a single client. In contrast, modern versions of X generally have extensions such as Mesa allowing local display of a local program's graphics to be optimized to bypass the network model and directly control the video card, for use of full-screen video, rendered 3D applications, and other such applications. X's design requires the clients and server to operate separately, and device independence and
1980-418: The calls into NeWS PostScript. Speed problems plus the existence of programs that relied on the exact pixel results of X10 calls, and the obsolescence of X10, forced Sun to release an X11/NeWS hybrid called Xnews which ran an X11 server in parallel with the PostScript interpreter. This seriously degraded the NeWS interpreter performance and was not considered a very good X11 server either. Sun also implemented
2035-547: The client and server may run on the same machine or on different ones, possibly with different architectures and operating systems. A client and server can even communicate securely over the Internet by tunneling the connection over an encrypted network session. An X client itself may emulate an X server by providing display services to other clients. This is known as "X nesting". Open-source clients such as Xnest and Xephyr support such X nesting. To run an X client application on
2090-426: The current X-server screen available. This ability allows the user interface (mouse, keyboard, monitor) of a running application to be switched from one location to another without stopping and restarting the application. Network traffic between an X server and remote X clients is not encrypted by default. An attacker with a packet sniffer can intercept it, making it possible to view anything displayed to or sent from
2145-454: The desktop metaphor altogether, simplifying their interfaces for specialized applications. Window managers range in sophistication and complexity from the bare-bones ( e.g. , twm, the basic window manager supplied with X, or evilwm, an extremely light window manager) to the more comprehensive desktop environments such as Enlightenment and even to application-specific window managers for vertical markets such as point-of-sale. Many users use X with
2200-568: The local X server to both local and remotely hosted X client programs who need to share the user's graphics and input devices to communicate with the user. X's network protocol is based on X command primitives. This approach allows both 2D and (through extensions like GLX) 3D operations by an X client application which might be running on a different computer to still be fully accelerated on the X server's display. For example, in classic OpenGL (before version 3.0), display lists containing large numbers of objects could be constructed and stored entirely in
2255-745: The same host. Additionally shared memory (via the MIT-SHM extension) can be employed for faster client–server communication. However, the programmer must still explicitly activate and use the shared memory extension. It is also necessary to provide fallback paths in order to stay compatible with older implementations, and in order to communicate with non-local X servers. Some people have attempted writing alternatives to and replacements for X. Historical alternatives include Sun 's NeWS and NeXT 's Display PostScript , both PostScript -based systems supporting user-definable display-side procedures, which X lacked. Current alternatives include: Additional ways to achieve
NeWS - Misplaced Pages Continue
2310-514: The same large computer server to execute application programs as clients of each user's X terminal. This use is very much aligned with the original intention of the MIT project. X terminals explore the network (the local broadcast domain ) using the X Display Manager Control Protocol to generate a list of available hosts that are allowed as clients. One of the client hosts should run an X display manager . A limitation of X terminals and most thin clients
2365-476: The same, or lower, cost. The Unix-Haters Handbook (1994) devoted a full chapter to the problems of X. Why X Is Not Our Ideal Window System (1990) by Gajewska, Manasse and McCormack detailed problems in the protocol with recommendations for improvement. The lack of design guidelines in X has resulted in several vastly different interfaces, and in applications that have not always worked well together. The Inter-Client Communication Conventions Manual (ICCCM),
2420-487: The separation of client and server incur overhead. Most of the overhead comes from network round-trip delay time between client and server ( latency ) rather than from the protocol itself: the best solutions to performance issues depend on efficient application design. A common criticism of X is that its network features result in excessive complexity and decreased performance if only used locally. Modern X implementations use Unix domain sockets for efficient connections on
2475-428: The server and the applications being the clients – often confuses new X users, because the terms appear reversed. But X takes the perspective of the application, rather than that of the end-user: X provides display and I/O services to applications, so it is a server; applications use these services, thus they are clients. The communication protocol between server and client operates network-transparently:
2530-599: The system, one poorly designed program can consume all of the CPU time for itself, either by performing extensive calculations or by busy waiting ; both would cause the whole system to hang . In a server environment, this is a hazard that is often considered to make the entire environment unacceptably fragile, though, as noted above, cooperative multitasking has been used frequently in server environments including NetWare and CICS. In contrast, preemptive multitasking interrupts applications and gives control to other processes outside
2585-471: The user's computer to request the rendering of graphics content and receive events from input devices including keyboards and mice. The fact that the term "server" is applied to the software in front of the user is often surprising to users accustomed to their programs being clients to services on remote computers. Here, rather than a remote database being the resource for a local app, the user's graphic display and input devices become resources made available by
2640-499: The user's screen. The most common way to encrypt X traffic is to establish a Secure Shell (SSH) tunnel for communication. Like all thin clients , when using X across a network, bandwidth limitations can impede the use of bitmap -intensive applications that require rapidly updating large portions of the screen with low latency, such as 3D animation or photo editing. Even a relatively small uncompressed 640×480×24 bit 30 fps video stream (~211 Mbit/s) can easily outstrip
2695-600: 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. The input handling system
2750-400: 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. This was more sophisticated than the X Window System server model, which can only report "mouse button was clicked down here", "mouse is now here", "mouse button was released here" events to a client, which then has to figure out if the event
2805-430: Was an interactive application design system. Don Hopkins developed a NeWS version of SimCity that was built with HyperLook. A commercial drawing program, Altsys Virtuoso, was produced for NeWS; it was a port of FreeHand with additional functionality that took advantage of the PostScript environment. Unfortunately Sun announced the end of support for NeWS just as Virtuoso became ready to ship. Compared to X , NeWS
SECTION 50
#17328454211492860-461: Was designed to provide strong event synchronization guarantees that were not possible with asynchronous protocols like X. 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
2915-499: Was never widespread, several companies and universities licensed NeWS and adapted it for various uses, creating both commercial and non-commercial ports. The OPEN LOOK version of the FrameMaker desktop publishing program, developed by Frame Technology Corp. with funding mainly from Sun Microsystems and NSA , was one of the few commercial products that ran on NeWS. HyperLook, developed by Arthur van Hoff at The Turing Institute ,
2970-571: 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 behavior in
3025-495: Was vastly more powerful, but also slower (especially for local connections). The C API was very low level and difficult to use, so most NeWS programs tended to be entirely written in PostScript. Another factor in the popularity was that Sun charged a fee to license the NeWS source code, while the MIT X11 code was free of cost. The first versions of NeWS emulated the X10 protocol by translating
#148851