original in en Georges Tarbouriech
en to fr Georges Tarbouriech
Georges est un vieil utilisateur d'Unix (commercial et libre). En tant
qu'inconditionnel de NeXT depuis le début, il apprécie beaucoup les projets
libres mettant à profit les caractéristiques de ce fabuleux OS.
Voici plus de 10 ans apparaissait une machine incroyable dotée d'un OS encore plus incroyable. Elle se nommait NeXT et l'OS s'appelait NeXTStep. Nous n'avions jamais vu quelque chose de semblable auparavant : c'était une machine très esthétique à l'affichage époustouflant. L'OS était basé sur un BSD 4.2 au début et sur un 4.3 ensuite, avec un noyau mach très compact. Avec lui, le premier outil de développement graphique orienté objet voyait le jour : Interface Builder (Merci à Jean-Marie Hullot et à Bertrand Serlet pour cet incroyable outil). Commercialement, cette machine n'a pas vraiment fait un tabac. NeXT décida alors de porter cet environnement sur d'autres OS, tels que Sun, par exemple. L'API s'appelait OpenStep. De là, GNU lança un grand projet, GNUstep, http://www.gnustep.org, dont le but était d'élaborer un OpenStep libre. Cet article essaie de présenter ce fantastique travail, même s'il est loin de son aboutissement.
GNUstep, vous avez besoin d'un autre grand produit libre : Window Maker.
C'est un gestionnaire de fenêtres à la NeXT. Si vous ne le connaissez pas
encore, vous pouvez jeter un oeil
là. Au moment d'écrire ces lignes, la
dernière version est la 0.64.0.
Ce gestionnaire de fenêtres fait partie du projet GNUstep et vous pouvez le
récupérer sur
http://www.windowmaker.org.
Précisons que Window Maker fonctionne sur pratiquement toutes les plate-formes
Unix, qu'il s'agisse d'Unix commercial ou libre. Pour ce qui concerne GNUstep
c'est un peu différent. Il fonctionnera sous la plupart des saveurs de Linux,
NetBSD, FreeBSD, OpenBSD, de manière plus ou moins stable selon l'OS. Concernant
les Unixes commerciaux, il fonctionnera sous Solaris, Irix..., là aussi avec
plus ou moins de stabilité.
Une fois que votre écran ressemble à celui de NeXTStep, vous pouvez aller sur le
site de GNUstep pour télécharger tout ce dont vous avez besoin.
Et de quoi avez-vous besoin ? De toute évidence, d'un compilateur Objective C
(rappelez-vous, c'est un environnement orienté objet). gcc 2.8 (et au-dessus) fera
l'affaire. La bibliothèque libojc est recommandée. En dehors des outils
nécessaires à la compilation, vous avez besoin des composants de GNUstep :
c'est-à-dire, la "base library", au minimum , la "gui library", le "backend" X11
(xgps ou xdps)... etc.
Vous pouvez télécharger des tas de choses, à vous de voir : lisez la liste pour
faire votre choix. Par exemple, vous pouvez récupérer Gorm qui est l'adaptation
d'Interface Builder (CVS seulement), et bien sûr, les exemples ou les
applications utilisateurs.
Vous n'avez plus qu'à compiler ce que vous avez téléchargé ! Plus sérieusement,
vous devriez lire les différents fichiers README et INSTALL. Vous disposez
également d'un GNUstep HOWTO qu'il est recommandé de lire.
Après la compilation, le gros de votre travail concernera les variables
d'environnement et les programmes à lancer à la mise en route (le moteur, par
exemple, nommé gdnc).
Comme déjà signalé, vous pouvez choisir entre deux "backends" (interfaces) :
soit X, soit dps qui est la version libre de Display PostScript. Cette dernière
donnera de meilleurs résultats mais son développement est beaucoup moins avancé
que celui de l'interface X.
En fonction de votre OS, vérifiez les chemins lors de la définition des
variables d'environnement. Il faut au moins définir la variable
GNUSTEP_SYSTEM_ROOT et le chemin vers les différents scripts ou programmes.
Lorsque vous avez terminé cette partie, vous pouvez "jouer" avec GNUstep.
Des tonnes d'exemples sont disponibles sur le site de GNUstep, soit à partir de
la section apps, soit à partir de la section download. Ces exemples sont le
meilleur moyen de se familiariser avec GNUstep si vous ne connaissez ni NeXTStep
ni OpenStep. La plupart sont des exemples fonctionnels et permettent de
comprendre la philosophie cachée derrière l'environnement. Etudier le code vous
apprendra beaucoup sur l'Objective C. Pour quelqu'un connaissant le C,
l'Objective C est relativement facile à apprendre, et dans tous les cas,
beaucoup plus facile que le C++ (enfin, ce n'est que mon opinion).
Parmi ces exemples, le "font panel" (fenêtre de polices) est très réussi. On
dirait vraiment l'original. Au fait, au long de cet article nous proposerons des
photos d'écran de GNUstep et de NeXTStep, ainsi vous pourrez comparer. Voici le
premier exemple : le "font panel" de GNUstep et celui de NeXTstep.
Un autre exemple intéressant est celui founi par Edit app. Il n'est pas
entièrement fonctionnel mais c'est un très beau travail assez proche de
l'original.
L'un des exemples les plus didactiques se nomme GSTest. Lancer GSTest vous
permet de tout comprendre sur les fenêtres, boutons, glissières... C'est un tout
en un ! Une lecture du code source vaut mieux qu'un livre.
Bien sûr, cela ne veut pas dire que les autres exemples sont sans intérêt : ils
en ont !
Simplement, l'auteur de nombreuses applications, Nicola Pero, a fait un très
beau travail.
Une autre application intéressante du même Nicola se nomme Finger. C'est une
interface graphique pour finger (vous auriez deviné ?), ping, traceroute. La
voici :
Nous pourrions citer beaucoup d'autres applications mais laissons au lecteur le
plaisir de la découverte.
L'une des plus grosses révolutions apportée par NeXTStep était sans conteste
Interface Builder. Comme son nom l'indique, c'était un outil permettant de créer
une interface graphique pour votre application. Mais quel outil ! Rappelez-vous,
c'était à la fin des années 80 : incroyable !
Pourquoi était-ce une révolution : parce que vous pouviez fabriquer une fenêtre
et tout ce qu'il y a autour en moins de 5 minutes ! C'est-à-dire, une fenêtre
avec son menu, ses boutons, ses barres de défilement, etc, se créait en glissant
des objets d'une palette vers cette fenêtre. Il était alors possible de lier ces
objets à d'autres fenêtres ou menus ou quoi que ce soit d'autre. Un code minimal
était généré que vous deviez compléter. Evidemment, une fois créés ces objets
pouvaient être réutilisés ailleurs.
Inimaginable à cette époque !
Depuis, de nombreux éditeurs de logiciel ont essayé de faire la même chose : à
mon humble avis, ils n'ont jamais atteint le niveau de l'original.
Et maintenant, vous disposez d'un tel outil gratuitement ! Il se nomme Gorm
(GNUstep Graphics Object Relationship Modeller) et l'auteur s'appelle Richard Frith-Macdonald.
Gorm n'est disponible qu'en CVS sur le site de GNUstep. Il n'est qu'en version
0.1 au moment de cet article, pourtant il fonctionne même s'il manque encore de
nombreuses caractéristiques. Pour découvrir la philosophie d'Interface Builder,
Gorm est l'outil qu'il vous faut.
Voici un exemple très simple (et stupide), encore une fois avec son équivalent
sous NeXTstep.
Comme nous l'avons déjà dit, cet outil et son modèle, Interface Builder, sont
utilisés pour créer la partie graphique d'une application. Bien sûr, c'est
insuffisant pour que l'application fonctionne. Vous devrez compléter le code
généré et gérer les différentes sources comme pour n'importe quel autre projet.
Enfin, vous devrez compiler votre travail.
Ceci nous amène au second poids-lourd, nommé Project Builder sous NeXTstep et
ProjectCenter sous GNUstep. ProjectCenter est l'oeuvre de Philippe C.D Robert
et le numéro de version est 0.2. Une fois de plus, cet outil fonctionne malgré
son numéro de version. Vous pouvez gérer votre projet comme vous l'auriez fait
sous NeXTstep. De toute évidence, il reste beaucoup à faire, mais celui-ci vaut
également la peine d'être téléchargé.
Voici à quoi il ressemble comparé à son "père".
Utiliser ces deux outils est plutôt simple si vous connaissez NeXTstep ou
OpenStep. Si vous ne les avez jamais utilisés, vous devrez en chercher la
philosophie. Une grande quantité de documentation est disponible et il est
recommandé de la lire (pour ne pas dire obligatoire). Mais une fois que vous
aurez compris comment ça fonctionne... vous ne pourrez plus vous en passer !
Vous voilà avertis.
Nous devons aussi mentionner d'autres gros travaux tels que GWorkspace ou
GSBench. Le GNU 3DKit est un autre gros morceau. C'est une API conçue pour
fonctionner au-dessus d'OpenGL. Vous la trouverez sur
http://www.nice.ch/~phip/softcorner.html
avec beaucoup d'autres applications.
Les outils dont nous allons parler ici sont créés pour le portage d'applications
d'OpenStep vers GNUstep. Mais en réalité, ils vont beaucoup plus loin puisqu'ils
permettent de porter aussi des applications Mac OS X. C'est le point important :
nous allons y revenir !
D'abors, nous avons un outil nommé OpenStep2GNUConverter, permettant de
convertir un PBProject (créé sous Project Builder) en un Makefile GNUstep.
Autrement dit, vous pourrez compiler un projet OpenStep sur votre machine Linux
(par exemple).
Pour compiler ce projet, vous aurez besoin d'un autre outil appelé nfmake.
Un outil du nom de nib2gmodel permet de convertir un fichier nib
(produit par Interface Builder) en son équivalent sous GNUstep, appelé gmodel.
Enfin, vous pouvez récupérer gstep-db, qui est une bibliothèque de base de
données, et mieux encore, un adaptateur Oracle.
NeXTStep et OpenStep proposaient des adaptateurs pour Sybase et
Oracle, c'est-à-dire une interface permettant de faire des requêtes sur les
bases de ces éditeurs. GNUstep propose l'équivalent gratuit (sous NeXTstep ou
OpenStep, vous deviez posséder le kit développeur qui était très cher, mais vous
aviez gratuitement l'Enterprise Object Foundation - des tonnes d'exemples).
Bien sûr, tous ces outils peuvent être téléchargés depuis le site de GNUstep.
Malheureusement, je n'ai pas pu tester tout ça, parce que j'ai "seulement" une
vieille NeXTstation et j'attends (impatiemment) Mac OS X au travail. Mais j'ai
fait confiance à GNU pendant environ 15 ans et je ne vais pas changer
aujourd'hui ! J'ai envie de dire : tout cela fonctionne certainement. De toutes
façons dans quelques mois je testerai le tout...
Si vous êtes intéressés par le développement sous cet environnement, comme nous
l'avons déjà mentionné, il existe une grande quantité de documentation. La
facilité d'utilisation n'est pas une légende, mais il est nécessaire de posséder
quelques connaissances sur le fonctionnement.
Sur le site de GNUstep vous trouverez de nombreux liens utiles. Toutefois,
certains méritent une attention particulière.
Aller à http://www.gnustep.org/resources/documentation.html
vous permettra d'accéder à la documentation générale de GNUstep. Vous y
trouverez un "livre" sur l'Objective C, des instructions d'installation, une
FAQ...
Une documentation sur la GNUstep library est aussi disponible.
Et encore mieux, vous trouverez des tutoriels. Celui de Nicola est recommandé.
Vous pouvez donc visiter
http://www.gnustep.it/nicola/Tutorials
Un autre endroit digne d'intérêt est la partie ressources : vous y trouverez des
liens vers des articles, des sites de développement...
Le site http://www.gnustep.net/ est également très
intéressant.
Autrement dit, vous pouvez trouver tout ce dont vous avez besoin pour démarrer
avec GNUstep.
L'étrange histoire de NeXT continue, espérons avec succès cette fois-ci, sous le
nom de MacOS X. Génial ! Que pensez-vous d'un OS né voici plus de 10 ans qui
recommence une nouvelle carrière ? Il devait être en avance, vous ne pensez pas
?
Mais qu'est-ce que ça signifie pour nous ? Probablement une grande quantité
d'applications puisque celles qui existent peuvent être facilement recompilées,
et n'oublions pas, MacOS X comme NeXTstep sont des sytèmes Unix. Ca veut dire
des tonnes d'applications potentiellement disponibles aussi pour les Unix
libres. Par conséquent, GNUstep est l'environnement qu'il vous faut...
Ce serait une espèce de rêve : nous pourrions enfin choisir le logiciel que nous
voulons en fonction de nos besoins. Malheureusement, il y a un bon et un mauvais
côté.
Prenons un exemple : aujourd'hui, selon l'OS utilisé, vous n'avez guère de choix
parmi les navigateurs web. C'est soit Netscrape (et ses dérivés), soit Exploder,
c'est-à-dire deux usines à gaz boguées jusqu'au trognon, pleins de failles de
sécurité, etc. MacOS X propose OmniWeb : c'est un excellent navigateur.
L'utiliser sous NeXTstep est un vrai plaisir, même s'il s'agit d'une version
plutôt ancienne.
C'est le type de navigateur dont vous pouvez rêver aujourd'hui lorsque vous
utilisez Unix ou les trucs de M$. Le seul moyen d'avoir des navigateurs "fins"
concerne ce que nous appelons les OS alternatifs : tels que NetPositive sous
BeOS ou AWeb, par exemple, sous AmigaOS. Certes Opera semble attractif, mais
jusqu'à présent il ne m'a pas franchement convaincu (mais ça n'engage que moi).
Ce que je veux dire, c'est que MacOS X et par conséquent GNUstep, vont nous
amener de "nouveaux" outils, souvent meilleurs que ceux d'aujourd'hui. Nous
avions déjà bénéficié de tels outils voici environ dix ans... avec NeXTstep !
Bien sûr, ceci s'applique à bien d'autres types de logiciels et pas seulement
aux navigateurs.
Si vous allez sur http://www.omnigroup.com/ vous découvrirez
des tas d'outils disponibles.
La principale différence entre GNUstep et MacOS X vient de l'utilisation de
XWindow pour le premier et non pour le second. Le reproche avait déjà été fait à
NeXTstep. C'est là que GNUstep devient si important : il permet d'utiliser ces
applications sous X. C'est sans doute l'une des grandes forces du projet : ces
gens ont vraiment fait un travail remarquable.
Nous pouvons redouter l'arrivée d'Exploder et autres m... orceaux de logiciels
du même éditeur sous MacOS X. C'est un peu effrayant ! Si ces applications sont
natives MacOS X, nous pouvons nous attendre au pire. C'est-à-dire, l'entrée
insidieuse de l'armée de Redmond dans le monde Unix libre. Bien sûr, ici libre
ne signifie pas gratuit puisque nous parlons des escrocs de M$, mais... Si vous
voulez connaître les applications en cours de développement pour MacOS X, jetez
un oeil sur
http://www.apple.com/macosx/applications/
Admettons que ce soit la manière pessimiste de penser : wait and see !
Toutefois, n'oublions pas que GNUstep est particulièrement conçu pour le
développement. Une fois qu'il sera devenu un peu plus abouti, vous pourrez
développer des applications aussi facilement que c'était le cas sous NeXTstep.
GNUstep est beaucoup plus qu'un simple environnement, nous pourrions dire qu'il
s'agit d'un énorme IDE (Integrated Development Environment). Le plus important
semble que ces applications seront facilement portables, vers MacOS X, par
exemple.
Au fait, n'oublions pas l'open source d'Apple, Darwin. Plus sur le sujet à
http://www.opensource.apple.com//
Il est évident qu'il y a beaucoup plus à dire sur GNUstep mais ça va au-delà du
cadre de cet article. Le but, c'était de vous donner envie d'essayer ce
fantastique produit, et pourquoi pas, de participer à ce grand projet.
L'un de mes grands plaisirs pour ce qui concerne le logiciel libre vient de ces
projets qui tentent de "réparer" les grosses erreurs commerciales. NeXTstep
était pour moi une véritable révolution. Je suis l'heureux possesseur d'une
station vieille de 10 ans, et ne croyez pas qu'elle est couverte de poussière :
je l'utilise pratiquement tous les jours malgré son CPU 68040/25 Mhz.
Heureusement (ou malheureusement), nombreux sont ceux qui semblent penser la
même chose. Merci à l'équipe de GNUstep, à celle de Window Maker de nous
proposer un si beau travail.
La chose incroyable sur NeXTstep, vient du fait que de nombreux éditeurs ont
essayé de le "cloner"... et ils ont réussi là où le modèle avait échoué.
Encore une fois, nous devons citer le Royaume de Redmond : avez-vous déjà
remarqué les fenêtres de W95 et leurs gadgets ? Eh bien, regardez les photos
d'écran de NeXTstep ci-dessus. NeXTstep est apparu en 1987 aux USA et aux
environ de 1990 en Europe. Comme son nom l'indique, le machin de M$ est apparu
plus de cinq ans plus tard. Les feuillets volant entre deux dossiers, inventés
dans les alentours de Seattle, étaient présents sous NeXTstep 2.1, c'est-à-dire
vers 1991...
Pourtant, pour une fois, ils n'ont pas copié à Redmond ! Non, ils ont fait
beaucoup mieux : ils ont "acheté" des gens de NeXT... Je suppose pour beaucoup,
beaucoup dollars. N'en parlons plus, mais ce n'est pas très joli, n'est-il pas ?
Cela pour dire que NeXTstep n'a jamais laissé indifférent, ce qui est un
euphémisme.
GNU est la référence absolue pour ce qui
concerne le logiciel libre et c'est largement mérité. Le monde entier doit
beaucoup à GNU : chaque OS a pu bénéficier de leur travail. Leurs compilateurs
sont probablement les meilleurs jamais vus, quel que soit l'OS. C'est vrai pour
beaucoup d'autres outils. Leurs projets sont souvent (sinon toujours) aussi
réussis que leurs outils. GNUstep est l'un d'eux. Au fait, il y avait un
répertoire GNU sous NeXTstep...
Si comme moi, vous n'êtes pas des inconditionnels des environnements bien connus
du monde Unix (libre ou commercial), essayez GNUstep, vous allez adorer ! Encore
mieux, vous ne pourrez plus vivre sans.
Amusez-vous !
Quelle époque formidable nous vivons !