Gorm et ProjectCenter, les outils RAD de GNUstep

ArticleCategory:

Applications

AuthorImage:

Georges Tarbouriech

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech

en to fr Georges Tarbouriech

AboutTheAuthor:

Georges est un vieil utilisateur d'Unix. Il adore GNUstep et les outils propos�s par cet excellent environnement de d�veloppement.

Abstract:

RAD signifie Rapid Application Development (d�veloppement rapide d'application). A la fin des ann�es 80, lors de l'apparition de NeXTstep, celui-ci proposait un incroyable outil nomm� InterfaceBuilder. Utilis� conjointement � un autre outil appel� ProjectBuilder, il permettait de d�velopper des applications graphiques en un clin d'oeil. GNUstep propose une version libre de ces outils, Gorm.app et ProjectCenter.app.

ArticleIllustration:

ProjectCenter and Gorm

ArticleBody:[The article body]

Au commencement...

D�s la pr�histoire des ordinateurs, le d�veloppement logiciel a �t� un �norme d�fi. Les ordinateurs �taient tr�s volumineux malgr� leur faible puissance. Ils �taient tr�s chers, pas vraiment nombreux et les d�veloppeurs ne pouvaient pas les utiliser aussi souvent qu'ils l'auraient voulu puisqu'ils devaient les partager avec d'autres. Les chercheurs ont alors essay� de trouver un moyen de faire accomplir � ces ordinateurs plus d'une t�che � la fois afin d'am�liorer leur efficacit�. De toute �vidence, ils devaient partir de z�ro pour concevoir des langages de programmation, prenant en consid�ration les faibles ressources des machines disponibles.
Ainsi, pendant les ann�es 60 de nombreux langages de programmation sont apparus : LISP, FORTRAN, BASIC, Algol68, BCPL, etc. Vint ensuite le langage B d�riv� du BCPL mentionn� ci-dessus, qui devait bient�t devenir le langage C. Ce dernier a chang� le monde de la programmation.
Les langages orient�s Objet (SmallTalk, Objective C, C++, etc) sont arriv�s plus tard avec "l'�re graphique".
Dans les ann�es 80, quelques machines disposaient d'OS graphiques (Apple Macintosh, Commodore Amiga, Atari ST, etc) et le X Window System �tait en plein d�veloppement. A cette �poque, une soci�t� travaillait sur une interface graphique pour l'OS2 d'IBM appel�e Presentation Manager. Avant de finir son travail, cette soci�t� a "sorti" sa "propre" interface graphique pour son DOS, appel�e... Windos. Les deux premi�res versions �taient pratiquement inutilisables, mais... la troisi�me a d�marr� le processus. L'ItAM (Intelligence tr�s Artificielle de Microsoft) �tait n�e !
En clair, chaque utilisateur devint un informaticien. A partir de l� nous avons vu appara�tre des applications "g�niales" �crites en utilsant Excel ou Word et VisualBasic :-(
N'en parlons plus !
Heureusement, bien avant d'atteindre cette situation, NeXTstep �tait n� et avec lui apparaissait InterfaceBuilder. Cet outil permettait de construire une interface graphique pour votre application dans un temps tr�s bref et avec une grande facilit�. A partir de l�, ce genre d'outil s'est multipli�. Parmi beaucoup d'autres, nous pouvons citer Omnis, 4D, Delphi, Kylix, etc. Quelques uns sont multi-plateformes alors que la grande majorit� est d�di�e � Windos. Mentionnons �galement qu'il existe des outils libres suivant la m�me philosophie, Gtk (Gimp Tool Kit) par exemple. Les Unixes propri�taires proposent aussi ce genre d'outils.
La caract�ristique principale de ces outils c'est que vous n'avez pas besoin d'�crire le code des 200 fen�tres de votre application mais seulement celui servant � g�rer les donn�es.
Que vous aimiez ou non ce type d'outil n'est pas le probl�me. Le temps de d�veloppement est court : c'est un fait (d'o� le nom, "Rapid Application Development").
GNUstep nous propose des outils RAD. Il se nomment Gorm et ProjectCenter. Certes, ces outils sont tr�s "jeunes" mais ils fonctionnent. Regardons-les de plus pr�s.

GNUstep

Pour pouvoir utiliser Gorm et ProjectCenter, vous devez installer GNUstep. Comment le faire n'entre pas dans le cadre de cet article. Vous trouverez tout le n�cessaire sur le site de GNUstep. Ceci inclut le code source, des HOWTOs, des tutoriels, etc.
Vous pouvez aussi jeter un oeil sur ces articles : GNUstep, l'OpenStep open source et GNUMail.app, la preuve de portabilit�.
Les tests pour cet article ont �t� r�alis�s sous FreeBSD 4.7 avec Window Maker 0.80.1 en utilisant gnustep-make-1.5.0, gnustep-base-1.5.0, gnustep-gui-0.8.2 et gnustep-back-0.8.2. Ces derniers sont les versions instables de GNUstep les plus r�centes. Vous pouvez bien s�r utiliser les versions stables si vous pr�f�rez. Enfin, nous avons utilis� le compilateur gcc 3.0.4.

Gorm.app

Gorm signifie Graphic Object Relationship Modeler (ou peut-�tre GNUstep Object Relationship Modeler, comme indiqu� dans le fichier README). C'est un clone de l'InterfaceBuilder de NeXTstep (ou aujourd'hui MacOS X) mentionn� plus haut.
Gorm est l'oeuvre de Richard Frith-Macdonald qui a d�marr� le projet. Aujourd'hui, Gregory Casamento est le nouveau mainteneur et il fait le plus gros du travail avec Pierre-Yves Rivaille. La version actuelle est 0.1.9. Vous pouvez obtenir les derni�res am�liorations par CVS sur http://savannah.gnu.org/projects/gnustep.
Vous pouvez t�l�charger la derni�re version stable � partir du site de GNUstep.
La philosophie de Gorm (et d'InterfaceBuilder) consiste � proposer � l'utilisateur des objets dispos�s sur des palettes et � les glisser sur des fen�tres vides afin de concevoir la partie graphique d'une application.
Les objets peuvent �tre des boutons, des champs, des cases � cocher, des panneaux, etc. Autrement dit, tout ce que vous pouvez ajouter � une fen�tre pour la rendre conviviale. Ensuite vous modifiez ces objets gr�ce aux inspecteurs. Les inspecteurs permettent de changer les attributs, de d�finir des connexions, des tailles, une aide, et de manipuler des classes pour les objets s�lectionn�s. Apr�s avoir cr�� une classe, vous pouvez ajouter des "outlets" ("canaux") et des actions aux objets.
Ensuite vous devez instancier la classe, ce qui cr�e un nouvel objet (l'instance) dans la fen�tre principale de Gorm, et vous connectez les "outlets" et les actions aux composants correspondants. Vous faites ceci en glissant, tout en maintenant la touche Ctrl enfonc�e, depuis l'instance vers l'objet pour connecter les "outlets" et depuis l'objet vers l'instance pour connecter les actions. Enfin, vous cr�ez le squelette des fichiers source de la classe et c'est tout. Nous y reviendrons.

ProjectCenter.app

ProjectCenter, comme le nom l'indique, est le "coeur" d'un projet. C'est un clone de Project Builder trouv� sous NeXTstep et Mac OS X.
ProjectCenter est l'oeuvre de Philippe C.D.Robert et la version actuelle est 0.3.0. Comme Gorm, vous pouvez le t�l�charger depuis le site de GNUstep dans la section Developper apps. Bien s�r, vous pouvez obtenir le dernier CVS : nous l'utilisons pour cet article et il s'agit de la version 0.3.1.
A partir de ProjectCenter vous pouvez cr�er un projet, son interface (en utilisant Gorm), �crire son code source; vous pouvez compiler le projet et l'ex�cuter (le d�bogage n'est pas encore disponible). En bref, vous pouvez g�rer toutes les ressources r�clam�es par le projet : code source, documentation, biblioth�ques, sous-projets, interfaces, etc.
Lorsque vous cr�ez un nouveau projet, vous pouvez choisir son type. Vous avez le choix entre application, "bundle" (paquet), outil, biblioth�que et application Gorm.
Entre autres choses, ProjectCenter vous propose un �diteur dans lequel vous pourrez compl�ter le squelette du code g�n�r� par Gorm.
Comment Gorm et ProjectCenter fonctionnent-ils ensemble ? Tr�s bien, merci !
Plus s�rieusement, nous prendrons deux exemples pour l'illustrer.

Quelques notes

Cet article n'est PAS un tutoriel. L'id�e est de montrer la facilit� d'utilisation de ces outils tout en insistant sur le fait que vous pourrez vous servir du m�me code pour GNUstep (c'est-�-dire un tas de plateformes Unix... et si vous aimez "vous battre", sous Windos aussi) et sous MacOS X. La seule chose que vous aurez � faire c'est de cr�er l'interface pour les diff�rents syst�mes puisque les fichiers nib (InterfaceBuilder ou Gorm) ne sont pas portables (au moins pour l'instant).
L'article sur GNUMail.app mentionn� pr�c�demment montrait la portabilit� du point de vue de l'utilisateur. Celui-ci insiste sur le point de vue du d�veloppeur, toujours avec la portabilit� pr�sente � l'esprit. Autrement dit, dans GNUMail.app nous nous servons du travail de Ludovic et de ses amis et ici nous concevons une application graphique pour GNUstep et MacOS X.
De nombreux tutoriels sont disponibles, que ce soit pour GNUstep ou MacOS X. Vous pouvez acc�der � la plupart de ceux pour GNUstep depuis le site ou depuis http://www.gnustep.net, mais citons-en quelques uns.
- Une application avec Gorm et ProjectCenter par Pierre-Yves Rivaille.
- La page de tutoriels deNicola Pero
- Un tutoriel plus ancien sur la cr�ation d'un �diteur HTML : http://stepwise.com/Articles/Technical/HTMLEditor/
Pour en apprendre davantage, vous pouvez aussi "�plucher" le code source, les fichiers nib, etc, des applications GNUstep existantes (Gorm, ProjectCenter, GNUMail, GWorkspace, etc) et bien �videmment les exemples "gnustep-examples".

Appelons-le "EditeurTr�sSimple"

Parmi les nombreux tutoriels pour MacOS X et InterfaceBuilder disponibles sur Internet, nous utiliserons celui qui suit comme premier mod�le : http://www.macdevcenter.com/pub/a/mac/2001/05/18/cocoa.html. L'auteur, Mike Beam a �crit bien d'autres tutoriels disponibles sur http://www.macdevcenter.com/pub/ct/37.
Pourquoi celui-ci ? Parce qu'il vous permet d'obtenir un �diteur de texte fonctionnel sans �crire la moindre ligne de code. Ceci montre la puissance de ces outils de d�veloppement que ce soit sous MacOS X ou sous GNUstep.
Gr�ce � ProjectCenter et � Gorm, nous cr�ons un tr�s simple �diteur de texte capable de couper, copier, et coller sous GNUstep. Evidemment, nous ne pourrons pas sauvegarder notre travail: rappelez-vous, nous n'�crirons pas une seule ligne de code. Avec ProjectBuilder et InterfaceBuilder sous MacOS X, nous ferons la m�me chose. Certes, il reste beaucoup � faire pour am�liorer cet �diteur mais nous r�serverons cela comme exercice pour le lecteur. Encore une fois, cet article n'est pas un tutoriel !
Allons-y.

Sous GNUstep

Ouvrez ProjectCenter.app et cr�ez un nouveau projet appel� Editor. Choisissez un projet "Gorm Application" en bas de la fen�tre avant de sauvegarder le nom. Ceci vous donne un �l�ment "Interfaces" dans la colonne gauche de ProjectCenter.
Cliquer sur Interfaces affiche Editor.gorm. Double-cliquez Editor.gorm et Gorm.app s'ouvre. S�lectionnez la fen�tre par d�faut (MyWindow) et en utilisant l'inspecteur changez le nom en Editor dans Attributes.
Depuis la palette, glissez une "TextView" sur la fen�tre Editor. La VueTexte (TextView) est l'objet le plus gros dans la palette que vous choisissez en cliquant sur l'ic�ne la plus � droite en haut de la fen�tre Palettes. Redimensionnez l'objet de mani�re � ce qu'il remplisse la fen�tre et c'est tout.
Dans l'inspecteur GormInternalViewEditor (avec le TextView s�lectionn�), choisissez Size et modifiez les valeurs de fa�on � ce qu'elles correspondent � celles de la fen�tre Editor. Celles-ci sont obtenues de la m�me mani�re, en s�lectionnant la fen�tre et en v�rifiant les tailles dans l'inspecteur GormNSWindow. Si vous ne modifiez pas les valeurs X et Y, par exemple, vous ne pourrez pas �crire sur toute la largeur de l'�diteur, que vous redimensionniez la fen�tre ou pas.
Sauvegardez tout depuis le menu Document de Gorm et quittez pour revenir � ProjectCenter. S�lectionnez l'ic�ne "Build" et cliquez sur la nouvelle ic�ne du m�me nom dans la partie inf�rieure de la fen�tre. Tout devrait bien se passer si vous avez d�fini les bonnes pr�f�rences pour le compilateur, le d�bogueur, etc. Par exemple, sous FreeBSD, vous devez remplacer make par gmake (chemin inclus) en cliquant dans l'ic�ne Settings de ProjectCenter. V�rifiez aussi les chemins dans le menu Preferences de ProjectCenter.
Si la compilation a r�ussi (ce devrait �tre le cas !), faites la m�me chose avec Run et vous verrez appara�tre l'application Editor. Amusez-vous avec en �crivant, en coupant, en collant, etc. Bien s�r vous pourrez la relancer plus tard en utilisant la commande openapp.
Combien de temps a dur� l'op�ration ? Je dirais quelques minutes.

Voil� � quoi �a devrait ressembler pendant la phase de cr�ation :

EdDev

et l'application en service :

Editor

Sous MacOS X

Pas grand chose � ajouter puisque vous devez faire la m�me chose que ci-dessus. Voici � quoi �a ressemble pendant la cr�ation de l'interface :

EdDev

Et l'�diteur "au travail" :

Editor

Et maintenant... une application vraiment fonctionnelle

Choisissons un autre exemple de Mike Beam. Cette fois il s'agit d'une application r�ellement fonctionnelle, capable de g�rer des donn�es : un carnet d'adresses. Il est recommand� de lire le tutoriel de Mike pour comprendre comment fonctionne la "chose". De m�me, v�rifiez la liste des tutoriels de Mike puisqu'il propose diff�rentes �tapes du processus de d�veloppement pour une m�me application afin de l'am�liorer.
De nouveau nous cr�ons et ex�cutons l'application sous GNUstep et MacOS X.

Sous GNUstep

Comme vous l'avez fait pour l'�diteur, d�marrez ProjectCenter. S�lectionnez une application Gorm et appelez-la AddressBook. Depuis ProjectCenter lancez Gorm en double-cliquant dans Interfaces -> AddressBook.gorm. Glissez une VueTable (TableView) de la palette vers la fen�tre par d�faut. En d'autres termes suivez les indications de Mike comme vous le feriez sous MacOS X. Vous devrez adapter quelques petites choses parce qu'elles fonctionnent diff�remment dans Gorm et dans InterfaceBuilder.
Par exemple, le nombre de colonnes de la TableView ne peut pas �tre d�fini dans l'inspecteur des attributs de Gorm. Pour faire simple, copiez une colonne et collez-la � c�t� jusqu'� obtenir le nombre de colonnes requis (4 dans notre cas). Vous devriez vous retrouver avec quelque chose de ce genre :

ABdev


Lorsque vous avez termin�, sauvegardez l'ensemble et revenez � ProjectCenter pour taper ou modifier le code. Si vous avez fait des erreurs, Mike fournit les sources compl�tes de l'application. Si vous les t�l�chargez, il vous suffit alors de copier et de coller le code dans vos propres fichiers Controller.m et Controller.h g�n�r�s par Gorm. N'incluez pas (import dans la terminologie Objective C) Cocoa.h puisque c'est r�serv� � MacOS X. Vous pouvez d'ailleurs conserver le squelette "�crit" par Gorm et modifier quelques petites choses. Par exemple, remplacez void par IBAction dans Controller.h et Controller.m. Ajoutez IBOutlet avant l'id des outlets dans Controller.h.
De toute mani�re, si vous pr�f�rez, vous pouvez conserver la totalit� du code propos� : remplacez seulement l'inclusion de cocoa par #import <AppKit/AppKit.h>. Maintenant vous pouvez compiler et ex�cuter l'application.
Voil� : vous pouvez commencer � jouer avec votre nouveau carnet d'adresses.
Voici � quoi il ressemble :

AddressBook

Sous MacOS X

Mike Beam a fait tout le travail: que pourrais-je ajouter ?

Voici une capture lors du processus de d�veloppement sous MacOS X:

ABdev

Voil� l'application :

AddressBook


Alors quoi ? Eh bien, la cr�ation de l'interface a dur� quelques minutes et le code complet repr�sente quelques 2000 octets. Pas mal, non ?
Alors, bien s�r, beaucoup d'am�liorations sont possibles mais l'ensemble fonctionne ! Maintenant vous pouvez jouer avec le code pour obtenir un meilleur carnet d'adresses...

GNUstep et MacOS X

Il est �vident que les outils de d�veloppement de GNUstep ne peuvent pas �tre aussi avanc�s que ceux d'Apple. Apple et NeXT repr�sentent 15 ans d'exp�rience et des centaines de d�veloppeurs. GNUstep est le travail (gratuit) de quelques individualit�s qui doivent faire autre chose pour vivre. Par cons�quent, ne soyez pas surpris de trouver beaucoup plus de classes disponibles dans InterfaceBuilder que dans Gorm. Rappelez-vous, Gorm est � la version 0.1.9 (ou 0.2.0).
De plus, nous avons fait les tests de la mani�re la moins favorable. C'est-�-dire, nous avons "port�" d'OS X vers GNUstep. Il aurait �t� plus facile de le faire dans l'autre sens � cause des diff�rences entre les outils �voqu�es ci-dessus.
Par exemple, porter des applications d�velopp�es sous MacOS X 10.2 serait plus difficile puisque les outils de d�veloppement d'Apple ont beaucoup �volu�. Comme d�j� dit, il y a beaucoup de nouvelles classes ou des classes plus �labor�es.
Toutefois, les outils reposent sur la m�me philosophie qu'ils fonctionnent sous GNUstep ou MacOS X... et GNUstep s'am�liore tous les jours. Il y a une chose que j'appr�cie beaucoup : les gens de GNUstep travaillent vraiment ensemble. Ils s'aident mutuellement pour ce qui concerne les projets individuels mais ils contribuent �galement � l'am�lioration de GNUstep proprement dit. C'est la fa�on de travailler dans le logiciel libre que j'aime. F�licitations pour ce comportement Mr.Fedor et vos amis.

Imaginez...

Le but de cet article �tait de montrer la puissance des outils "RAD" de GNUstep, Gorm.app et ProjectCenter.app. Malgr� leur "jeunesse" ils sont parfaitement capables de vous permettre de d�velopper facilement des applications sympathiques.
De plus, ces outils offrent une fa�on de travailler tr�s plaisante tout en restant efficace. L'Objective C est un langage tr�s compact, et � mon avis, plus facile � apprendre que le C++ pour quelqu'un connaissant le C (je sais, je l'ai d�j� dit !). Ceci permet de d�velopper des applications esth�tiques (certes, c'est une histoire de go�t, mais personnellement j'aime beaucoup) tout en conservant une taille plut�t r�duite.
Je dois reconna�tre que je ne me suis jamais vraiment remis du choc caus� par ma premi�re rencontre avec une machine NeXT. Le fait qu'Apple sorte une version moderne de NeXTstep me ravit. C'est aussi pourquoi je suis un inconditionnel de projets tels que GNUstep ou Window Maker. Toutefois, m�me si j'adore le logiciel libre, je ne suis pas un "int�griste" et par cons�quent je n'ai rien contre le logiciel propri�taire (bon, peut-�tre un peu envers un certain �diteur... mais vraiment un peu !).
GNUstep peut b�n�ficier du travail d'Apple... mais Apple peut b�n�ficier de celui de GNUstep aussi. GNUstep n'est pas un concurrent d'Apple, c'est du logiciel libre. Que je sache, le logiciel libre est largement utilis� dans MacOS X. Ceci pour dire qu'amener encore plus de logiciel libre � Apple ne peut en aucun cas �tre une mauvaise chose. Ce qu'ont fait Ludovic et ses amis avec GNUMail.app est un tr�s bon exemple de ce qui pourrait se produire.
"J'ai fait un r�ve"... Apple fournissait la plupart du code source de ses outils de d�veloppement � GNUstep. Les d�veloppeurs de GNUstep et d'Apple travaillaient ensemble afin de fournir de superbes applications aux utilisateurs d'Unix. Et petit � petit, les gens r�alisaient qu'ils pouvaient vivre sans Windos...
Malheureusement, ce n'�tait qu'un r�ve ;-)
Quoi qu'il en soit, si vous ne connaissez pas GNUstep et ses applications, n'h�sitez pas � les essayer. GNUstep est un environnement de d�veloppement (� ne pas confondre avec un environnement de bureau) et des outils tels que Gorm et ProjectCenter vous fournissent tout le n�cessaire � la cr�ation, � l'invention. En d'autres termes, avec un peu d'imagination, vous pouvez d�velopper des "produits" tr�s diff�rents de ce que nous avons coutume de voir aujourd'hui : des clones d'applications Windos !
Nous vivons une �poque formidable !

Merci...

Aux personnes de GNUstep: A.Fedor, N.Pero, G.Casamento, P.Y.Rivaille, N.Roard, L.Marcotte, R.Frith-Macdonald, P. C.D.Robert, E.Sersale, A.Froloff, F.Kiefer, M.Viviani, M.Guesdon et tous ceux que j'ai oubli� pour le beau travail, qu'il s'agisse du "framework" ou des applications.
Aux personnes de Window Maker : A.Kojima, D.Pascu et leurs comp�res de nous avoir offert une interface NeXTstep libre pour X.
A J.M.Hullot et B.Serlet pour avoir invent� InterfaceBuilder.
A "Steve Jobs INC." pour NeXT, NeXTstep et MacOS X.
A tous ceux non cit�s ici qui ont contribu� � rendre notre vie professionnelle beaucoup moins triste.