GNUstep, OpenStep in versione OpenSource

ArticleCategory: [Choose a category for your article]

Software Development

AuthorImage:[Here we need a little image form you]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech 

en to it Toni Tiveron

AboutTheAuthor:[A small biography about the author]

Georges è da lungo tempo un utente Unix (sia esso commerciale o free). Da estimatore di NeXT, si appassiona molto ai progetti di software libero che abbiano l'aspetto e diano la sensazione di questo grandioso Sistema Operativo.

Abstract:[Here you write a little summary]

Più di dieci anni or sono una incredibile macchina fu realizzata, ed un ancor più incredibile sistema operativo nacque. Fu chiamata NeXT e NeXTStep era il suo sistema operativo. Non si era mia visto nulla di simile precendentemente: era una macchina con un aspetto accattivante e dotatata di un display che dava una sensazione di ampio respiro. Il suo sistema operativo era basato su BSD 4.2, almeno al principio, ed in un secondo momento sulla versione 4.3 (sempre di BSD della Berkeley), pur riuscendo a mantenere un kernel Mach molto compatto. Con questa macchina fece la comparsa il primo sistema di sviluppo basato sul linguaggio ad oggetti. Questo strumento portava il nome di Interface Builder (Jean-Marie Hullot e Bertand Serlet, ancor oggi dobbiamo ringraziarvi per averci dato uno strumento così eccezionale). Dal punto di vista prettamente commerciale questa macchina fu quasi un fallimento. In un successivo momento NeXT decise di rendere disponibile questa struttura grafica per altri sistemi operativi: nacque così OpenStep. Da queste basi la comunità GNU diede vita ad un progetto grandioso: GNUstep (http://www.GNUstep.org). GNUstep, ovvero una implementazione free di OpenStep. Questo articolo vi vuole introdurre questo eccezionale progetto, anche se non lo si può considerare certamente ancora completato.

ArticleIllustration:[This is the title picture for your article]

ArticleBody:[The article body]

Si parte...

Per poter utilizzare GNUstep avrete bisogno di un altro prodotto eccezionale, anche esso free: Window Maker. Si tratta di un sistema di controllo per X, che usa lo stile di NeXT. Se ancora non lo conoscete potete dare un'occhiata a questo articolo. La versione disponile in questo momento è la 0.64.0.
Questo Window Manager è parte integrante del progetto GNUstep e lo potete trovare nel sito http://www.windowmaker.org.
Lasciatemi anche dire che Window Maker può funzionare praticamente su quasi tutte le piattaforme Unix, siano esse commerciali o non. Per quel che concerne GNUstep le cose sono leggermente diverse. GNUstep funziona correttamente sulla maggior parte delle distribuzioni Linux, su NetBSD, FreeBSD, OpenBSD, in modo più o meno stabile a seconda del sistema operativo. Per quel che riguarda il suo funzionamento su piattafrome Unix commerciali, funziona correttamente su Solaris, Irix... in maniera più o meno stabile.
Dopo che il vostro schermo avrà la parvenza di NeXTStep, potrete approdare al sito di GNUstep e trovare tutto quello che vi serve.
Che cosa vi può servire? Ovviamente, un compilatore C ad oggetti (vi ricordo che si tratta di una struttura basata su un linguaggio ad oggetti). Ricorrendo a gcc 2.8 (o più recente) il problema si risolve facilmente. Assai raccomandate sono le librerie libobjc. A prescindere dai prerequisiti del compilatore, avrete bisogno anche di alcuni compomenti di GNUstep: le librerie di base, le librerie dell'interfaccia grafica ed il backend per X11 (xgps o xdps)... e forse qualcos'altro. Vi sono molti pacchetti che potete scaricare... dipende da voi: scorrete la lista e fate la vostra scelta. Per esempio, potreste scegliere Gorm che altro non è se non l'implementazione di Interface Builder (per il momento disponibile per mezzo di CVS), e ovviamente, anche alcuni esempi di applicativi.

Ed ora installiamo...

Dovrete semplicemente compilare quello che avete scaricato! Scherzi a parte, dovrete leggere attentamente tutti i file README ed INSTALL. Vi raccomando anche di leggere attentamente gli HOWTO di GNUstep.
Dopo aver compilato, la maggior parte del lavoro riguarda l'ambiente di lavoro ed i servizi da avviare all'avvio del sistema (il cuore di GNUstep per esempio, che ha come nome gdnc).
Come precedentemente menzionato, potrete scegliere tra due differenti backend; quello X e quello che ricorre a dps, che altro non è che una libera implementazione di Display PostScript (Nota del traduttore: per chi non lo sapesse un'altra delle particolarità di NeXT era quella di avere un Display PostScript). Quest'ultima vi grantisce risultati migliori, anche se non è evoluta quanto la soluzione basata su X.
A seconda del vostro sistema operativo, dovrete definire e verificare path di ricerca e variabili di ambiente. Come minimo dovrete definire la variabile GNUSTEP_SYSTEM_ROOT ed i path che permettando di accedere agli script o ai programmi necessari per il funzionamento.
Una volta completata questa parte, potrete prendere conoscenza con GNUstep.

Alcuni esempi

Ci sono moltissimi esempi disponibili su sito di GNUstep, basta semplicemente cercare o nella sezione degli applicativi utente (User Apps) o nella sezione download. Questi sono lo strumento migliore per prendere conoscenza con GNUstep se non siete pratici o di NeXTStep o di OpenStep. La maggior parte di essi sono esempi completamente funzionanti e vi permettono di comprendere la filosofia di base del sistema nel suo complesso. Se vorrete dare un'occhiata al codice sorgente imparerete molto sul linguaggio ad oggetti C. Per coloro che già conoscono C, imparare il C orientato ad oggetti è un'operazione abbastanza semplice, ed in ogni caso è assai più semplice di quanto non sia imparare il C++ (o meglio, questa è la mia esperienza).
Tra tutti questi esempi, uno molto interessante è il pannello di controllo che sovraintende ai caratteri. Sembra veramente l'originale. Ah... a proposito, durante questo articolo io vi sto mostrando sia delle immagini prese da NeXTStep sia da GNUstep, a voi l'arduo compito di farne un raffronto. Eccovi il primo esempio-comparazione: lo strumento che permette la scelta dei caratteri su GNUstep e su NeXTStep.

fontp.jpg fontpn.jpg

Un altro esempio degno di nota è l'applicazione Edit. Non è completamente funzionante ma si tratta in ogni caso di un ottimo lavoro, molto simile all' originale.
Uno degli esempi più interessanti dal punto di vista tecnico è sicuramente GSTest. L'utilizzo di GSTest vi permetterà di comprendere tutto riguardo le finestre, i bottoni, le barre di scorrimento,... È uno strumento monoblocco completamente funzionante! Osservare con cura il codice sorgente è meglio che non imparare da un libro.
Ovviamente questo non vuole dire che gli altri esempi non siano di alcun interesse: ne hanno anche loro!
Semplicemente, vorrei dire che, Nicola Pero, l'autore di svariati applicativi ha svolto un lavoro davvero eccellente.
Un altro grandioso applicativo creato da Nocola è Finger. Si tratta di uno strumento dotato di interfaccia grafica che svolge molte funzioni: finger (lo avreste mai detto??), ping, traceroute. Eccove un'immagine:

finger.jpg

Si potrebbero citare moltissimi altri applicativi, ma lascerò al lettore il piacere di scoprirli.

Fuoco alle polveri

Una delle principali rivoluzioni che ci ha portato NeXTStep fu Interface Builder. Come il nome stesso suggerisce (Nota del traduttore: Interface Builder letteralmente vuol dire Costruttore di Interfaccie), si tratta di uno strumento per creare l'interfaccia grafica delle vostre applicazioni. Che strumento eccezionale! E vi ricordo che si tratta di un qualcosa nato alla fine degli anni 80: oserei dire incredibile!
Se vi chiedete che abbia di rivoluzionario eccovi la risposta. Esso vi permette di creare una finestra con tutti gli ammenicoli necessari in meno di 5 minuti! Mi spiego: una finestra con i relativi menu, i pulsanti, i cursori, il tutto creato semplicemente trascinando degli ogetti predefiniti nella nostra finestra in costruzione. A questo punto era possibile collegare a questi oggetti applicati alla nostra finestra altre finestre, dei menu o quello che più ci piaceva. Veniva quindi generata una porzione di codice che dovevamo completare. Ovviamente tutti questi oggetti potevano esser riutilizzati a piacimento.
Qualcosa di fantascientifico per quel tempo!
Da quella prima idea moltissimi produttori di software hanno cercato di creare un prodotto simile: nella mia modesta opinione, nessuno di loro ha mai raggiunto il livello dell'originale.
Ed ora possiamo pure avere a nostra disposizione uno strumento di tal guisa! Il suo nome è Gorm (che è l'acronimo per Graphics Object Relationship Modeler, generatore di relazioni tra oggetti) il cui autore è Richard Frith-Macdonald.
Gorm è disponibile solo sotto forma di sorgente distribuito via CVS dal sito web di GNUstep. La versione, ora che sto scrivendo questo articolo, è la 0.1 e sebbene essa sia già funzionante manca ancora di moltissime funzionalità. Per scoprire quello che era l'aspetto e la fruibilità di Interface Builder, Gorm è forse il miglior strumento.
Eccovi un semplice (e forse stupido) esempio. Ancora una volta raffrontato direttamente con NeXTStep.

gorm.jpg ib.jpg

Come ho detto poc'anzi questo strumento ed il suo capostipite, Interface Builder, vengono usati per creare l'interfaccia del nostro applicativo. Ovviamente questo non è sufficiente per avere un applicativo completamente funzionante. Sarete voi a dover, poi, completare il codice prodotto e gestire le varie sezioni di codice come si fa normalmente per qualsiasi progetto. Come ultimo e finale passo dovrete compilare il vostro applicativo.
Ed eccoci ad un secondo eccezionale strumento, noto nell'ambiente NeXTStep come Project Builder e ProjectCenter in quello GNUstep. ProjectCenter è scaturito dal lavoro di Philippe C. D. Robert, e l'attuale versione è la 0.2. Anche in questo caso si tratta di un applicativo funzionante a dispetto della sua versione. Potete gestire i vostri progetti come fareste in Project Builder sotto NeXTStep. Purtroppo ancora molto lavoro deve esser fatto anche su questo strumento, ma il download ne vale sicuramente la pena.
Eccovi l'aspetto di ProjectCenter e di suo "padre".

prcent.jpg pb.jpg

Utilizzare questi strumenti è assai semplice se avete dimestichezza o con NeXTStep o con OpenStep. Se non li avete mai utilizzati, dovrete far vostra la filosofia che li governa. Moltissima documentazione è disponibile e vi raccomando caldamente di leggerla attentamente (per non dire che sia vitale leggerla nel suo complesso). Ma una volta che ne avrete assimilato la filosofia... non potrete più farne a meno! Io vi ho avvertito.
Dobbiamo anche citare GWorkspace e GSbench. Anche GNU 3DKit è una componente software eccezionale. Si tratta di una API costruita per funzionare con le OpenGL. Lo potete trovare presso http://www.nice.ch/~phip/softcorner.html assieme ad svariati applicativi.

Utilità

Gli strumenti che vi ho citato sono concepiti per poter utilizzare gli applicativi OpenStep in ambiente GNUstep. In vero essi permettono molto di più, offrendo la possibilità di poter eseguire il porting anche di applicativi nati per MacOS X. Questo è il vero succo del discorso: null'altro!
Prima di tutto esiste uno strumento, noto come OpenStep2GNUConverter, che vi permette di convertire un progetto realizzato con Project Builder in un Makefile di GNUstep. Cioè sarete in grado, per esempio, di compilare sulla vostra macchina Linux un progetto nato per OpenStep.
In vero per compilare questi progetti avrete bisogno anche di uno strumento noto come nfmake.
Uno strumento, che ha per nome nib2gmodel, vi permette di convertire un file nib (prodotto da Interface Builder) nel suo diretto corrispondente nell' ambiente GNUstep, ovvero in un modello gmodel.
Per ultimo, ma non meno importante, potete utilizzare gstep-db, una libreria specifica per l'interfacciamento ai database di Oracle e di altri produttori.
NeXTStep ed OpenStep erano soliti fornire queste interfaccie per Sybase e Oracle. Si trattava di interfaccie necessarie per poter effettuare delle query dall'interno di questi ambienti. GNUstep vi offre gli stressi strumenti gratuitamente (in ambiente NeXTStep ed OpenStep dovevate acquistare costosi kit di sviluppo, ma vi vieniva dato a corredo anche l'Enterprise Object Foundation - che contiene un'infinità di esempi).
Ovviamente tutti questi strumenti potete scaricarli dal sito di GNUstep.
Sfortunatamente non sono stato in gradi di provare tutti questi applicativi, dato che mi trovo per le mani "solo" una vecchia NeXT Station e sono (tremendamente) impaziente di vedere MacOS X al lavoro. Ma, dato credo ai prodotti GNU da 15 anni e non ho la minima idea di cambiare opinione mi sento di dire che questi, certamente, funzioneranno a dovere. In ogni caso nel giro di pochi mesi potrò provarli in prima persona.

Documentazione

Se siete interessati a sviluppare in questi ambienti, potrete trovare moltissima documentazione in merito, come d'altronde vi ho già detto. La sua leggendaria fruibilità e semplicità d'utilizzo non sono false, ma dovrete apprendere i fondamenti con cui essi funzionano.
Dal sito di GNUstep potete trovare molti link utili a tale scopo. Tuttavia alcuni di essi meritano una particolare attenzione.
Visitate http://www.gnustep.org/resources/documentation.html che vi fornirà la documentazione generale inerente GNUstep. Vi troverete un libro sul linguaggio C orientato ad oggetti, istruzioni di installazione, FAQ e molto altro.
Esiste anche una documentazione inerente le librerie di GNUstep.
Troverete perfino dei tutorial. Vi raccomando di leggere quello redatto da Nicola. Lo potete trovare al seguente indirizzo http://www.gnustep.it/nicola/Tutorials.
Un'altra sezione interessante da visitare è quella delle risorse: vi troverete un'infinità di link, articoli, siti inerenti lo sviluppo,...
Il sito http://www.gnustep.net/ presenta anche esso molti aspetti interessanti.
Insomma, potrete trovare tutto quello che vi servirà per iniziare a lavorare e sviluppare con GNUstep.

Che altro ci riserva il futuro?

La stravagante storia di NeXT continua... e questa volta speriamo con successo, con il nome di MacOS X. È un oggetto eccezionale! Che ne pensate di un Sistema Operativo che rinasce a nuova vita dopo 10 anni? Direi che al tempo fù alquanto all'avanguardia! Non lo pensate anche voi?
Che cosa coporta tutto questo per noi? Bhé probabilmente una enormità di applicazioni esistenti che potranno essere facilmente ricompilate, e, non dimentichiamoci, che sia MacOS X e NeXTStep sono entrambi due sistemi operativi bastati su Unix. Il che implica una infinita quantità di possibili applicazioni disponibili, come è per tutte le verisioni free di Unix. Di conseguenza, GNUstep sarà l'infrastruttura di cui avremo bisogno...
Lasciatemi dire che si tratta di un sogno (o un qualcosa di simile): almeno saremo in grado di scegliere il software che vogliamo. Purtroppo tutto questo ha sia degli aspetti positivi che negativi.

Gli aspetti positivi

Permettemi di ricorre ad un esempio: oggigiorno non abbiamo un'ampia scelta per quel che riguarda i navigatori ipertestuali per il web. La scelta ricade tra Netscrape (ed i suoi diretti derivati) o Exploder; in ogni caso è come se si trattasse di due depositi di gas esplosivo con vicino una scatola di cerini, di problemi di sicurezza, e molte altre cose. MacOS X vi darà OmniWeb: si tratta di un navigatore eccezionale. Utilizzarlo sotto NeXTStep è una goduria, anche se in tal caso si tratta di una versione piuttosto datata.
È un tipo di navigatore che possiamo solo sognarci oggigiorno, quando utlizziamo Unix o sistemi M$. Gli unici veri navigatori web "leggeri" che possiamo trovare sono presenti su cosidetti sistemi operativi alternativi: NetPositive in BeOS o AWeb su AmigaOS. Certo, Opera sembra assai interessante, ma fino ad oggi non mi ha ancora convinto pienamente (si tratta comunque di una mia opinione prettamente personale). Quello che voglio dire, alla fine, è che sia MacOS X che GNUstep ci forniranno "nuovi" strumenti , e speriamo che essi saranno migliori di quelli che utilizziamo oggigiorno. Abbiamo avuto grandissimi benefici con questo genere di strumenti ben dieci anni or sono... grazie a NEXTStep.
Certo, questo è altrettanto vero per moltissimi tipi di software, non solo per navigatori web.
Se andate a vistare http://www.omnigroup.com/ potrete vedere una serie di nuovi strumenti.
La principale differenza tra GNUstep e MacOS X sta nel fatto che X Window è utilizzato sotto GNUstep, mentre no lo è in MacOS X. Questo fu anche una delle lamentele inerenti NeXTStep. Per questo motivo GNUstep potrebbe divenire così importante: permetterà di utilizzare le applicazioni nate per NeXTStep (e MacOS X) in un ambiente X Window. Questo, forse, è uno degli aspetti salienti di questo progetto: questi ragazzi stanno facendo un lavoro eccezionale.

Gli aspetti negativi

Dobbiamo temere l'arrivo di Exploder e di altro merd... software per MacOS X dal loro creatore. La cosa mi fa tremare! A maggior ragione se queste applicazioni saranno native per MacOS X ... allora dovremo attenderci il peggio! Questa potrebbe essere un'insidiosa breccia da parte della casa di Redmond nel mondo libero di Unix. Ovviamente in questo caso non voglio intedere libero come gratuito, anche perchè stiamo parlando di M$, ma... Comunque se volete dare un'occhiata a tutte le applicazioni disponibili in fase di sviluppo per MacOS X, potete visitare http://www.apple.com/macosx/applications/.
Potremmo dire che comunque si tratta in ogni caso di una visione alquanto pessimistica del tutto.

Tuttavia non dimentichiamoci che GNUstep è in particolar modo studiato per lo sviluppo. Una volta che esso sarà maturato, sarete in grado di sviluppare applicazioni in maniera semplice, come si può fare in NeXTStep. GNUstep è ben di più di una semplice infrastruttura, potremmo dire che in vero si tratta più di un grande IDE (acronimo per Integrated Development Environment, ovvero un ambiente di sviluppo integrato). Il punto saliente sembra vertere sul fatto che le applicazioni saranno facilmente portabili da un sistema all'altro, verso MacOS X, per esempio.
Ah.. stavo quasi per dimenticare che Apple ha anche un versione open source, nota come Darwin. Potrete trovare più informazioni in merito presso questo sito: http://www.opensource.apple.com/.
Ovviamente GNUstep non è soltanto questo, ma le parti rimanenti sono ben oltre lo scopo di questo articolo. Il mio fine era quello di invogliarvi a provare questo eccezionale prodotto,e perchè no, a partecipare al suo sviluppo.

Lasciamoci andare...

Uno dei piaceri che traggo dal software libero scaturisce da questo genere di progetti, nati per cercare di porre rimedio ad errori commerciali. NeXTStep fu per me una completa rivoluzione. Sono un fiero proprietario di una workstation di ben 10 anni, e potete credermi se vi dico che non è per nulla coperta di polvere: la uso quasi ognigiorno anche se è equippaggiata con un modesto 68040 a 25MHz. Fortunatamente (o sfortunatamente) molte persone sembra la pensino alla mia stessa maniera. Voglio, qui, ringraziare le persone del progetto GNUstep, di Window Maker per averci permesso di poter aver un software di tal genere.
La cosa più incredibile di NEXTStep scaturisce dal fatto che molte software house hanno cercato di "clonarlo" ed hanno avuto successo, proprio dove il modello da cui si sono ispirati ha fallito. Ancora un volta dobbiamo citare il dominio di Redmond: avete mai fatto caso a Windows95 ed a tutti i suoi gadget? Provate a dare un'occhiata alle schermate di NeXTStep che vi ho poc'anzi fatto mostrato. NeXTStep fece la sua comparsa negli USA nel 1987 ed in Europa all' incirca nel 1990. Come il suo nome suggerisce, il prodotto di M$ è apparso sulla scena ben 5 anni dopo. I piccoli fogli che transitano da una cartella all'altra erano già stati inventati nei meandri si Seattle, e fecero la loro comparsa nella versione 2.1 di NeXTStep. Era l'anno 1991.
Scuate, in vero, l'azienda di Redmond non copiò! Fecero ben di peggio: "assunsero" i ragazzi di NeXT... suppongo per una considerevole quantità di dollari. Non importa... non lo trovate poco sportivo?
Questo, tanto per sottolineare che NeXTStep non può lasciare nessuno indifferente.
GNU è il punto di riferimento per eccellenza per il software libero. Tutto il mondo deve moltissimo a GNU: non c'è sistema operativo che non abbia tratto benifici. Il loro compilatore, probabilmente, è il migliore che si possa trovare, indipendentemente dal sistema operativo. Questo è altrettanto vero per moltissimi altri strumenti. Pure i loro progetti, anche se non sempre, sono un qualcosa di eccezionale. GNUstep, appunto, ne è un ottimo esempio. Ah...per dovere di cronaca NeXTStep ha una cartella GNU...
Se anche voi, come me, non siete particolarmente entusiasti degli ambienti desktop disponibili per Unix (sia esso commerciale o no) provatelo. Adorerete GNUstep! Probabilmente non sarete mai più in grado di farne a meno!
Buon lavoro!
Viviamo in tempi eccezionali!