original in en Georges Tarbouriech
en to nl Christ Verschuuren
Georges is al lange tijd Unix gebruiker (commercieel en vrij gebruik). Als fan van NeXT, is hij verzot op projecten die het uiterlijk en de stijl van dit geweldige OS gebruiken.
Meer dan 10 jaar geleden werd een ongelofelijke machine met een nog ongelofelijker OS op de markt gebracht. Het heette NeXT en de naam van het OS was NeXTStep. Iets dergelijks hadden we nog nooit gezien; het was een goed ontworpen machine, met een adembenemend scherm. Het OS was aanvankelijk gebaseerd op BSD 4.2 en enige tijd later op 4.3, met een erg compacte mach kernel. Tesamen hiermee verscheen de eerste grafische en object georiënteerde ontwikkeltool : Interface Builder (Met dank aan Jean-Marie Hullot en Bertrand Serlet voor dit ongelofelijke hulpmiddel). Commercieel gezien was de machine geen succes. NeXT besloot toen het raamwerk over te zetten naar andere besturingssytemen, zoals Sun, bijvoorbeeld. Deze API werd OpenStep genoemd. Van daar af begon GNU een groot project, GNUstep, http://www.gnustep.org, om een vrij te gebruiken OpenStep implementatie te bouwen. Dit artikel wil deze enorme klus onder de aandacht brengen, hoewel het nog niet is afgerond.
Voor GNUstep, heb je nog ander gewelding vrij product nodig: Window
Maker. Het is een window manager a la NeXT. Als je het nog niet kent,
kun je
hier een kijkje nemen. Als ik dit artikel schrijf is de laatste
versie 0.64.0.
Deze window manager is onderdeel van het GNUstep project en je kunt het
verkrijgen op http://www.windowmaker.org.
En ik wil hieraan toevoegen dat Window Maker op bijna elke denkbaar Unix
platform draait, zowel commerciële als vrije versies. Voor zover
het GNUstep betreft zijn er slechts minimale verschillen. Het draait op
de meeste Linux smaken, NetBSD, FreeBSD, OpenBSD, de stabiliteit hangt
wel af van het OS waarop je het draait. Voor wat betreft
commerciële Unixes, draait het min of meer stabiel op Solaris,
Irix... .
Als je scherm op NeXTStep lijkt, kun je naar de GNUstep web-site gaan om
alles wat je nodig hebt op te halen.
En wat heb je dan allemaal nodig? Uiteraard een
object-georiënteerde C compiler (weet je nog, het is een object
georiënteerd raamwerk). gcc 2.8 en hoger is voldoende. libobjc
wordt aanbevolgen. Naast de compileertools, heb je GNUstep zaken nodig :
dat wil zeggen de base library, op zijn minst, de gui library, de X11
backend (xgps of xdps)... enzovoorts. Er is veel om te downloaden, wat
allemaal is aan jou : gebruik de lijst om je keuze te maken. Je kunt bij
voorbeeld Gorm krijgen, wat de implementatie van Interface Builder is
(alleen als CVS), en natuurelijk de voorbeelden van gebruikers
programma's.
Je hoeft alleen te compileren wat je hebt gedownload! Echt, lees de
README en de INSTALL documenten maar. Er is ook een GNUstep HOWTO, die
aanbevelingswaardig is.
Na het compileren bestaat het resterende werk voornamelijk uit
omgevingsvariabelen en instellen van op te starten programma's (de
kernel bijvoorbeeld, genaamd gdnc).
Zoals eerder vermeld zijn er twee verschillende backends : een is X en
de andere is dps (Display PostScript free implementatie). Deze laatste
geeft veel betere resultaten, maar is minder ver doorontwikkeld dan de
X backend.
Controleer de paden, naar de instellingen van je OS, als je de
omgevingsvariabelen gaat aangeven. Tot slot moet je de
GNUSTEP_SYSTEM_ROOT variabele en het pad naar de verschillende scripts
en programma's aangeven.
Als je hier mee klaar bent kun je met je GNUstep gaan 'spelen'.
Er zijn veel voorbeeldprogramma's beschikbaar op de GNUstep website, ga
naar de User apps sectie of naar de download sectie. Dit is de beste
manier om bekend te worden met GNUstep als je geen kennis hebt van
NeXTStep of OpenStep. De meeste zijn werkende voorbeelden en laten je
kennis maken met de filosofie achter het raamwerk. Bestudering van de
broncode leert je veel over Objective C. Voor iemand die bekend is met
C, is Objective C eenvoudig te leren, en in ieder geval veel eenvoudiger
dan C++ (dat is tenminste mijn mening).
Onder de voorbeelden bevindt zich een erg mooie, namelijk het font
panel. Het ziet er echt uit als het origineel. Overigens in dit artikel
nemen we schermafdrukken van het programma onder GNUstep en NeXTStep op,
zodat je ze kunt vergelijken. Hier is het eerste voorbeeld: het font
panel onder GNUstep en onder NeXTStep.
Een ander interessant voorbeeld is de Edit app. Het functioneert nog
niet helemaal naar wens, maar het is een mooi stukje werk dat dichtbij
het origineel komt.
Een van de meest leerzame voorbeelden is GSTest. Draaien van GSTest laat
je alles begrijpen van vensters, knoppen, schuifbalken, etc... Het omvat
alles! De broncode van dit programma leert je meer dan een boek.
Dat betekent uiteraard niet dat de andere voorbeelden niet van belang
zouden zijn .... dat zijn ze wel!
De schrijver van veel van deze apps, Nicola Pero, heeft goed werk
verricht.
Nog een goede applicatie van dezelfde Nicola, is Finger. Dat is een gui
voor finger (zou je het hebben geraden?), ping en traceroute. Hieronder
is het te zien :
Ik zou nog veel meer programma's kunnen noemen, maar ik wil de pret van
het zoeken overlaten aan de lezer.
Een echte revolutie van NeXTStep was Interface Builder. Zoals de
naam al zegt, is het een hulpmiddel om een grafische interface (gui) te
bouwen voor je applicatie. Maar, wat een hulpmiddel! Bedenk wel, dat het
aan het einde van de jaren 80 was: gewoonweg ongelofelijk!
En waarom was het zo'n revolutie : omdat je een venster kon bouwen in
minder dan 5 minuten met alle toeters en bellen erop ! Dat wil zeggen,
en venster met een menu, met knoppen, met schuifbalken, enz, werd
gemaakt door objecten vanuit een palet naar het venster te slepen. Van
daaruit was het mogelijk om deze objecten te verbinden met andere
vensters, menu's en wat al niet meer. Er werd een minimale broncode
gegenereerd die je alleen hoefde aan te vullen. Vanzelfsprekend, konden
deze objecten als ze eenmaal waren aangemaakt, elders weer gebruikt
worden.
Onvoorstelbaar in die tijd!
Sindsdien hebben vele grote software ontwikkelaars geprobeerd hetzelfde
te doen : naar mijn bescheiden mening hebben ze het niveau van het
origineel nooit bereikt..
En nu kun je zo'n hulpmiddel helemaal gratis gebruiken! Het heet Gorm
(GNUstep Graphics Object Relationship Modeler) en de auteur is Richard
Frith-Macdonald.
Gorm is alleen beschikbaar als CVS op de GNUstep website. Ten tijde van
het schrijven van dit artikel is het versienummer nog maar 0.1,
desalniettemin werkt het, zelfs nu er nog veel functionaliteit
ontbreekt. Om de Interface Builder look en feel te ontdekken, is Gorm
het juiste hulpmiddel.
Hier is een erg eenvoudig (en simpel) voorbeeld, opnieuw met het
equivalent uit NeXTStep.
Zoals hiervoor reeds opgemerkt, worden dit hulpmiddel en zijn voorbeeld
Interface Builder gebruikt om het grafische deel van een applicatie te
maken. Uiteraard is dat nog niet genoeg om de applicatie te laten
werken. Je zult de gegenereerde broncode moeten voltooien en de
verschillende bronnen moeten managen zoals in elk applicatie project.
Tot slot, zul je je werk moeten compileren.
En dan hebben we hier het tweede belangrijke hulpmiddel, genaamd Project
Builder onder NeXTStep en ProjectCenter onder GNUstep. ProjectCenter is
het werk van Philippe C.D Robert en het versienummer is 0.2. Ook hier,
dit hulpmiddel werkt ondanks het lage versienummer. Je kunt je project
managen zoals je dat zou doen met Project Builder onder NeXTStep.
Uiteraard moet er aan dit programma ook nog veel werk verricht worden,
maar het is de moeite van het downloaden waard.
En zo ziet het er uit, vergeleken met zijn "vader".
Het gebruik van deze hulpmiddelen is eenvoudig als je bekend bent met
NeXTStep of OpenStep. Als je ze nog nooit gebruikt hebt, zul je de
filosofie er achter moeten ontdekken. Er is veel documentatie
beschikbaar en het is aan te bevelen deze te lezen (om niet te zeggen
verplicht). Maar als je eenmaal doorhebt hoe het werkt... kun je niet
meer zonder! Je bent gewaarschuwd.
We moeten ook nog een aantal andere geweldige zaken noemen, zoals
GWorkspace of GSBench. De GNU 3DKit is nog zo'n wonderbaarlijk stukje
software. Het is een API ontworpen om basis van OpenGL te werken. Je
kunt het vinden bij http://www.nice.ch/~phip/softcorner.html tesamen met vele andere
applicaties.
De hulpmiddelen die we hier aanhalen zijn ontworpen om applicaties
over te zetten van OpenStep naar GNUstep. Maar, in feite kunnen ze nog
meer, omdat je er ook Mac OS X programma's mee over kunt zetten. Dat is
een belangrijk punt : later meer hierover!
Allereerst, is er het hulpmiddel OpenStep2GNUConverter, waarmee je een
PBProject (Project Builder) naar een GNUstep Makefile over kunt zetten.
Dat wil zeggen dat je een OpenStep project op je Linux box kunt
compileren (bijvoorbeeld).
Voor het compileren van het project zelf, heb je nog het hulpmiddel
nfmake nodig.
Het hulpmiddel nib2gmodel maakt het mogelijk om een nib bestand
(aangemaakt met Interface Builder) om te zetten naar zijn evenknie onder
GNUstep, genaamd gmodel.
Ten slotte kun je gstep-db ophalen, dat is een database library en zelfs
nog meer, namelijk een Oracle adaptor.
NeXTStep en OpenStep voorzien je van adaptors voor Sybase en Oracle, dat
zijn interfaces om queries uit te voeren op de databases van deze
fabrikanten. GNUstep biedt je hetzelfde gratis (onder NeXTStep of
OpenStep, moest je de developer kit aanschaffen die vrij kostbaar is,
maar dan kreef je de Enterprise Object Foundation er gratis bij - dit
zijn veel voorbeelden).
Natuurlijk kunnen deze hulpmiddelen gedownload worden van de GNUstep
website.
Helaas kon ik niet alles testen, omdat ik 'slechts' een oud NeXT
werkstation heb en ik (ongeduldig) wacht op een nieuwe Mac OS X op mijn
werk. Maar ik heb al 15 jaar vertrouwen in GNU en dat zal vandaag niet
veranderen, daarom durf ik gerust te zeggen: het zal vast en zeker
werken. En binnen een aantal maanden zal ik dit alles getest hebben...
ALs je belangstelling hebt voor ontwikkelen met dit geweldige raamwerk,
is er veel documentatie beschikbaar, zoals ik al heb opgemerkt. Het
gebruiksgemak is niet legendarisch, je hebt enige kennis nodig over de
werkwijze.
Op de GNUstep website, vindt je veel bruikbare links. Sommige daarvan
verdienen echter bijzondere aandacht.
Op de pagina
http://www.gnustep.org/resources/documentation.html vindt je de
algemene GNUstep documentatie. Deze bestaan onder ander uit een
Objective C handleiding, installatie instructies, FAQ...
Er is ook documentatie over de GNUstep library.
En zelfs meer, je vindt er tutorials. Die van Nicola is het waard door
te nemen. Breng hiervoor een bezoek aan
http://www.gnustep.it/nicola/Tutorials
Een andere plek die een bezoek waard is is de resources sectie : hier
zijn vele links artikelen, ontwikkelsites...
De http://www.gnustep.net/ website
is ook interessant.
Dat wil zeggen, hier kun je alles vinden dan nodig is om te beginnen met
GNUstep.
Het bijzondere verhaal van NeXT gaat verder, laten we hopen met succes
deze keer, onder de naam Mac OS X. Wat een geweldige ontwikkeling ! Wat
denk je van een OS dat 10 jaar geleden werd ontwikkeld en nu een nieuwe
carriere begint? Het was zijn tijd ver vooruit, vindt je niet?
Maar wat betekent dat voor ons? Wel, waarschijnlijk een groot aantal
mooie programma's omdat alle bestaande eenvoudig opnieuw gecompileerd
kunnen worden, en vergeet het niet, Mac OS X en NeXTStep zijn Unix
systemen. Dat betekent heel veel programma's die mogelijk beschikbaar
komen, ook voor de vrije Unix versies. Dienovereenkomstig, is GNUstep
het raamwerk dat je nodig hebt...
Laten we zeggen dat een (soort van) droom is: ten slotte, we zouden de
mogelijkheid kunnen krijgen om de software te kiezen die je wil
gebruiken. Helaas aan alles zit een zonnige en een schaduwzijde.
Laten we een voorbeeld nemen: vandaag de dag, afhankelijk van het OS dat
je gebruikt, heb je niet veel keuze betreffende web browsers. Het is of
Netscrape (en de afgeleiden daarvan) of Exploder, en dat is zoveel als
twee munitiefabrieken en een brandende lucifer, namelijk
veiligheidslekken, en dergelijke. Mac OS X levert je OmniWeb: dit is
echt geweldige web browser. Gebruik hiervan onder NeXTStep is een
plezier, zelfs al is het een relatief oude versie.
Het is zo'n soort browser waar je vandaag de dag kunt dromen als je Unix
of M$ zaken gebruikt. De enige "thin" web browsers vindt je tegenwoordig
bij de zogenaamde alternatieve Operating Systems: zoals NetPositive
onder BeOS of AWeb, bijvoorbeeld, onder AmigaOS. Natuurlijk, Opera
lijkt aantrekkelijk, maar tot op heden heeft het mij nog niet overtuigd
(dat is een persoonlijke mening). Wat ik hier bedoel is dat Mac OS X en
dus ook GNUstep ons voorzien van "nieuwe" tools, vaak beter dan degene
die we dagelijks gebruiken. Tools waarvan we tien jaar geleden ook al
voordeel hadden ... met NEXTStep!
Uiteraard, geldt dit ook voor andere soorten software, niet alleen web
browsers.
Een bezoek aan http://www.omnigroup.com/ toont je een stapel beschikbare tools.
Het grootste verschil tussen GNUstep en Mac OS X wordt veroorzaakt
doordat X-Window wordt gebruikt voor GNUstep en Mac OS X hier geen
gebruik van maakt. Dat was al een klacht onder NeXTStep. En daarom wordt
GNUstep zo belangrijk: het maakt het mogelijk deze programma's onder X
te gebruiken. Dit is waarschijnlijk een van de sterkste punten van dit
project: deze mensen hebben echt geweldig werk gedaan.
We kunnen met angst de komst van Exploder en enkele andere
exemplaren van s...oftware van dezelfde producent onder Mac OS X
verwachten. Ik vind dit beangstigend! Als deze "apps" in Mac OS X
broncode zijn geschreven, kunnen we het ergste verwachten. Dat wil
zeggen, de duistere intrede van het Redmond leger in de vrije Unix
wereld. Natuurlijk, betekent vrij hier niet hetzelfde als gratis omdat
we het hier over M$ dieven hebben, maar... als je wil weten welke
applicaties in ontwikkeling zijn voor Mac OS X, kijk dan maar eens op
http://www.apple.com/macosx/applications/
Laten we het maar zo zien, dat is de pessimistische blik: we zullen af
moeten wachten!
Hoewel, laten we niet vergeten dat GNUstep in het bijzonder is
ontworpen voor software-ontwikkeling. Als het wat meer gemeengoed wordt,
zul je op een eenvoudige manier applicaties kunnen ontwikkelen, net
zoals onder NeXTStep mogelijk was. GNUstep is veel meer dan enkel een
framework, je zou kunnen zeggen dat het een groot IDE (Integrated
Development Environment) is. Het belangrijkste punt is dat deze apps
gemakkelijk omgezet kunnen worden naar een nieuw platform, naar Mac OS
X, bijvoorbeeld.
Trouwens laten we ook Apple's open source, Darwin, niet vergeten. Meer
over dit onderwerp vindt je op
http://www.opensource.apple.com//
Uiteraard is er nog veel meer over GNUstep te vertellen, maar dat ligt
buiten de scope van dit artikel. Het doel was om je te verleiden dit
geweldige product te proberen en, waarom niet, deel te nemen aan dit
fantastische project.
Een van de leukste kanten van vrije software ligt in deze projecten,
die proberen de fouten van de commerciële bedrijven te repareren.
NeXTStep was een ware revolutie voor mij. Ik ben de gelukkige eigenaar
van een 10 jaar oud werkstation, en geloof maar niet dat het onder stof
is bedolven: Ik gebruik het nog bijna elke dag, ondanks zijn 68040/25
Mhz CPU. Gelukkig (of misschien ongelukkigerwijs) denken veel mensen er
hetzelfde over. Dank aan het GNUstep team en aan het Window Maker team
om ons van zo'n geweldig werk te voorzien.
Het ongelofelijke van NeXTStep is het feit dat veel ontwerpers het
proberen na te maken.... en ze zijn geslaagd waar het model faalde. Weer
moeten we het Redmond koninkrijk noemen: heb je ooit gelet op de W95
vensters en hun toeters en bellen? Kijk nog maar eens naar de NeXTStep
schermafbeeldingen hierboven. NeXTStep verscheen voor het eerst in de
USA in 1987 en rond 1990 in Europa. Zoals de naam al zegt verscheen het
M$ product meer dan vijf jaar later. De vliegende pagina's tussen twee
mappen, uitgevonden om de omgeving van Seattle, werden gepresenteerd
onder NeXTStep 2.1, dat is omstreeks 1991...
Desalniettemin, voor een keer, hebben ze niet gekopieerd in Redmond!
Nee, ze deden het slimmer: ze "kochten" mensen van NeXT... Naar ik
verwacht voor veel, zeer veel geld. Dat geeft niet, maar het blijft niet
eerlijk, wel?
Het toont in ieder geval aan dat NeXTStep de mensen nooit onverschillig
liet, en dat is zwak uitgedrukt.
GNU is DE absolute bron betreffende
vrije software en hoort dat ook te zijn. De hele wereld is GNU veel
schuldig: elk OS heeft geprofiteerd van hun werk. Hun compilers zijn
waarschijnlijk de beste die er ooit geweest zijn, ongeacht het OS. Dat
is ook waar voor vele andere hulpmiddelen. Zelfs meer, hun projecten
zijn vaak (zo niet altijd) net zo goed als hun hulpmiddelen. GNUstep is
er een van. Overigens, NeXTStep had een GNU directory...
Als je net als ik, niet dol bent op de bekende (vrije of
commerciële) Unix bureaublad omgevingen, probeer dan GNUstep, je
zult het geweldig vinden! Je zult zelfs niet meer zonder kunnen.
Geniet er van !
Wat leven we toch in een geweldige tijd!