# NeWS

NeWS, (Network extensible Window System), was een 'window-systeem' ontwikkeld door Sun Microsystems in de late jaren van 1980. De hoofdontwerper ervan was James Gosling, die tevens de taal Java ontwierp.
Met PostScript (PS) als basis, begon NeWS met het aanpassen van de PostScript-interpreter om te draaien op een manier van coöperatieve multitasking. In tegenstelling tot PostScript in een printer, zou NeWS een aantal PS-programma's tegelijkertijd op het scherm laten zien, zodat hiervoor een bepaalde vorm van multitasking voor nodig was. Ondanks dat beiden overeenkomend PostScript gebruikten, was de NeWS-verwerker niet gerelateerd aan Display PostScript.
NeWS voegde een compleet nieuw hiërarchisch systeem, gebaseerd op beeldpoorten die canvases genoemd werden, toe. Net zoals de beeldopbouw in de meeste GUI's, bevatte het een concept van drie geïntegreerde beelden waardoor gebeurtenissen passeerden. Dit was inclusief een compleet model voor deze gebeurtenissen, zoals timers en andere geautomatiseerde gebeurtenissen, invoerrijen voor apparaten, zoals muizen en toetsenborden, en andere functionaliteit die nodig was voor volledige interactie.
Maar de meest interessante toevoeging was een volledig objectgeoriënteerde overerfbare programmeerstijl. Dit sloot de behoefte voor een externe objectgeoriënteerde taal uit om een volledige applicatie te bouwen.
Omdat al deze toevoegingen uitbreidingen op PostScript waren, was het mogelijk om eenvoudig PostScript-code te schrijven dat een draaiend, direct op het scherm zichtbaar, interactief programma opleverde. Een van de algemene voorbeelden was een klok op het scherm, waarvoor twee pagina's code nodig waren.
NeWS bevatte ook verschillende bibliotheken van gebruikerselementen (widgets), geschreven in NeWs. Al het gedrag van de widgets liep via de NeWS-verwerker en hoefde slechts met een extern programma (of meer NeWS-code) te communiceren als het element erom vroeg.
Bijvoorbeeld: de afbeeldingsroutine van een wisselknop kan de status van de knop (ingedrukt of niet) opvragen en de afbeelding daarop aanpassen. De PostScriptcode van de knop kan tevens reageren op muisklikken door zijn toestand te veranderen van ingedrukt naar niet en andersom. Dit kan allemaal gebeuren in de vensterdienst zonder interactie van het client-programma, en alleen wanneer de muis wordt losgelaten, wordt er een gebeurtenis losgelaten ter afhandeling.
Dit was geavanceerder dan een "domme" X Window-Systeem-dienst, die slechts "muis hier ingedrukt-", "muis is nu hier"-, "muis nu losgelaten"-gebeurtenissen kan melden aan een client, die dan maar moet uitzoeken of de gebeurtenis in de knop is, de toestand omdraait en vervolgens de server opdraagt de nieuwe toestand af te beelden. Als het clientprogramma en de dienst voor het afbeelden (X-server) niet op dezelfde machine draaien, moeten al deze interacties over het netwerk, waardoor de terugkoppeling onnodig vertraagd wordt.
Het beste voorbeeld van een dergelijke bouwset is de TNT (The NeWS Toolkit), die door Sun werd uitgebracht in 1989. Sun leverde ook een afgeslankte bouwset bedoeld als voorbeeld en voor het maken van kleine programma's.
Verscheidene bedrijven brachten NeWS onder eigen licentie uit en pasten het aan voor divers gebruik, maar men kan niet spreken van een wijdverbreid gebruik. Silicon Graphics gebruikte het om hun oorspronkelijke GL-window-systeem te vervangen. Een van de weinige commerciële producten die succesvol op NeWS draaiden was de Openlook-versie van FrameMaker, ontwikkeld door Frame Technology Corp (die hoofdzakelijk werden gesponsord door Sun Microsystems en de NSA).
Het vrij verkrijgbare X11 was al behoorlijk populair, dus emuleerden de eerste versies van NeWS X11 door aanroepen te vertalen in NeWS PostScript. Snelheidsproblemen samen met de aanwezigheid van programma's die afhankelijk waren van de exacte pixel-resultaten van X11-aanroepen, dwongen Sun een X11+NeWS-hybride uit te brengen, genaamd Xnews, die een X-server parallel aan een verwerker draaide (wat de prestatie van de NeWS-verwerker liet kelderen en ook nog niet eens resulteerde in een goede X-server). Sun probeerde het aanvoelen en het uiterlijk van Openlook, met een bouwset gebaseerd op dezelfde Xt (X Intrinsics)-basis als Motif, na te bootsen, genaamd OLIT, zodat X-programma's er identiek uitzagen. Producten op NeWS verdwenen eenvoudigweg, nadat duidelijk was dat Openlook van Motif had verloren in populariteit, en nadat Adobe FrameMaker aangeschaft had stopte Sun met het ondersteunen van NeWS. Nu draaien de meeste UNIX-werkstations (inclusief die van Sun) het X Window System.

