GNUstep, l'OpenStep open source

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 fr Georges Tarbouriech 

AboutTheAuthor:[A small biography about the author]

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.

Abstract:[Here you write a little summary]

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.

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

ArticleBody:[The article body]

Pour commencer avec...

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 . 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.

Pour installer...

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.

Exemples

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.

fontp.jpg fontpn.jpg

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 :

finger.jpg

Nous pourrions citer beaucoup d'autres applications mais laissons au lecteur le plaisir de la découverte.

Les poids-lourds

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.

gorm.jpg ib.jpg

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".

prcent.jpg pb.jpg

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.

Utilitaires

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...

Documentation

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.

Et après (What's NeXT) ?

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é.

Le bon 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.

Le mauvais côté

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.

Et l'orchestre continue à jouer

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 !