## Waarom faalde NeWS ?

Er bestaat geen twijfel over dat op vele manieren NeWS een superieur ontwerp had voor netwerken gebaseerd op thin clients, en de semantiek voor de grafische gebruikersinterface scheidde van de semantiek van het client-programma.
Mogelijke oorzaken het falen in de markt zijn de volgende redenen:
* NeWs moest gelicenceerd worden vanuit Sun, terwijl de broncode van het X Window System vrij verspreid werd via de MIT-licentie. Elke commerciële code die de NeWS-bibliotheken gebruikte, moest licentieverplichtingen (bedragen) afstaan aan Sun, Adobe en Xerox PARC.
* Het ontbrak NeWS aan een robuuste bibliotheek van herbruikbare code tot ver nadat het X Windows-Systeem de dominante paradigma was geworden. Deze fout werd blijkbaar niet herhaald in de programmeertaal Java. Zaken verergerend, verwarde de variëteit in de elementen die door Sun werd aangeboden eenvoudigweg de gebruikers.
* NeWS probeerde het programmeren in PostScript makkelijker te maken door toegevoegde objectgeoriënteerde uitbreidingen, maar dit verwarde juist de meeste softwareontwikkelaars. Diverse 'compilers' met een C-achtige syntaxis zoals pdb (PostScript Done Better) en c2ps waren beschikbaar, maar erg moeizaam in het hanteren en werden niet ondersteund door Sun.
* NeWS-applicaties schrijven vereiste het coderen van de client- en server-kantgedeelten van de applicaties in twee erg verschillende programmeertalen. De communicatie tussen de twee kanten coördineren werd soms als (te) moeilijk ervaren.
* De implementatie van de NeWS-window-server behaalde nooit dezelfde maat van robuustheid als concurrerende window-systemen. Deze situatie werd verergerd door de samensmelting NeWS/X11 in een verzadigde markt en doordat werkstations in die tijd massaal overstapten naar X11.
Display PostScript (DPS) gebruikte hetzelfde onderliggende beeld- en taal-model als NeWS, maar dan op een andere manier. In DPS werden de PostScript-opdrachten beperkt door datgene dat nodig was op zaken tekenen, alle andere handelingen (zoals het maken van een venster om in te tekenen) moesten geïmplementeerd worden door het gebruiker van andere systeem-interfaces. In vergelijking met NeWS, ontbrak het DPS aan interessante onderdelen zoals de mogelijkheid om een PostScript-pad te gebruiken om de vorm van een venster te omschrijven en verplichtte DPS tevens tot het gebruik van Xlib en heel wat erg inefficiënte code om er zeker van te zijn dat DPS en X het erover eens waren wat er te doen viel. Het betekende echter ook dat de meerderheid van het systeem en de applicaties gebruik maakten van gecompileerde code, waardoor het vele keren sneller werd en makkelijker te schrijven en te 'ontluizen' was. Het resultaat was een kleinere 'engine' dat hetzelfde eindresultaat gaf: een beeldopbouw — gebaseerd op PostScript — maar met hogere prestaties en ietwat meer 'natuurlijk' programmeren.

## Externe link

* (en) Oorsprong van NeWS