Sunteți pe pagina 1din 23

19/03/2009

13:56

Page 32

dossier \\ Linux

Tout ce qui faut savoirpo


Cest devenu un rituel Programmez !
A loccasion du salon Solutions Linux,
nous prparons un grand dossier Linux/
Open Source. Si dans les dernires
ditions nous avions dvoil les dessous
des grands projets open source
(OpenSuse, Gnome, Ubuntu, Eclipse,
MySQL, OpenOffice), cette anne
nous avons voulu nous concentrer sur le
dveloppeur et pourquoi et comment
dvelopper pour et sur Linux.

John Schreiner/illustrationOnLine.com

32-58

32

PROgrammez ! \\ Avril 2009

32-58

19/03/2009

13:56

Page 33

dossier \\ Linux

ourdveloppersurLinux !
/
s

le
nt

e nombreux lecteurs travaillent sur Windows,


mais Linux intrigue et intresse. Comment
donc y passer sans trop de douleur quand on
est dveloppeur ?
Tout va dpendre du type dapplication que lon dveloppe. Pour un dveloppeur Java, Linux est une
machine de dveloppement comme une autre. De
nombreux outils y sont disponibles. Eclipse ou Netbeans fonctionnent parfaitement dessus. Pour du
dveloppement C++, Linux offre aussi une bonne
plate-forme. Longtemps, Linux a souffert dune image
austre pour le dveloppeur habitu un Visual Studio, Dreamweaver. Les environnements de type
RAD ntaient pas les plus frquents.
Aujourdhui, Linux dispose de plusieurs environnements graphiques trs performants : Eclipse, NetBeans, Ajunta, Kdevelop, Qt-creator, MonoDevelop.
Par contre, sur le dveloppement web pur et le design
web, les choses voluent peu. Il y a quelques annes,
nous avions eu linitiative Nvu, mais qui depuis nest
plus maintenue et nous attendons toujours son successeur. Adobe qui sort Flex et Air pour Linux na visiblement pas prvu de versions Linux de Photoshop,
de Dreamweaver et de lensemble de la Creative
Suite. Il existe bien des petits outils comme BlueFish
mais il manque toujours un outil web complet.
Pour un dveloppeur arrivant sur Linux et ne connaissant pas grand chose notre Tux favori, le monde
Linux peut paratre un peu dconcertant : nombreuses distributions, plusieurs modles de dploiement des applications, diffrentes librairies

dinterface, des implmentations pouvant diffrer


dune distribution une autre, des versions diffrentes, etc. Quand on est habitu Windows ou
MacOS X, cest un peu la panique
Il faut aussi se poser la question de ce que lon veut
faire avec Linux. Est-ce mon nouveau poste de dveloppement ? Quest-ce que je veux dvelopper ? Estce un dveloppement dapplications pour Linux ou un
dveloppement sur Linux (cest--dire des applications qui sont indpendantes du systme comme des
applications web) ? Selon lapplication, les outils et
lapproche changent. Si vous souhaitez dvelopper
une application Linux, vous devrez dj savoir sur
quelle(s) distribution(s) tournera le projet, le langage
que vous souhaitez utiliser. Sans oublier le choix des
librairies (et les versions) et linterface graphique.
Avec tout cela, vous disposerez de votre systme de
dploiement cible Reste installer loutillage ncessaire et apprendre le modle de dveloppement
Linux
Dans ce dossier nous allons traverser lAtlantique
pour un reportage spcial au cur des laboratoires
de recherche et dveloppement de Mozilla, nous
comprendrons comment fonctionnent les Linux Standard Base, le dveloppement dune application avec
Gnome. Sans oublier le tmoignage de dveloppeurs.
Nous mnerons lenqute sur la lgalit du code
source et les problmes lgaux que lon doit considrer dans un projet.
Bon Tux !
Dossier coordonn par Franois Tonic

Avril 2009 \\ PROgrammez !

33

32-58

19/03/2009

13:57

Page 34

dossier \\ Linux

La parole aux dveloppeurs !


Quand on dbute la programmation sur Linux, le dveloppeur non-linuxien peut tre
un peu perdu, ne pas savoir quoi faire. La premire question se poser est : " que
veut-on dvelopper ?. De l, on peut circonscrire les besoins en outils, en librairies.
Puis vient le choix de la distribution Linux prendre pour son dveloppement.
" Le choix dpend du type de besoin et
du type dapplication dvelopper.
Mais les outils restent fondamentalement les mmes dune distribution
une autre. Bref, on aura peu de diffrences ", commente Arnaud Dupuis
(consultant Uperto). Le rel dfi pour
le dveloppeur sera de choisir et de
vrifier les librairies : leurs versions,
les disponibilits sur les distributions. " Mme dans une
distribution, on peut avoir
plusieurs versions. Il faut
vrifier les versions prsentes dans les distributions.
Donc prudence ! ", rsume
Anne Nicolas (director of
Engineering, Mandriva).

Compatibilit,
incompatibilit
Dune manire gnrale, les librairies
peuvent se rvler complexes
grer. Heureusement, il est possible
de se simplifier le travail en utilisant
des outils de vrification, contrlant
les versions, la prsence par dfaut
de telle librairie. La Linux Foundation
dispose de LSB (Linux Standard Base)
et SuSe propose en ligne loutil Build
Service. Mais cela reste un rel souci
pour le dveloppeur, par exemple
entre KDE 3.x et KDE 4 dont le modle rompt radicalement, avec notamment lutilisation des versions de Qt
(librairie graphique) diffrentes. Mais
souvent, le dveloppeur ayant choisi
sa distribution ne va pas aller voir
ailleurs. " Je pense que chacun
campe sur ses position. Il fallait une
entit (Linux Foundation, ndlr) pour
imposer des rgles ", poursuit Anne
Nicolas. Mme si LSB et son outil
AppChecker sont incomplets, ils
aident rellement le dveloppeur. " Il
peut y avoir des problmes de compatibilit mais heureusement, cela est

34

PROgrammez ! \\ Avril 2009

(trs) rare, surtout quand on change


de version majeure comme de Qt 3.3
Qt 4. " nuance A. Dupuis.
Et pour les tests alors, on fait comment ?
Une des solutions est de passer par
des machines virtuelles pour tester les
applications dveloppes, cest pratique
et rapide. Cependant, quand lapplication a une grande dpendance avec le
matriel, mieux vaut une distribution
installe en dur sur un poste.

Sources ou binaires ?
Si votre application est un projet ou si
votre projet dvelopp doit tre
dploy sur des postes de travail, lapproche du package ne sera pas identique. Dans le premier cas, on pourra
alors choisir la distribution des
sources permettant une compatibilit plus grande avec les distributions,
condition que lutilisateur sache les
rcuprer et les compiler.
Dans le cas du binaire, il faut gnrer
les binaires pour chaque systme, ou
tout du moins, vrifier la bonne compatibilit de celui-ci. Quand un client
demande un dveloppement spcifique sur Linux, souvent, il imposera
sa distribution ou harmonisera avec
une unique distribution. Cela simplifiera grandement le dploiement.

Linux : un march
en puissance ?
Si aujourdhui Linux sur le serveur est
commun notamment grce au LAMP,
quen est-il ailleurs ? " Le dveloppeur
sur Linux crot, mais lentement. Le
poste de travail reste en retrait ",
commente A. Dupuis. En entreprise,
le poste de travail Linux commence
se rpandre do la bonne dynamique
actuelle des SSII open source et classiques. Or tant que le poste de travail,
ou que lordinateur Linux ne se dveloppe pas plus auprs du grand public,

les dveloppements dapplication Linux


auront du mal augmenter, mme si
le march connat une croissance surtout auprs des grandes entreprises,
des administrations. Mais si le
nombre dutilisateurs naugmente pas
significativement, les diteurs ne porteront pas leurs outils, faute dun march suffisant

Les outils samliorent


Une des critiques rcurrentes tait le
manque doutils graphiques linstar
dun Delphi, Visual Studio. " Longtemps ce fut une faiblesse. Mais
aujourdhui, nous disposons dIDE perf o r m a n t s : E c l i p s e , Q t C r e a t o r,
Mono ", commente Anne Nicolas.
Effectivement, ct IDE, le dveloppeur sur Linux dispose de trs bons
IDE pour la plupart des dveloppements. Le seul point faible demeure le
dveloppement web avec labsence
dun quivalent Dreamweaver et
doutils de design comparables
Creative Suite dAdobe et Expression
de Microsoft. Cependant, mme si on
dveloppe en C#, ASP.Net ou Flex, les
outils existent. On dispose de Mono et
de Moonlight (quivalent de Silverl i g h t ) . Et Adobe propose depuis
quelques mois les versions Linux de Flex
et de Air.

Comment passer
notre Tux ador ?
Il faut bien entendu se former ou sauto former. Il est trs important de
bien comprendre la structure de
Linux, comment fonctionne la plateforme, les modles de dveloppement, loffre logicielle, le packaging
applicatif (et les diffrences entre les
diffrents formats). Des diteurs,
comme Novell ou Mandriva proposent
des cycles de formations et/ou des
ressources ddis aux dveloppeurs.

32-58

19/03/2009

13:57

Page 36

dossier \\ Linux

Portrait de dveloppeur
Michel Loiseleur est responsable technique OSSA (Linagora).
Dveloppeur et utilisateur Linux et open source, il nous dvoile
ses outils, son quotidien.
Programmez ! :
comment aborder
le dveloppement
d'une application
Linux ? De quelle
manire choisir les outils,
les librairies, voire sa distribution ?
Michel Loiseleur : Le choix est vaste
lorsque l'on veut dvelopper une application Linux. Rien que pour les toolkits graphiques, on dispose de Gtk,
Qt, Tcl/Tk, Mono ou wxWidgets. Ces
toolkits sont accessibles via des bindings pour la majorit
des langages de proLes tests de grammation. Il est de
compatibilit
plus en plus courant de
avec Internet voir sur un poste de traExplorer ou
vail Linux une applicaChrome peution code en plusieurs
vent se faire
langages, avec un
sous Linux,
coeur en C/C++ et des
grce Wine
extensions ou une partie graphique code
dans un langage de script comme le
Python ou le Ruby. On peut citer
comme exemple Amarok ou Battle
For Wesnoth. Concernant les outils,
CMake a fait ses preuves et est la
rfrence pour tout nouveau projet

qui ne veut pas perdre son temps sur


des problmatiques de compilation.
P. ! : Faut-il cibler la distribution, les
librairies, les versions, l'interface,
pour viter tout problme de compatibilit ?
M. L. : C'est effectivement plus
simple, surtout lorsque l'on procde
uniquement la vente de binaires.
Mais ce n'est pas obligatoire, on peut
tout fait inclure les bibliothques
sensibles dans son paquet binaire.
Pour les toolkits graphiques, la rtrocompatibilit binaire est assure sur
l'ensemble des distributions. Autrement dit, une application Gtk 2.12
fonctionnera sur l'ensemble des distributions Linux disposant d'au moins
cette version de Gtk. C'est identique
pour une application Qt.
P. ! : Aujourd'hui, le poste de dveloppement Linux se renforce avec
l'arrive de Flex, Air, Moon, Moonlight, etc. quelles sont encore les
absences d'outils qui peuvent gner
le dveloppeur ?
M. L. : Je n'ai jamais eu utiliser un
outil sous Windows pour dvelopper.

Gnrer sa propre distribution


OpenSuSe en ligne
Novell hberge un service particulirement
intressant : Suse Studio. Pour faire
simple, il permet de crer sa propre distribution SuSe en ligne puis de gnrer le systme que lon peut ensuite distribuer avec
son application, ses donnes, ses utilisateurs, etc. Particulirement simple dutilisation, on peut configurer une base MySQL
dans linterface, mettre en place un autostart dapplication ou encore inclure des
scripts. Le build peut avoir le format iso,
dune machine virtuelle ou encore dun
Linux Live. Et bientt, il sera compatible
avec le cloud computing dAmazon !
Suse Build est trs pratique quand on souhaite livrer un master prt dployer avec

36

PROgrammez ! \\ Avril 2009

des applications spcifiques, ses projets


pour son entreprise, des clients ! Dautre
part, toujours pour aider le dveloppeur,
ladministrateur, Novell propose un autre
service, le Build Service. Il permet de gnrer rapidement des packages pour les distributions Linux en grant les problmes de
dpendances, de versions des librairies,
etc. Le service Build sinterface avec le
SuSe Studio, pratique pour rcuprer
demble des packages. Dautre part, on
peut mettre jour soi-mme les packages
grce un outil en ligne de commande.
Compatible LSB.
Sites : http://en.opensuse.org/Build_Service
http://susestudio.com/

Mme les tests de compatibilit avec


Internet Explorer ou Chrome peuvent
se faire sous Linux, grce Wine qui
a fortement volu depuis le soutien
de Google sur le projet. Un autre outil
trs populaire s'appelle rdesktop, il
permet d'tablir une connexion graphique avec une machine Windows,
en utilisant la technologie Terminal
Server.
P. ! : on parle souvent de petits problmes de compatibilit entre les
distributions, comment les viter ?
M. L. : Pour les bibliothques, il est
recommand d'tre compatible avec
les versions empaquetes sur les
debian stables. Elles reprsentent 20 %
du parc, et sont gnralement les
moins en avance en terme technologique. Elles constituent ainsi une base
de rfrence afin d'obtenir une application qui soit dployable et fonctionnelle sur un grand nombre de
distributions.
P. ! : en quipe, vaut-il mieux dfinir
un master d'outils ou laisser les
dveloppeurs monter leur poste ?
M. L. : Il vaut mieux laisser les dveloppeurs monter leur poste. Par
contre, rien n'empche de mutualiser
les configurations en fournissant des
modles partags pour les environnements populaires.
P. ! : Quelle distribution, conseillezvous, celle qui vous parat la plus
stable ?
M. L. : Les Ubuntu sont trs populaires. Personnellement, je conseillerai
les Fedora, qui sont gnralement
plus intgrs et graphiquement plus
esthtiques. La Fedora est souvent
considre comme instable, mais sa
forte communaut fait que quelques
mois aprs la sortie d'une version
majeure, elle est tout aussi stable que
ses concurrentes.

32-58

19/03/2009

13:57

Page 37

dossier \\ Linux

Bien dbuter le dveloppement


sous Linux
Quentend-on exactement par Linux ? Le terme est devenu flou et dsigne
tantt uniquement le noyau (kernel), la base du systme complet, et tantt
la distribution, voir comme une compilation de logiciels adjoints ce noyau,
et mis en forme pour rpondre diffrents besoins. La premire tape
lorsque lon passe dans lunivers linuxien est le choix de sa distribution.
a distribution GNU/Linux Ubuntu nous semble tout
indique pour bien dbuter. Ubuntu est une distribution stable, facile daccs pour les dbutants car
oriente interface graphique, et qui propose un nombre
de logiciels consquent permettant un emploi instantan.
Cet article traitera donc de la programmation pour les utilisateurs de cette distribution.

Premiers pas
Lutilisation de la console est intressante par bien des
points. Elle permet lutilisateur dexcuter des commandes quil va lui-mme entrer. Bien que cela puisse
rebuter dans un premier temps un utilisateur venant du
monde Windows, trs graphique, cette pratique reprsente trs souvent un gain de temps considrable. Prenons comme exemple la copie de fichiers. Si vous
souhaitez raliser une copie de faon " graphique ", vous
devez vous dplacer jusquau rpertoire contenant votre
fichier, cliquer sur celui-ci pour le copier, puis enfin vous
dplacer jusqu' la destination pour le coller. Pour raliser
cela par le biais de la console il vous suffit dentrer la commande " cp <nom du fichier copier> <destination> ". La
console est disponible graphiquement via un terminal, qui
mule la console. Vous trouverez ce terminal dans le
menu Applications -> Accessories -> Terminal. Vous pourriez penser qucrire entirement la destination du fichier
est plus long que de cliquer directement sur les diffrents
rpertoires, et cest l que lautocompltion intervient.
Lautocompltion permet un utilisateur, lors de la saisie
dune commande, de limiter la quantit dinformations
saisir avec son clavier. Ainsi pour copier un fichier dans le
rpertoire document, il vous suffit dentrer la lettre " d " et
dappuyer sur la touche " tab " de votre clavier, touche permettant lautocompltion par dfaut, et le mot " document "
sauto compltera. Si toutefois, un autre rpertoire commenant par la lettre " d " se trouvait au mme endroit,
lappui rpt sur la touche " tab " permet de switcher
entre les diffrentes possibilits. Parmi toutes les commandes existantes, une est connatre sans doute avant
les autres. Il sagit de la commande " sudo " permettant
lutilisateur de lancer la commande qui suivra en tant
quadministrateur, ce qui sera indispensable pour linstallation de nouvelles applications. Un administrateur possdant plus de droits que lutilisateur lambda, laccs tous

les dossiers lui sera autoris, en loccurrence laccs au


dossier dans lequel se font les installations.

Installation
Linstallation de nouveaux logiciels sous Ubuntu, et sous
Linux en gnral, est des plus simples. Il existe diffrents
moyens sous Ubuntu dinstaller un logiciel " packag ". Le
premier moyen est dutiliser Aptitude ou Synaptic, le
second tant, comme sous Windows, de rechercher ces
" packages " sur Internet et de les tlcharger pour les
installer. Aptitude est un gestionnaire de paquets permettant linstallation, la suppression et la mise jour de logiciels. Il est utilisable en ligne de commande ou avec une
vritable interface interactive. En ligne de commande, il
vous faudra utiliser la ligne suivante " sudo aptitude install
nom_du_paquet ". Ici lapplication Aptitude prend en argument " install ", indiquant que nous souhaitons procder
ici linstallation dun nouveau paquet. " Sudo " quant lui,
permet de lancer lapplication Aptitude en tant quadministrateur comme expliqu prcdemment. Bien sr, cela
ncessite de connatre le nom exact du paquet que lon
souhaite installer. Utiliser Aptitude par son interface graphique permet la recherche de paquets. Lancez donc
Aptitude sans argument, soit " sudo aptitude ", puis utilisez la touche " / " pour exploiter les fonctions de
recherche de paquets. Comme le suggre le menu daide,
utilisez ensuite la touche " + " pour ajouter un paquet la
liste des paquets ajouter, puis la touche " g " pour tlcharger / installer.
Synaptic quant lui est entirement graphique. On peut
lassimiler lutilitaire dajout/suppression de programmes sous Windows. Il permet de rechercher des
paquets et propose aussi dinstaller les dpendances pour
chacun dentre eux. Un paquet peut en effet avoir besoin
dautres paquets pour fonctionner, comme par exemple
des bibliothques particulires. Le lancement de Synaptic
peut se faire via lentre du menu System -> Administration -> Synaptic Package Manager. Quel que soit le gestionnaire de paquets utilis, linstallation se fait
immdiatement aprs le tlchargement.
Dans le dernier cas tlchargement du paquet par un
site Internet -, il suffit la plupart du temps dextraire le
contenu du dossier compress pour que le logiciel soit
directement utilisable. Il arrivera parfois que lutilisateur

Avril 2009 \\ PROgrammez !

37

32-58

19/03/2009

0:04

Page 38

dossier \\ Linux
se retrouve en prsence des sources du logiciel, et non
pas dun fichier binaire directement excutable. Lutilisateur devra alors compiler ce code source, c'est--dire
gnrer les fichiers binaires requis. Pour ce faire, la solution utilise dans la trs grande majorit des cas est une
solution base de Makefile. Un Makefile est gnralement un fichier appel " Makefile " directement exploit
par la commande " make " pour excuter un ensemble
dactions, comme la compilation dun projet, larchivage
de fichiers, la mise jour dun site, etc.

Notre helloworld
Cest au travers de la cration dun projet bas sur le langage de programmation " C " que linitiation ces makefiles se fera. Nous allons raliser un projet bien connu
puisquil sagit dun classique " Helloworld ". Un diteur de
texte sera indispensable et je vous conseille Emacs pour
commencer, outil phare de lunivers du Libre, ainsi que
lutilisation de la console pour prendre de bonnes habitudes. Ouvrez un premier fichier " hello.c " qui contiendra
le corps de la fonction daffichage en lanant la commande " emacs hello.c ", et entrez y les lignes suivantes :
void Hello(void)
{
printf("Hello World\n");
}
Et sauvegardez grce la combinaison de touches Ctrl+x,
Ctrl+s. Ouvrez ensuite un second fichier nomm hello.h,
celui qui contiendra le prototype de votre fonction, c'est-dire les lignes suivantes :
#ifndef HELLO_H
# define HELLO_H
void Hello(void);
#endif
Finalement, afin de conclure notre projet " Helloword " en
C, ouvrez un fichier main.c, fichier contenant notre fonction principale " main " et qui effectuera un appel notre
fonction " Hello " :

38

PROgrammez ! \\ Avril 2009

#include "hello.h"
int main(void)
{
Hello();
return 0;
}
Maintenant que le projet est fini, il nous faut crer un
makefile afin de le compiler et dobtenir un binaire (lquivalent des .exe sous Windows). Ouvrez un fichier que
vous nommerez " Makefile " et insrez-y les lignes suivantes :
hello: hello.o main.o
gcc o hello hello.o main.o
hello.o:
gcc o hello.o c hello.c
main.o:
gcc o main.o c main.c
Les trois mots devant les " : " sont des rgles, comprendre comme commandes. La premire commande
" hello " requiert ici que les commandes hello.o et main.o
soient excutes avant elle pour pouvoir fonctionner. Passons donc la rgle de construction hello.o, celle-ci utilise
le compilateur libre gcc assurant la compilation des
fichiers C. partir du fichier " hello.c ", spcifi ici par loption " -c ", gcc va crer un fichier objet (langage machine).
Ce fichier aura pour nom celui prcis par loption " -o ". Il
en va de mme pour la commande main.o. Une fois ces
deux commandes lances avec succs, la commande
" hello " peut alors sexcuter. Une fois de plus le compilateur Gcc est utilis, cette fois-ci pour crer notre binaire
final nomm " hello " en assemblant les deux fichiers
objets gnrs prcdemment. Une fois le makefile sauvegard, lancez la commande " make " dans votre console, suivie de la commande " ls ", permettant de lister les
rpertoires et fichiers, afin de voir apparatre votre binaire " hello " correctement construit dans votre rpertoire.
Il vous suffit maintenant de lancer votre binaire via un
simple appel la commande " ./hello " qui invoquera votre
programme du mme nom, le point " . " dsignant le

32-58

19/03/2009

13:57

Page 39

rpertoire courant. Loutil make permet aussi de lancer


seulement certaines commandes parmi toutes celles dfinies au sein du fichier (les fameuses " rgles "). En spcifiant simplement le nom de la commande voulue aprs "
make " comme par exemple " make main.o ", qui, tape
dans la console, ne gnre que le fichier " main.o ". Libre
vous de rajouter vos propres rgles. On peut imaginer par
exemple une commande clean telle que ci-dessous :
clean:
rm rf *.o
o " rm " (remove) permet deffacer ici tout les fichiers
dextension " .o " dans loptique de nettoyer le rpertoire
quand on le souhaite via un simple appel " make clean ".
Il y a plusieurs avantages utiliser des fichiers makefile
plutt que de rentrer les commandes de compilation
directement. Le simple fait dcrire ces lignes de compilation une fois pour toutes et de ne pas avoir les r-entrer
chaque modification du code en est un parfait exemple.
Lautre avantage souvent mis en avant est le mcanisme
interne faisant que seuls les fichiers qui le ncessitent
(ayant subi des modifications) sont recompils. Cet avantage pouvant paratre mineur premire vue devient
dterminant lorsque lon travaille sur un fichier avec plusieurs milliers de fichiers.

Dveloppement dun jeu vido


Voici venu le moment de faire vos dbuts dans la cration
dun jeu vido. Maintenant que nous savons crer un projet et comment le compiler, pourquoi ne pas entamer lutilisation de bibliothques permettant dobtenir des
rsultats plus graphiques ? Conjointement au langage C
nous allons ici exploiter la bibliothque SDL qui facilite la
cration dapplications multimdias en deux dimensions.
Nous allons utiliser cette bibliothque pour effectuer la
gestion des vnements (pressions sur les touches du clavier) et lillustre bibliothque OpenGL pour la gnration de
tous nos objets en trois dimensions.
La bibliothque SDL - pour Simple DirectMedia Layer - permet un accs rapide et simple une sortie vido tout en
permettant de grer le son, le clavier et la souris. Nous
sommes alors capables dintercepter pendant lexcution
de notre jeu lappui sur une touche du clavier ou un clic de
souris, pour pouvoir agir en consquence, une fois cet
vnement identifi. On peut donc imaginer la traditionnelle gestion des mouvements via les touches directionnelles
de notre clavier. Quant OpenGL (Open Graphics Library)
il sagit dune interface de programmation (API) proposant
un nombre de fonctions assez consquent pour crer des
objets aussi bien 3D que 2D.
Afin de mieux comprendre comment SDL permet dagir
sur le contenu de votre jeu, c'est--dire les diffrents lments crs grce OpenGL, une explication technique
simpose. SDL va tre le moteur de votre jeu, elle va grer
laffichage de votre fentre de jeu ainsi que les diffrents
vnements. Techniquement, cette gestion se fait laide

32-58

19/03/2009

13:57

Page 40

dossier \\ Linux
dune grande boucle, qui se termine quand vous le dsirez, le mieux bien sr tant la fermeture de lapplication.
Chaque tour de boucle va correspondre un rafrachissement de vos lments OpenGL : mettre jour leur apparence, leur position, leur angle dinclinaison Durant
chaque tour de boucle nous vrifions si un vnement
sest produit ou non, afin de pouvoir effectuer les modifications puis de tout rafficher. Nous pouvons par cette
technique faire natre une impression de mouvement de
diffrents objets.
Commenons par crer un cube grce OpenGL. Utilisez
pour cela la fonction glBegin(GL_QUADS) qui indique que
nous allons tracer un carr pour dessiner la premire
face.
glBegin(GL_QUADS) ;
glColor3d(1.,0.,0.);
glVertex3i(1,1,1);
glVertex3i(1,-1,1);
glVertex3i(-1,-1,1);
glVertex3i(-1,1,1);
Nous utilisons la fonction glColor3d afin de colorer la face
du cube. Comme vous pouvez le remarquer, cette fonction
sutilise sur une face du cube, il est donc possible dobtenir un cube possdant des faces de couleurs diffrentes
au final. Les trois paramtres de cette fonction correspondent aux trois couleurs primaires RGB, dfinies par
des nombres flottants reprsentant lintensit de chaque
composante. Le triplet (1,0,0) donnera ici une face
rouge. Viennent ensuite quatre fonctions glVertex3i qui
instancient des points de lespace, reprsentant les
quatre coins de notre face. Chacun de ces points est
reprsent par trois coordonnes. Effectivement, nous
avons pour but de crer un cube, un lment 3D. Le repre dans lequel se trouvera ce cube tant en 3D, nous
devons prciser chacune des coordonnes de chaque
point. Les trois valeurs en paramtre de la fonction glVertex3i sont les valeurs de x, y et z dans lespace. Lopration ci-dessus devra donc tre rpte six fois, afin de
crer les six faces carres composant un cube. OpenGL
noffre pas seulement la possibilit dassocier une couleur
une face. Il est bien sr possible dy associer une image,

40

PROgrammez ! \\ Avril 2009

une texture, afin dobtenir des lments de dcor raliste.


Vive OpenGL !
A chaque tour de boucle, votre cube sera redessin
lcran. Il nest pas ncessaire de toujours rafrachir tous
les lments composant votre dcor : on peut imaginer
ne rafrachir alors que les lments capables de se mouvoir afin de ne pas ralentir le jeu et viter les calculs
inutiles. Mais pour le moment, notre cube reste inanim
car les paramtres fournis notre fonction de dessin
sont inchangs au cours du temps. Au lieu dutiliser la
fonction glVertex3i(1, 1, 1) avec des valeurs prdfinies, il
nous faudrait donc faire usage de variables, et si loriginalit ne vous effraie pas, je propose glVertex3i(x, y, z). Il est
donc maintenant possible de modifier les valeurs de x, y
ou z chaque tour de boucle, afin de redfinir les coordonnes de chaque point, et de redessiner le cube un
emplacement diffrent dans lespace, en crant ainsi lillusion du mouvement.
Il reste maintenant rcuprer une pression sur une
touche du clavier, et dassocier ce geste au mouvement
dun objet. La bibliothque SDL propose pour cela un
ensemble de macros permettant de savoir quelle action
lutilisateur est en train de raliser. Si nous voulons faire
avancer notre cube laide de la flche " haut " de notre
clavier, il nous suffit de tester chaque tour de boucle que
la touche " up " est presse pour augmenter la profondeur (y) de 1 et ainsi voir le cube sloigner chaque
rafrachissement. On obtiendrait une boucle de ce type :
Case SDL_KEYDOWN :
switch (event.key.keysym.sym){
case SDLK_UP:
y += 1;

draw_cube(x,y,z);
Cela signifie que pendant le tour de boucle, si une touche
est enfonce, et quil sagit de la touche " up " du clavier,
alors la variable " y " est augmente de 1. A la fin de la
boucle, le cube est redessin avec les nouvelles coordonnes, et notre cube se dplace alors dans lespace.
Une fois notre cube capable de se mouvoir, il nous faut
compiler notre projet comme nous lavons fait prcdem-

19/03/2009

13:57

Page 41

dossier \\ Linux
ment. Pour cela, il va falloir relier les bibliothques SDL et
OpenGL notre projet lors de la compilation afin que
toutes les fonctions et macros que nous avons utilises
soient reconnues. Pour nous faciliter la tche, la bibliothque SDL nous fournit deux commandes bien utiles :
" sdl-config cflags " qui servira lors de la cration des diffrents fichiers objets et la commande " sdl-config libs "
qui servira lors de la cration de notre binaire final. En ce
qui concerne OpenGL, nous utiliserons loption l permettant de relier une bibliothque notre projet de la manire
suivante : -lGL. Si votre code ne se trouve que dans un seul
fichier C, nous devrions obtenir un makefile de ce type :
CFLAGS=`sdl-config cflags`
LDFLAGS=`sdl-config libs`
all : main.o
gcc o cube main.o $(LDFLAGS) lGL LGLU
main.o:
gcc o main.o c main.c $(CFLAGS) lGL lGLU

projet a t dvelopp. Des bibliothques peuvent tre


situes des endroits diffrents sur le disque dur par
exemple. Cest ici quintervient lutilit dun fichier de configuration, nomm configure, en plus de votre makefile. Ce
fichier configure est un script excutable permettant de
crer un fichier doptions pour le makefile, souvent
nomm Makefile.rules, dont le contenu diffrera en fonction des distributions sur lesquelles votre projet sera compil. Ce fichier " configure " pourrait faire la diffrence
entre certaines architectures, et ainsi crer des variables
adaptes en fonction de la machine sur laquelle nous
nous trouvons. Le Makefile.rules cr na plus qu tre
inclus dans notre Makefile par le biais de la ligne " include
Makefile.rules " place au dbut de votre Makefile. Si nous
voulions porter notre projet de jeu sur une distribution
Linux telle que Fedora, nous naurions pour ce projet pas
de changements effectuer, mais dans le cadre dun projet plus massif, ncessitant de nombreuses bibliothques
ou dautres programmes, il peut tre utile que le systme
possde bien tous les pr-requis.
Les portes du jeu vido vous sont maintenant ouvertes.
Je laisse votre imagination soccuper des ides de jeux,
de dcors ou de jouabilit que vous recherchez. Il est bien
sr possible dutiliser SDL et OpenGL avec dautres langages que le langage C, je laisse votre convenance le
choix de celui avec lequel vous vous sentez le mieux.
Alexis Ageorges - alexis.ageorges@gmail.com
Etudiant lEPITA, spcialisation Multimdia et Technologie de
linformation.

Ralisation : MATEO

" CFLAGS " et " LDFLAGS " sont ici deux variables dfinies
au dbut du makefile afin dobtenir des commandes plus
facilement comprhensibles au premier coup dil ; les
bibliothques GL et GLU seront relies notre projet
comme nous le souhaitions.
Il peut arriver que vous ayez besoin de faire fonctionner
votre jeu, ou tout autre programme, sur dautres distributions. Les problmes seront rencontrs lors de la compilation sur dautres distributions que celle sur laquelle votre

Tous nos ouvrages sont disponibles en librairie

32-58

9782100518319 368 pages 38

9782100515721 312 pages 34

9782100526741 464 pages 39

9782100523368 560 pages 38

DITEUR DE SAVOIRS

32-58

19/03/2009

13:57

Page 42

dossier \\ Linux

Dveloppement rapide avec


GNOME/GTK+ et Python
Gnome est une des deux plates-formes les plus populaires sous Linux, avec KDE, il est
disponible par dfaut sur la plupart des distributions les plus utilises, comme
Ubuntu, Red Hat, Fedora, OpenSuse et Debian. Le toolkit GTK+ est au cur de
l'environnement GNOME. Il fournit tous les lments ncessaires la gnration
dune interface graphique pour une application : les fentres, les boutons, les listes,
etc. GTK+ n'est pas un langage de programmation en soi, c'est un ensemble d'API,
utilisables avec plusieurs langages de programmation, au travers de ce qu'on appelle
des "bindings.
TK+ et les autres briques de la plate-forme GNOME sont
crits en C la base. Aprs, les dveloppeurs font le
ncessaire pour utiliser ces API dans le langage de programmation de leur choix. Un dveloppeur Java peut ainsi utiliser
la plate-forme GNOME travers les bindings Java-GNOME, un
dveloppeur C# utilisera le binding GTK#, un dveloppeur C++ peut
utiliser la famille de bindings gtkmm (GTK minus minus) et ainsi de
suite. Chaque binding respecte les normes d'utilisation du langage. Le binding Python de GTK+ s'appelle PyGTK. Pour qui connat
un peu GTK+, les normes de nomenclature sont assez simples. La
classe GtkImage, par exemple, est dans l'interface Python comme
gtk.Image. La fonctionvoid

gtk_image_set_from_file(GtkImage *image, const gchar *filename)


se transforme naturellement en
gtk.Image.set_from_file(filename)
Dans cet article, nous allons voir comment utiliser les outils
GNOME, et la plate-forme de dveloppement, pour dvelopper
rapidement des applications simples, permettant des cycles de
dveloppement trs courts, prconiss dans des mthodologies
de dveloppement comme SCRUM ou XP. Ces outils sont parfaitement adapts au dveloppement des premiers prototypes d'applications, mme complexes, grce aux retours d'expriences
rapides. Nous allons crer un diteur de texte simple. La premire
tape sera la cration de l'interface avec l'outil Glade. Glade gnre un fichier XML qui dfinit l'interface, que nous allons charger
par la suite dans notre application, avant de connecter des
signaux des callbacks, afin d'implmenter quelques fonctionnalits de base. Le grand avantage de l'utilisation de Python est bien
sr de navoir pas besoin de faire un processus de compilation.
Comme cest un langage interprt, nous excutons notre application Python simplement avec la ligne de commande :
$ python myscript.py
ou, comme il est normal de faire sous Linux, de rajouter la premire ligne
#!/usr/bin/python

42

PROgrammez ! \\ Avril 2009

et de rendre excutable le fichier myscript.py avant de l'excuter


directement sur la ligne de commande :
$ myscript.py
Les pr-requis
Sur Ubuntu, outre les paquets installs par dfaut, je vous
conseille d'installer les paquets suivants :
python-gtk2
python-gtk2-doc
python-gtk2-tutorial
python-gnome2-extras
python-gnome2-extras-doc
devhelp.
python-gtk2 et python-gnome2-extras installeront l'ensemble des
bibliothques et modules ncessaires pour crer des applications
GNOME en Python. devhelp est un navigateur et lecteur de documentation dveloppeur qui vous installera l'ensemble des documentations de la plate-forme GNOME. C'est un outil indispensable
pour le dveloppeur d'applications GNOME. Les modules pythongtk2-doc, python-gtk2-tutorial et python-gnome2-extras-doc installent des documentationspour les bindings Python. Aprs
l'installation, ils seraient intgrs automatiquement dans le navigateur devhelp. Malheureusement pour les dveloppeurs franais, la
plupart de ces documents ne sont disponible qu'en anglais.

Construire l'interface graphique


Pour crer notre interface graphique, nous allons utiliser l'outil
Glade. Glade est l'application de cration d'interfaces GNOME par
dfaut. Depuis la version 2.12, GTK+ inclut une nouvelle fonctionnalit pour charger dynamiquement des interfaces graphiques,
GtkBuilder. Auparavant, une bibliothque spare, Libglade, a
servi au mme effet, mais cette bibliothque n'est plus officiellement encourage. Malheureusement, les formats de fichiers utiliss par GtkBuilder et Libglade ne sont pas 100% compatibles, et
comme GtkBuilder est trs rcent, au moment ou j'cris ces
lignes, la version stable de Glade ne gnre pas encore de fichiers
en format GtkBuilder. Nous allons donc utiliser un outil inclus dans
les versions de GTK+ rcentes, gtk-builder-convert, pour convertir
les fichiers de type Libglade en fichiers de type GtkBuilder. La pro-

32-58

19/03/2009

0:05

Page 44

dossier \\ Linux
chaine version de glade, 3.5.0, qui devrait voir le jour en mars
2009, gnrera nativement des fichiers GtkBuilder. [Fig.1]
Au premier lancement, nous voyons un espace vide ou nous allons
crer notre application, avec sur la gauche l'ensemble des widgets
GTK+ dont on dispose. La documentation sur les widgets GTK+
est trs complte. Pour rsumer la philosophie GNOME trs rapidement, il y a les widgets de type containers, et les autres. Les
fentres sont des widgets de type GtkWindow, eux-mmes des
containers, qui apparaissent au niveau du gestionnaire de
fentres. A l'intrieur de ces widgets containers, nous pouvons
disposer d'autres widgets de tout type: des boutons, des libells,
des widgets pour l'entre des donnes comme le texte ou les
numros, des images, et ainsi suite. Nous pouvons galement y
mettre d'autres containers, qui leur tour contiendraient des widgets. Pour chacun de ces widgets, il y a des signaux possibles qui
vont tre envoys lorsque nous agissons sur le widget. Par
exemple, pour un widget de type "GtkButton", les signaux suivants
sont mis sur des vnements clavier ou souris: "activate", "clicked", "enter", "leave", "pressed" et "released".
Pour chaque signal, nous avons le choix de laisser le moteur GTK+
grer le signal, ou d'intercepter nous-mmes le signal dans notre
interface, avec une fonction qu'on appelle un "call-back". Pour l'instant, dmarrons notre application. Dans la partie "Niveaux suprieurs", nous avons une slection de fentres de premier niveau
possible, dont une fentre de slection de police ou de slection
de couleurs. Pour notre application, nous allons choisir la fentre
la plus simple.Pour disposer des widgets l'intrieur d'une fentre
il est ncessaire d'utiliser des widgets containers Les containers
les plus couramment utiliss sont des GtkVBox (bote verticale) et
le GtkHBox (bote horizontale). Nous allons insrer une bote verticale dans notre fentre,
Fig.2
avec 3 lments. [Fig.2]
Dans ce VBox, nous allons
rajouter une barre de
menus en haut, une vue
avec dfilement qui
contient une vue de texte
Figure 2: Insertion de GtkVBox
au milieu, puis une barre
d'tat en bas, pour terminer
notre fentre principale. Notre menu de dpart contient quelques
entres que nous n'allons pas utiliser, mais pour l'instant, nous
pouvons les laisser telles quelles. A droite de notre fentre Glade,

nous voyons maintenant une jolie hirarchie de widgets qui s'est


cre, suite notre manipulation. Puis, nous sauvegardons le tout
sous le nom "ProgrammezText.glade". Une fois sauvegard, nous
pouvons le convertir en format GtkBuilder avec la commande :
$ gtk-builder-convert ProgrammezText.glade

Le code complet de lapplication est disponible en tlchargement


sur le site de Programmez. Maintenant, il est temps de charger
notre fentre avec Python, et de regarder quoi ressemble l'application. Avant de dvelopper votre premire application GTK+ en
Python, assurez-vous que Python, PyGTK et toutes ses dpendances sont installes. Dans votre diteur de texte prfr, commencez un fichier ProgrammezText.py.
#!/usr/bin/python
import gtk
class ProgrammezText:
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("ProgrammezText.ui")
self.window = builder.get_object("window1")
builder.connect_signals(self)

editor = ProgrammezText()
editor.window.show()
gtk.main()
Dans ce fichier, avec le constructeur de notre objet ProgrammezText, nous chargeons notre interface ProgrammezText.ui, puis
nous initialisons notre fentre, avant de l'afficher et de passer la
main la boucle d'vnements GTK+.Une fois lance, l'interface
s'affiche, mais quand nous fermons la fentre, notre application
ne se termine pas.De la mme faon, quoi qu'on fasse dans notre
application, rien ne se fait au-del de l'affichage. Pour rendre notre
application utile, nous devons associer du code avec les signaux
qui sont mis par des actions dans l'interface graphique.

Fig.1

Premier ouverture de glade

44

PROgrammez ! \\ Avril 2009

ProgrammezText.ui

Fig.3

ProgrammezText : Notre application prend forme

32-58

19/03/2009

13:58

Page 45

dossier \\ Linux
Faire fonctionner l'interface
Dans Glade, sur la droite, dans l'onglet "Signaux", Nous pouvons
voir toutes les signaux mis par le widget actuellement slectionn. Notre fentre, "window1", contient un signal "destroy" dans la
rubrique GtkObject, qui est mis lors de la fermeture de fentre.
Pour terminer proprement notre logiciel, il faut que nous appelions
le fonction "gtk_main_quit()" ce moment, ce qui permettra
GTK+ de dtruire tous les objets qu'il gre et de quitter proprement l'application. Nous avons deux possibilits pour cela : en cliquant sur "<Saisir ici>", nous avons le choix entre plusieurs
fonctions qui pourraient convenir, dont "gtk_main_quit" et un callback avec un nom spcifique du widget ("on_window1_destroy")
qui est gnr automatiquement. Si nous choisissons
"gtk_main_quit" dans ce menu, nous n'avons plus rien faire pour
fermer proprement notre logiciel. [Fig.4]
Mais imaginons que nous voulions faire un vritable diteur de
texte, il faudrait avertir l'utilisateur lors de la fermeture d'un fichier
modifi, ce qui nous oblige avoir la main. Nous pouvons galement employer cette mme fonction lorsque l'utilisateur choisit
l'entre menu "Quitter". Nous dcidons donc d'utiliser un callback
spcifique, "text_quit", que nous saisissons la main, pour accomplir cette tche. Puis nous sauvegardons notre fichier Glade, et le
convertissons encore une fois en fichier GtkBuilder.
Dans la classe ProgrammezText, rajoutons la fonction :
def text_quit(self, widget, data=None):
gtk.main_quit()

Normalement, si tout va bien, notre application doit se terminer


proprement maintenant.
Pour l'instant, j'ai laiss les noms des objets, et les noms de callbacks par dfaut, mais vous pouvez bien sr modifier les noms
des objets, et mettre la place vos propres noms de fonctions,
selon les normes de programmation que vous utilisez.
Pour terminer cette premire version, nous allons rajouter une
fonctionnalit importante: la sauvegarde de fichier.
Sur l'entre de menu "Fichier/Sauvegarde", je change le nom du

Fig.4

Les signaux dans Glade

32-58

19/03/2009

0:11

Page 46

dossier \\ Linux
widget en "menu_save" pour que ce soit plus facilement reprable,
puis j'y associe le callback "on_menu_save_activate". Ensuite, on
sauvegarde, et on fait encore un passage par gtk-builder-convert.
La fonction de sauvegarde utilise un dialog du slecteur de fichiers
pour permettre l'utilisateur de choisir un rpertoire et un nom
de fichier, avant d'y sauvegarder les contenus de notre buffer de
texte. Dans la mthode __init__, pour nous permettre de mmoriser le nom du fichier en cours, nous rajoutons une ligne :
self.filename = None;
Puis, nous rajoutons la mthode suivante l'objet ProgrammezText :
def on_menu_save_activate(self, widget, data=None):
filename = None;
if self.filename == None:
selecteur = gtk.FileChooserDialog("Sauvegarde...", self.window,
gtk.FILE_CHOOSER_ACTION_SAVE,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_SAVE, gtk.RESPONSE_OK))
reponse = selecteur.run()
if reponse == gtk.RESPONSE_OK: filename = selecteur.
get_filename();
selecteur.destroy()
if filename == None: return
try:
buf = self.textview.get_buffer()
text = buf.get_text(buf.get_start_iter(), buf.get_end_
iter())
f = open(filename, "w")
f.write(text);
forclose()

sier, ou crer un dossier). Puis nous ajoutons deux boutons "Annuler" et "Sauvegarder", auxquels nous attachons des valeurs de
rponses qui seront retourn par l'excution du dialog. [Fig.5]
Par la suite, le dialog est lanc et affich de faon modale (donc,
bloquante pour l'application tant que nous n'avons pas termin
avec), et si l'utilisateur a choisi "Sauvegarder", nous rcuprons le
nom de fichier choisi.
Finalement, nous utilisons l'API de base pour notre text view (GtkTextView) pour rcuprer les contenus du buffer, avant de l'crire
dans le fichier choisi, et denregistrer le nom du fichier dans le
champ filename de notre diteur de texte.
Si par malheur l'criture ne peut pas se faire, nous nous protgeons, et nous montrons l'utilisateur une erreur.
Il est facile d'activer de la mme faon des autres fonctions de
fichier comme l'ouverture de fichier, la sauvegarde lors de la fermeture, ou implmenter une fonctionnalit copier/coller. La suite
est laisse comme exercice pour le lecteur enthousiaste !

Conclusion
Le dveloppement d'applications GNOME avec Python peut tre
trs rapide, grce l'outil Glade et la capacit native de GtkBuilder.
De plus, en utilisant Python, nous vitons un cycle de compilation
onreux, et nous pouvons constater tout de suite les rsultats des
changements effectus. Grce la quantit et qualit des tutoriaux existants pour PyGTK et la qualit de la documentation des
APIs, il est possible d'tre oprationnel trs rapidement. GNOME
contient des bibliothques puissantes, comme DBus pour les messages inter-processus, GStreamer pour la gestion du multimedia,
ou GIO et gvfs pour l'abstraction des systmes de fichiers. Tous
sont disponibles dans des applications Python, permettant la cration rapide d'applications complexes.
Dave Neary - Projet Gnome

Ressources :
self.filename = filename
except:
self.error_message("Erreur lors de sauvegarde de fichier
%s" % filename)
D'abord, nous crons un dialog de type FileChooser (slecteur de
fichiers), qui hritera de notre fentre principale, et qui sera de
type sauvegarde (sachant que plusieurs types de slecteurs de
fichiers sont possibles - ouvrir, sauvegarder, slectionner un dosFig.5

[1] GNOME: http://www.gnome.org


[2] KDE: http://www.kde.org
[3] GTK+: http://www.gtk.org
[4] Java-GNOME: http://java-gnome.sourceforge.net/
[5] GTK#: http://www.mono-project.com/GtkSharp
[6] gtkmm: http://www.gtkmm.org/
[7] Python: http://www.python.org/
[8] GTK+ API: http://library.gnome.org/devel/gtk/stable/
[9] PyGTK documentation: http://www.pygtk.org/reference.html
[10] GtkImage: http://library.gnome.org/devel/gtk/stable/GtkImage.html
[11] gtk.Image: http://www.pygtk.org/docs/pygtk/class-gtkimage.html
[12] gtk_image_set_from_file: http://library.gnome.org/devel/gtk/stable/
GtkImage.html#gtk-image-set-from-file
[13] gtk.Image.set_from_file: http://www.pygtk.org/docs/pygtk/classgtkimage.html#method-gtkimage--set-from-file
[14] Devhelp: http://live.gnome.org/devhelp
[15] GTK+ documentation: http://www.gtk.org/documentation.html
[16] PyGTK tutorial: http://www.learningpython.com/2006/05/07/creatinga-gui-using-pygtk-and-glade/
[17] PyGTK presentation and example programs: http://www.pixel-

Notre application tourne !

46

PROgrammez ! \\ Avril 2009

beat.org/talks/pygtk/

32-58

19/03/2009

0:11

Page 48

dossier \\ Linux

Validez vos applications Linux


avec AppChecker
Concevoir une application Linux qui fonctionne sur toutes les distributions
du march n'est pas trivial. Il y a beaucoup de raisons cela. En premier
lieu, la grande libert qu'ont les dveloppeurs de distribution pour
concevoir leur systme bas sur le noyau GNU/Linux. Il en rsulte des
diffrences de comportement qui font que les applications ne
fonctionneront pas aussi bien sous une distribution que sous une autre. Cet
article est fait pour apporter des lments de rponse aux dveloppeurs qui
ciblent l'environnement Linux. Pour cela, nous allons principalement nous
appuyer sur Appchecker, l'outil de rfrence de la Linux Foundation.

e Linux Standard Base (LSB)


est un projet ralis en collaboration avec diffrentes distributions Linux sous l'gide de la
Linux Foundation. Son objectif consiste en la standardisation de la structure interne des systmes d'exploitation
bass sur le noyau Linux. LSB est
donc une extension de la spcification
POSIX. LSB reprend galement
quelques autres standards tout en
apportant ses propres rgles. La finalit du LSB est de dvelopper et promouvoir un ensemble de spcifications
Fig.1

Fig.2

ouvertes qui permettront terme


d'amliorer la compatibilit entre distributions Linux et ainsi de permettre
aux logiciels de s'excuter sur tout
systme en tant que binaire. Tout cela
sans ncessiter de cycle de compilation spcifique. Au del, le LSB aide
coordonner les efforts de recrutement dans le secteur du logiciel afin
de favoriser le portage et le dveloppement d'applications Linux.
Afin d'assurer un contrle de qualit,
le LSB offre une certification aux produits qui passent avec succs le cycle
de validation. Gage de qualit, cette
certification devrait rapidement tre
adopte par les entreprises et les
professionnels du secteur du logiciel
libre. Bien que la perce soit lente, on
compte dj un certain nombre de
distributions et d'applications certifies. LSB spcifie, par exemple, les
librairies standard, un cer tain
nombre de commandes et d'utilitaires
qui tendent le standard POSIX. Sont
galement spcifis, l'organisation du
systme de fichier, les niveaux d'excution (/etc/init.d), le systme d'impression incluant les spoolers comme
CUPS ainsi que les outils tels que Foomatic et quelques autres extensions
au systme graphique communment
utilis sous Linux : X Window System.

Quelques critiques
malgr tout...
On lui reproche de ne pas prendre en
considration les remarques prove-

48

PROgrammez ! \\ Avril 2009

nant d'organismes externes la fondation Linux tels que le projet Debian.


Un exemple concret : le LSB spcifie
que les packages logiciels doivent
tre sous la forme d'un paquet RPM.
Or, Debian et son format DEB ne souhaite pas changer tout son systme.
L'ide de revoir tout le systme de
gestion logicielle des distributions
semble irraliste ses dveloppeurs.
Cependant Debian inclut tout de
mme un support optionnel pour le
LSB. Ainsi l'utilisateur pourra notamment utiliser l'application Alien qui lui
permettra d'installer les paquets
RPM. La suite de test a galement
t critique plusieurs reprises
pour tre boggue et incomplte. En
2005, Ulrich Drepper a critiqu LSB
pour des tests mal crits qui pouvaient entraner des incompatibilits
entre des composants pourtant certifis par ces tests et des systmes
Linux galement certifis. Heureusement, la couverture des tests a t
amliore depuis et l'outil Linux Application Checker corrige les dfauts
majeurs imputs.

Appchecker :
prsentation de l'outil
Linux Application Checker, ou AppChecker, est un outil rcent qui permet d'aider les dveloppeurs cibler
leurs applications sur Linux. Il se base
sur un framework de tests dvelopp
par l'Acadmie des Sciences Russes
et utilise le travail de la Linux Fonda-

32-58

19/03/2009

0:12

Page 49

dossier \\ Linux
tion en reprenant les rgles prconises par le LSB. Pour l'anecdote,
l'Acadmie des sciences de Russie
est l'origine d'un clbre jeu vido,
Tetris, conu par l'un de ses salaris
Alexey Pajitnov en 1985.
AppChecker analyse les binaires
d'une application et non le code source, ainsi il suffit de faire pointer l'outil
vers l'application analyser. Le systme automatis compare la table de
symbole de l'application avec les librairies connues parmi les 30 du LSB.
Une fois la comparaison termine, un
rapport dtaill est gnr et rfrence l'ensemble des rsultats des
tests. Ces informations donnent aux
dveloppeurs une forte indication de
la capacit de son application fonctionner sur chacune des distributions.
Quelques cas connus de problmes
ne peuvent pas tre dtects ou
entraneront des erreurs alors qu'il
n'y en a pas. Par exemple, l'agencement d'une structure de donnes 64bits sera diffrente de sa version
32-bits. AppChecker n'est pas en
mesure de traiter les diffrences
entre ces deux versions. Un autre
problme : Appchecker ne peut pas
prendre en compte les modifications
mineures apportes la nouvelle version d'un logiciel dans le comportement de ses fonctions.

Installation
Pour utiliser App Checker, vous
devrez crer un compte sur le rseau
de dveloppeurs Linux, dont le site
e s t e n b t a ( http://ldn.linuxfoundation.org). Il s'agit, entre autres, d'un
rseau social qui vous permettra de
maintenir des relations dans le milieu
du dveloppement Linux et de suivre
des blogs, bookmarks et autres flux
RSS. La communaut se veut galement le point d'intersection entre les
dveloppeurs, les vendeurs et les distributeurs d'applications Linux. Le
LDN (Linux Developer Network) est
maintenu par son community manager, Brian Proffit. Celui-ci est connu,
entre autres, pour contribuer l'cosystme du logiciel libre. Il est notamment diteur du site web linuxtoday.com
et a rdig un livre sur le systme
Red Hat. Une fois votre compte cr,
vous pourrez tlcharger l'archive

des outils au format tar.gz. L'outil est


disponible pour diffrentes architectures : x86, s390, PPC... Sur PC
standard, on choisira la version x86.
Ensuite, on va extraire l'archive. Vous
pouvez utiliser la commande tar suivante ou votre bureau Linux si celui-ci
le permet (clic droit puis extraire) :
> tar -xvzf Linux-app-checker-local
-2.0-3.i486.tar.gz
Nous allons maintenant lancer l'application qui est en fait un serveur web
embarqu. Par dfaut le port utilis
est le 8889, vous pouvez cependant
en choisir un autre en le prcisant
dans la ligne de commande :
> ./linux-app-checker/bin/app-che
cker-start.pl 8080
Cette commande va tenter de reconnatre votre navigateur prfr et de
le lancer. Si celle-ci choue, essayez
manuellement de vous connecter
l'adresse http://localhost:8080. Ce serveur sera galement accessible
depuis une autre machine via son
adresse ip ou son nom dans le cas o
un serveur DNS est en place. [Fig.1]

Posix
POSIX ou Portable
Operating Interface
consiste en une
collection de
standards spcifis
par l'organisation
IEEE. Celle ci dfinit
les API relatives au
Shell et aux utilitaires
pour les logiciels
libres ou non
compatibles avec les
systmes Unix. Audel des systmes
Unix, les dveloppeurs
de systmes peuvent
tre amens
respecter ces
standards. C'est le

cas de Windows qui


pour certains points
est conforme avec les
standards de l'IEEE.
POSIX existe depuis
1988 mais ce n'est
que quelques annes
aprs sa cration qu'il
a adopt le nom qu'on
lui connat aujourd'hui,
suite la proposition
de Richard Stallman
pour remplacer le
nom un peu trop
standard du IEEE-IX.
Richard Stallman est
le pre de la fondation
GNU et le
dveloppeur de
nombreux outils open
source.

Fig.3

Prise en main
L'interface web est particulirement
simple prendre en main. Pour illustrer la procdure de validation d'une
application que vous venez de dvelopper, nous allons analyser le programme bash. Pour cela, cliquez sur
Application check dans le menu.
Vous pouvez prsent slectionner
les composants binaires analyser.
Nous allons ajouter le binaire de bash
qui se trouve dans le dossier /bin en
cliquant sur le bouton Select application components.... Vous remarquerez que dans la liste des options, vous
pourrez slectionner la version de la
spcification LSB utiliser. Nous laisserons les paramtres par dfaut
puis nous lanons l'analyse. [Fig.2]
Dans notre cas, l'analyse ne durera
que quelques secondes et nous
aurons peine le temps de prendre
conscience des tests que va excuter
App Ckecker. L'outil est capable d'analyser des paquets RPM, des scripts
Shells, Perl et Python mais galement

Fig.4

Avril 2009 \\ PROgrammez !

49

32-58

19/03/2009

0:12

Page 50

dossier \\ Linux
des librairies ainsi que des excutables ELF. Ici, nous nous trouvons
dans le dernier cas. [Fig.3]
On apprciera le nombre de systmes supports par l'analyse et la
prcision du rapport. En effet, App
Checker ne se limite pas indiquer le
statut d'excution des tests. Il apporte galement les prcisions ncessaires la correction des problmes.
Ici, je suis sur une distribution Ubuntu
8.04. [Fig.4]
Si on regarde le dtail des erreurs
sur Debian 4.0, il apparat clairement
que le binaire bash de cette distribution requiert des interfaces qui ne
sont pas prsentes. Pour obtenir la
certification, il faut passer avec succs l'ensemble des tests sur la totalit des distributions. Vous pourrez
prendre connaissance des informations relatives ce certificat sur l'onglet LSB Certification. Vous pourrez
ensuite envoyer les informations de
certifications sur la plate-forme de la
fondation Linux via l'outil LSB Navigator. Il est possible de comparer les
rsultats de vos tests successifs au
sein de la page Result history qui
reprend l'ensemble des tests que
vous avez effectus localement par le
pass.

Pour aller plus loin


Bien que simple et efficace, l'interface
web ne conviendra pas ncessairement toutes les utilisations. Si vous
faites partie de ceux qui utilisent l'intgration continue, vous allez certainement prfrer employer les scripts en
ligne de commande afin de les intgrer dans des solutions comme Conti-

LSB Distribution Testkit


AppChecker est destin aux dveloppeurs d'application, cependant il
existe son pendant pour les dveloppeurs de distributions Linux : le LSB
Distribution Testkit Manager (LSB DTK Manager). Il consiste galement
en une interface web qui permettra d'excuter l'ensemble des tests au
sein de cet outil unifi. Un outil en ligne de commande permet galement
d'accder aux fonctionnalits de tests dans l'objectif d'apporter la possibilit d'crire des scripts. Son utilisation facilitera l'excution de tests en les
rendant plus attractifs aux dveloppeurs. L'objectif ultime de cet outil est
de certifier les distributions. Xandros Server 2.0 est le premier produit
tre certifi par la fondation Linux grce au LSB Distribution TestKit. Les
fonctionnalits clefs du kit de test sont les suivantes : mise jour
automatique des suites de tests partir du site de la Linux Foundation,
intgration d'un systme de certification, rapports de tests unifis,
l'excution des tests en un clic.

Conclusion
nuum. Cela vous permettra de valider
vos binaires aprs chaque compilation sur vos serveurs d'intgration.
De la mme manire si vous souhaitez crer des cibles de validation dans
vos scripts de compilation (Makefile,
Ant, Maven...), les outils suivants
vous seront utiles :
lsb-appchk
lsb-appchk.pl
lsb-appchk.py
lsb-pkgchk
Ils permettent de tester des programmes (Perl, Python, binaire,
paquets...). Le rsultat sera directement affich dans le Shell. De la
mme manire qu'avec l'interface
web, vous pourrez analyser plusieurs
fichiers et spcifier la version du standard LSB utiliser. Actuellement
nous en sommes la rvision 3.2, la
version 4.0 est pour le moment en
bta.

Continuum : solution d'intgration continue


Apache Continuum est un serveur d'intgration continue destin aux entreprises ayant
en charge de nombreux projets. Cet outil
permet la mise en place de compilations
journalires, de distributions, gestion des
rles et s'intgre avec les outils de compilation les plus populaires : Maven, Ant... ainsi
que les gestionnaires de code source les
plus rpandus. Continuum permet d'industrialiser les processus lis la compilation

50

PROgrammez ! \\ Avril 2009

et l'intgration d'application en phase de


dveloppement. Son utilisation couple
AppChecker pourra permettre de s'assurer
quotidiennement qu'une application Linux
respecte la LSB et pourra s'excuter sans
encombre sur les distributions Linux cibles.
Il existe galement d'autres solutions plus
simples et plus lgres. On peut notamment citer LuntBuild qui est galement
dvelopp en Java.

Parmi les systmes certifis, on peut


citer Oracle Enterprise Linux, openSUSE, Red Hat Enterprise Linux ou
encore Ubuntu. Comme nous avons
pu le voir, AppChecker se destine
aussi bien aux industriels qu'aux dveloppeurs amateurs. La dernire version comprend 1450 tests et le
standard ne cesse d'voluer et de
s'amliorer. Bien que AppChecker soit
une rfrence dans le domaine,
OLVER Core test suite ralise le
mme travail que celui-ci. OLVER
effectue des tests fonctionnels et de
conformit de la majorit des API systmes de Linux. Les tests sont gnrs automatiquement partir des
scnarios de tests et des spcifications formelles. Il y a donc un vritable
environnement de tests et de validations disponible sous Linux. Il est
important pour les dveloppeurs de
s'y intresser afin d'assurer la
meilleure interoprabilit possible.
Loc Guillois

32-58

19/03/2009

0:12

Page 51

dossier \\ Linux

Pourquoi et comment utiliser


Linux Standard Base ?
Il existe plus de 300 distributions
Linux (http://distrowatch.com/). Si
vous voulez distribuer votre logiciel
pour qu'il fonctionne sur toutes ces
distributions Linux, vous devez
rsoudre tout un ensemble
d'incompatibilits entre elles.

n effet, pour une plate-forme matrielle donne,


toutes les distributions Linux utilisent dans la plupart des cas les mmes briques: le noyau Linux,
la glibc, le serveur X11 venant de Xorg... mais elles ne
font pas toujours les mmes choix d'intgration. Par
exemple, elles n'utilisent pas les mmes versions, ne compilent pas les logiciels avec les mmes options, ne placent
pas les fichiers aux mmes endroits, n'installent pas les
mmes logiciels par dfaut... Si l'on veut creuser un peu
plus, en supposant que vous n'utilisiez que des composants distribus par toutes les distributions, vous allez
vous heurter aux formats de diffusion des logiciels et aux
conventions de nommage.

Les packages
de dploiement
Dans le monde Linux, il existe principalement 2 formats
de distribution : les paquetages au format RPM utiliss
par les distributions issues de Red Hat, SuSE, Mandriva
et les paquetages au format DEB utiliss par les distributions issues de Debian et Ubuntu. Il existe des outils de
conversion comme Alien, donc vous pourriez vous dire
que tout est parfait. Mais en fait, le problme ne vient pas
du format en lui-mme, car les formats RPM et DEB sont
assez proches, mais de la faon de les utiliser. L encore
chaque distribution a fait son choix de nommage des
paquetages et si vous voulez dpendre d'un paquetage
pour tre sr d'avoir le bon support dans le systme, et
bien ce sera impossible. Par exemple, le paquetage du
langage Python va s'appeler python dans une distribution
et python2.5 dans une autre. Un autre problme provient
du fait que les distributions n'installent pas toujours les
fichiers aux mmes endroits, donc si vous voulez faire
rfrence ces fichiers cela va tre compliqu. Il y a aussi
des problmes identiques pour les scripts d'initialisation
de services, les descriptions de menus, les soname des
librairies dynamiques...
Une solution utilise par la plupart des projets est de diffu-

ser leurs logiciels sous forme de source. De cette faon,


plus de problme de compatibilit binaire. Cela suppose
que les utilisateurs savent compiler et rsoudre les problmes de dpendance. Une autre faon de faire, qui est
souvent utilise par les gros logiciels sous Linux ou sous
les diffrents UNIX, est de compiler en statique ou de distribuer tous les composants dont vous avez besoin, et
vous en assurez la maintenance et la gestion des alertes
de scurit vous-mme... Si cela n'est pas le cas ou si
vous ne pouvez pas distribuer les sources, la LSB a t
cre pour rsoudre ces problmes.

Qu'est-ce que la LSB ?


LSB est un ensemble de standards crs, sous le
" contrle " de la Linux Foundation (http://www.linux foundation.org/) par diffrents acteurs du monde Linux: distributeurs Linux et diteurs de logiciels. La LSB est base sur
des standards existants comme POSIX et SUS. Quand
des standards n'existaient pas, la LSB a standardis les
usages de fait. La LSB est une faon spciale de fabriquer
les binaires et de construire des paquetages. Pour arriver
cela, les spcifications dfinissent :
comment crer des paquetages et des logiciels pour
qu'ils puissent s'installer et fonctionner partout.
comment viter les collisions de noms avec les autres
diffuseurs de logiciels.
quelles sont les commandes et les librairies dynamiques
prsentes et utilisables par tous les logiciels.
quelles sont les interfaces binaires utilisables (ABI).

Comment utiliser la LSB ?


Pour crer des binaires et paquetages conformes la
LSB, il faut :
Gnrer des binaires ELF.
Utiliser le chargeur LSB qui charge les librairies LSB.
Par exemple sur x86, il faut utiliser /lib/ld-lsb.so.3.
Utiliser uniquement des librairies et des commandes faisant partie de la LSB.

Avril 2009 \\ PROgrammez !

51

32-58

19/03/2009

0:12

Page 52

dossier \\ Linux
Se conformer au standard FHS pour le placement des
fichiers dans l'arborescence.
Utiliser le sous-ensemble LSB des possibilits de RPM.
Pour viter les conflits de nommage, la LSB spcifie d'utiliser un prfixe unique. Pour obtenir un prfixe unique, vous
pouvez enregistrer votre prfixe auprs de l'organisme
LANANA (Linux Assigned Names And Numbers Authority)
l'adresse suivante: http://www.lanana.org/ ou alors utiliser
votre nom de domaine Internet.
Ce prfixe doit tre utilis pour les fichiers et rpertoires:
/opt/<prefix>/ pour les programmes, donnes statiques et librairies.
/var/opt/<prefix>/ pour les donnes dynamiques.
/etc/opt/<prefix>/ pour les fichiers de configuration.
/etc/init.d/lsb-<prefix>-* pour les scripts d'initialisation.
/etc/{crond.d,cron.daily,cron.weekly,cron.monthly}
/lsb-<prefix> pour les crontabs.
Ce prfixe doit aussi tre utilis dans les noms de vos
paquetages de cette manire: lsb-<prefix>-*.

Gnrer des binaires LSB


Vous pouvez utiliser les commandes lsbcc et lsbc++ pour
gnrer des binaires compatibles LSB. Ces commandes
sont en fait des wrappers autour de cc et c++ qui y ajoutent les bons paramtres pour avoir les chemins des
librairies LSB et du chargeur dynamique LSB automatiquement.
Exemple sur une machine x86_64:
$ lsbcc -o prog prog.c
$ ldd prog
libm.so.6 => /lib64/tls/libm.so.6 (0x00002aaaaabc
3000)
libc.so.6 => /lib64/tls/libc.so.6 (0x00002aaaaad
19000)
/lib64/ld-lsb-x86-64.so.3 (0x00002aaaaaaab000)
Si vous avez besoin d'utiliser des librairies non disponibles
dans la LSB, vous avez les choix suivants :
dition de lien statique
Distribuer les librairies avec vos packages.
Utiliser des packages LSB qui fournissent cette librairie.

Packaging
Pour fabriquer des packages RPM compatibles LSB, il
faut dsactiver auto-requires et auto-provides pour viter
de tirer des dpendances du systme et n'avoir que les
dpendances sur les paquetages LSB. Pour cela il faut
mettre cette directive dans votre fichier .spec:
AutoReqProv: no
Il faut ensuite ne dpendre que du package lsb et explicitement des packages dont vous avez besoin:

Requires: lsb >= 3.2, lsb-<whatever>


En option, vous pouvez redfinir les macros suivantes
pour utiliser les macros habituelles de rpm comme
%configure et %makeinstall:
%define
%define
%define
%define
%define
%define

_prefix /opt/<prefix>
_mandir %_prefix/man
_docdir %_prefix/doc
_datadir %prefix/share
_localstatedir /var/opt/<prefix>
_sysconfdir /etc/opt/<prefix>

Scripts d'initialisation
La LSB dfinit des utilitaires pour ajouter ou enlever des
services lancs au dmarrage. Utiliser les commandes
suivantes dans vos scriptlets rpm pour ajouter/supprimer vos services:
if [ $1 = 1 ]; then
/usr/lib/lsb/install_initd
prefix>-<name>
fi
if [ $1 = 0 ]; then
/usr/lib/lsb/remove_initd
prefix>-<name>
fi

/etc/init.d/lsb-<

/etc/init.d/lsb-<

Il faut utiliser les en-ttes suivants dans vos scripts pour


que les commandes install_initd et remove_initd fonctionnent:
### BEGIN INIT INFO
# Provides: lsb-ourdb
# Default-Start: 2 3 4 5
# Short-Description: start and stop OurDB
# Description: OurDB is a very fast and reliable
database
# engine used for illustrating init scripts
### END INIT INFO

Conclusion
La LSB permet d'viter une nouvelle guerre des UNIX ! Elle
permet de fabriquer une fois et d'installer partout ! Dans
ce numro vous trouverez en complment un article sur
AppChecker.
Frdric Lepied
frederic.lepied@splitted-desktop.com

Ancien de la direction technique de


Mandrakesoft (2002-2006), il intgre Intel,
puis en 2008 Splitted-Desktop Systems en qualit de directeur de linnovation. Splitted-Desktop
Systems est spcialis dans le dveloppement
de solutions matrielles et logicielles destins
aux accs et services Internet.

LACTU AU QUOTIDIEN www.programmez.com


52

PROgrammez ! \\ Avril 2009

32-58

19/03/2009

0:12

Page 53

dossier \\ Linux

Mon code est-il lgal ?


Peut-on intgrer sans souci un code source extrieur ? La rponse est NON
surtout si la traabilit de ce code nest pas certaine ou si la licence sous
lequel il est, peut tre incompatible avec la licence envisage du logiciel en
dveloppement. La prudence est de mise.
open source propose des
dizaines de milliers de projets,
plus ou moins actifs et autant
de codes source que lon peut utiliser,
condition de faire attention leur
provenance et la ou les licences utilises. Les dfis sont les suivants :
trouver le bon code, grer les
licences et veiller la scurit du
code. Privilgiez les projets connus.
De plus en plus dapplications sont
dveloppes avec des briques de
diverses origines. On ne compte plus
les projets de dveloppement hybride
mlant du code externe, interne,
ouvert et propritaire. Ces projets
posent des problmes au quotidien :
car il faut intgrer le code extrieur,
sassurer de son niveau de scurit et
de sa qualit.
Il faut trouver le bon code (bonne version, qualit et maturit de celui-ci,
visibilit des licences utilises, voire
des redevances verser) puis valuer
les risques potentiels que lon encourt.
Cela implique de connatre parfaitement son code source, mme quand
on fait du copier / coller et surtout de
dterminer prcisment lorigine de
tout code extrieur mme si un dveloppeur de lquipe en utilise mais ne le
dit pas ! Le moindre doute doit alerter
le dveloppeur, le chef de projet, les
responsables puis les responsables du
service juridique sil y en a un.

Deux pistes
pour veiller la
conformit de son code
Aujourdhui, il existe des entits juridiques spcialises dans la traabilit
du code et dans la gestion des
licences. Soit en cabinet indpendant
soit dans des SSII, ainsi Linagora possde un ple juridique reconnu qui
peut inter venir pour des clients
demandeurs. Lautre solution, les

deux peuvent dailleurs fonctionner de


concert, consiste utiliser un outil de
vrification automatique du code qui :
- sappuie sur une large base de donnes la plus exhaustive possible
- scanne automatiquement du code
pour identifier lorigine des codes, la
licence et les codes potentiellement
litigieux
Un des outils les plus connus est
Black Duck. Un autre diteur propose
aussi un outillage assez similaire :
Palamida. Ces outils sintgrent dans
le processus de dveloppement. Il est
ainsi possible de vrifier que seul le
code dment autoris est prsent

dans le code final. Cela vite bien des


problmes par la suite. Black Duck
dfinit ainsi sa mission : trouver le
code ncessaire, slectionner le code
selon ses critres, approuver le code,
produire le projet avec le code slectionn, valider le code global, monitorer lutilisation du code et de sa
diffusion dans les applications. Pour
assurer une telle mission, lditeur
repose sur une base de donnes particulirement importante : 170 000
projets open source rfrencs, 400
millions de fichiers, plusieurs milliards
de lignes de code, prise en compte de
1 400 licences, 28 000 failles de
scurit rfrences ! Surtout, la
base subit une mise jour constante.
Toutes ces solutions cotent cher,
mais pour une grande entreprise,
cest indispensable. Pour un dveloppeur indpendant, une SSII ou une
PME, un petit diteur, difficile de se
payer une telle prestation mais si un
client demande un rapport sur la proprit intellectuelle du code, vous
devrez le fournir.
Franois Tonic

Nuxeo surveille et audite son code

Nous n'utilisons pas de code de "provenance plus ou moins inconnue". Le choix des
librairies est toujours rflchi, aprs un audit technique et juridique des diffrentes options
qui se prsentent nous, y compris pour crire nos propres librairies. Nous avons la
contrainte que notre projet doit tre sous une licence libre "non-contaminante". Nous
excluons donc par exemple l'usage de composants sous licence GPL et nous privilgions les
licences Apache et LGPL. Dans le doute sur la compatibilit entre deux licences, nous tudions la question en dtail, en allant jusqu' contacter les auteurs pour avoir leur avis et si le
doute persiste, nous nous abstenons de l'utiliser. La dcision d'utiliser telle ou telle bibliothque n'est pas laisse au choix des seuls dveloppeurs, mais implique la direction technique et les architectes seniors du projet. De plus, l'ensemble des dveloppeurs est
sensibilis. Les revues de code continues sont l'occasion de surveiller l'introduction de nouvelles dpendances dans la base de code. Enfin, nous faisons avant chaque version un audit
de toutes les librairies qui sont utilises pour vrifier qu'aucune des rgles n'a t enfreinte
par inadvertance. Nous avons dvelopp un outil, bas sur Maven, qui facilite ce travail
,
nous a confi Stphane Fermigier (Nuxeo).

Avril 2009 \\ PROgrammez !

53

32-58

19/03/2009

0:12

Page 54

dossier \\ Linux

Mtier : dveloppeur Open Source


Libres, passionns, innovants, autonomes. Telles sont les qualits le plus
souvent cites pour les dveloppeurs open source. Des parcours, des
formations, mais aussi des modes de recrutement originaux caractrisent
les spcialistes du Libre.
n ces temps de crise, qui
touche mme les SSII, lOpen
Source semble bien tirer son
pingle du jeu. Pour des raisons conomiques, les entreprises prfrent
recourir des technologies qui nexigent pas un investissement financier
en licences logicielles. Mais limpratif
conomique nest pas le seul facteur
en jeu. " Ce nest pas tant le facteur
cot que la libert, lautonomie, la
souplesse, que recherchent les entreprises ", constate Marine Soroko,
directrice associe de CoreTechs, diteur qui
se dfinit comme
" Open Source
Factory ". Aussi
les diteurs, SSLL
et autres socits
spcialises en logiciel libre ont-ils
pour la plupart des plans dembauche
assez importants. Alter Way prvoit
50 recrutements pour 2009 et une
croissance organique de +25%.
Aprs avoir ralli une centaine de
nouveaux collaborateurs en 2008,
Linagora annonce un plan de recrutement quasi quivalent pour l'anne
2009. Ce sont ainsi des centaines de
nouveaux postes qui vont se crer
dans ce secteur. Les missions sont
trs varies. Depuis la R&D chez les
diteurs, encore trs nombreux, jusqu lintgration chez les SSLL.
Mme les grands acteurs de linformatique (IBM, Oracle, Microsoft) y
prtent une oreille attentive.

Un dveloppement
vers lapplicatif
Lessor de lOpen Source est aussi li
lvolution du march. " Les solutions technologiques arrivent maturit, do il rsulte que le Libre prend
de plus en plus de poids ", souligne
Philippe Montargs, PDG dAlter Way,

54

PROgrammez ! \\ Avril 2009

intgrateur open
source. Et, comme
le rappelle Cdric
Carbone, directeur technique de
Talend, fournisseur de solutions
d'intgration de
donnes open
source : " LOpen
Source a for tement volu, et
donc les profils
aussi.
Aprs
avoir couvert les
champs fonctionPhilippe Montargs
nels de linfrastructure, des rseaux, des systmes
dexploitation, il sest tendu aux
bases de donnes et middleware, et
investit maintenant les outils applicatifs et les couches mtiers (PGI, GRC,
etc.). " Ce que
confirme JeanNol de Galzain,
PDG de Wallix,
spcialiste de la
scurit informatique en open
source : " Le march
a mri sur les applications web, GED,
gestion du contenu, bases de donnes, PGI, GRC, messageries Il y a
une for te demande autour des
couches mtiers. "
Ds lors, aux profils trs techniques
des premiers candidats, succdent
des comptences plus orientes
mtiers. " Nous recherchons des
informaticiens open source qui ont
acquis une exprience mtier pour
parler avec des matrises douvrage ",
prcise Cdric Carbone.
Par ailleurs, alors que les mthodologies dites classiques taient prodigues par de grands diteurs, " les
nouvelles mthodologies, plus lies
des processus (agiles, scrum et

autres mthodes collaboratives),


donnent une longueur davance aux
dveloppeurs open source ", indique
Jean-Nol de Galzain.

LADN du dveloppeur
open source
Il nexiste pas de cursus standard
pour le dveloppeur open source.
Cest un passionn, " autodidacte " du
point de vue des comptences techniques open source, qui a dvelopp
par lui-mme une forte expertise.
L " ADN du dveloppeur open source "
est ainsi dfini par Cdric Carbone :
" Trs passionn, trs motiv, autonome et communiquant en anglais ". La
communication avec la communaut
open source sur le web est, en effet,
un des points caractrisant ce type
de dveloppeur : " En plus dun trs
bon niveau technique, il nest jamais
bloqu car il sait mettre profit des
communauts, utiliser des rseaux
sociaux ", ajoute Cdric Carbone. Car
le march de lOpen Source est mondial. " Nous avons
des clients partout dans le
monde, ce qui
ncessite une
approche mondialise ", confirme
Benjamin Mestrallet,
PDG et fondateur deXo Platform, diteur de logiciel pour la collaboration
en entreprise.
Dans lOpen Source, le travail est souvent trs dcentralis. Aussi de nombreux dveloppeurs tltravaillent,
hors du rseau dentreprise. " Chez
nous, beaucoup de personnes tltravaillent ; ils utilisent des outils de collaboration open source ; ils sont
indpendants trs rapidement ",
rsume Benjamin Mestrallet. Les
socits spcialises dans le Libre
utilisent souvent cette possibilit, en

32-58

19/03/2009

0:12

Page 56

dossier \\ Linux
mettant en place des messageries
instantanes pour faciliter la collaboration entre dveloppeurs. De ce fait,
les changes se font gnralement
en anglais, quelle que soit lorigine du
dveloppeur, car, il faut le souligner,
les socits open source nhsitent
pas faire appel des dveloppeurs
du monde entier.
Laspect cratif et innovateur est
aussi mis en avant par la plupart des
acteurs. Dans le domaine du Libre,
tout change tout le temps, linnovation et la veille technologique sont
donc incontournables. " Dans le
cadre de projets collaboratifs et pour
mettre en place de nouveaux produits, nos ingnieurs R&D peuvent
rapidement concrtiser une ide,
sans contraintes juridiques (pas de
licences, pas de droit dutilisation) ",
indique Jean-Nol de Galzain. " Les
dveloppeurs open source sont motivs par la veille technologique permanente ", remarque David Duquenne,
directeur de division Services & Technologies chez Improve, centre de
comptences Objet, Internet et nouvelles technologies. " Ils matrisent
bien la prospection technologique,
consultent rgulirement les forums
de discussion, connaissent les projets
open source en cours, ils vont cher-

cher linformation directement la


source. " Ce qui compte surtout, pour
Philippe Montargs, " cest limplication, ladhsion aux valeurs du logiciel
libre, et la crativit. "

Des facilits
de recrutement
Les comptences recherches par
les spcialistes de lOpen Source sont
multiples : ingnieurs R&D, chefs de
projet, consultants, techniciens dexploitation, intgrateurs, formateurs...
Mme si les rmunrations peuvent
tre plus faibles que pour les autres
domaines, les acteurs de lOpen Source ne semblent pas avoir de difficults recruter, et pour ce qui
concerne les SSLL le turn-over est
relativement faible par rapport aux
SSII classiques. " Le Libre est un
attrait pour ceux qui cherchent
ajouter cette technologie leur exprience, par exemple dans le cadre
dapplications internet/intranet, de
projets GED, de scurit ", ajoute
Jean-Nol de Galzain. De plus, ils peuvent avoir loccasion de participer
des projets de R&D trs ambitieux,
comme celui auquel participe Wallix
dans le cadre du ple de comptitivit
Systematic. Les candidats sont souvent connus de la socit avant de

faire lobjet de recrutement. La communaut autour dun produit ou dun


diteur peut comprendre plusieurs
milliers de personnes. Ainsi Talend
fait tat de 2 000 3 000 bta-testeurs, sans compter les dveloppeurs
de patches et autres contributeurs,
qui connaissent dj les solutions de
cet diteur et travaillent couramment
avec elles. " Nous faisons des offres
demploi sur les forums de notre communaut ", indique Cdric Carbone.
" Les candidats connaissent dj
notre technologie, notre socit,
notre mode de fonctionnement."
Chez Improve, si lon recrute des profils expriments sur les technologies
rcentes, les juniors font souvent leur
entre via des stages, o ils ont travaill en interne sur un projet de R&D
en open source. Si Alter Way recrute,
comme tout le monde, des profils sortant dcoles dingnieurs, la socit
peut aussi intgrer des candidats
moins diplms, voire des autodidactes : " Nous les faisons monter en
puissance grce nos formations
internes ", prcise Philippe Montargs. " Nous sommes dans une
logique dinvestissement, en vitant
de basculer dans la logique traditionnelle de candidats prts lemploi. "
Claire Rmy

Les 25 erreurs
de programmation
les plus frquentes

EXCLUSIF

complet

Le rapport
en franais

est disponible
sur
www.programmez.com

32-58

19/03/2009

0:12

Page 57

dossier \\ Linux

Au cur du Mozilla Labs


Que reprsente Mozilla Labs ? Avant tout une ppinire dides, les projets labors
aboutiront ou non une fonction, un logiciel. Il sagit de tester des concepts, des
orientations logicielles et de regarder la raction de la communaut, des diteurs,
des dveloppeurs. Cest l que se concoctent quelques ides du futur de Mozilla.

ujourdhui, le Mozilla Labs,


cest : 6 dveloppeurs, 2
designers, 9 intgrateurs,
une cinquantaine de contributeurs
rguliers de la communaut et plus
dune centaine de personnes dans la
partie " concept series ". Le cerveau
de lensemble est bas Mountain
View et Toronto, mme si plusieurs
bureaux locaux sont parpills dans le
monde. Actuellement, une douzaine
de projets sont actifs et voluent au
gr des sessions techniques, des
ides, ou sont laisss tels quels Aza
Raskin, leader de lexprience utilisateur du Labs, nous parle un peu plus
de cette bote ide de lOpen Source.

Programmez ! : comment se droule


une journe type dans les Labs ?
Aza Raskin : il nexiste pas de journe

type au Labs. Chaque jour est diffrent, avec une inspiration diffrente,
un nouveau focus. Pourvu que cela
rende le web (plus) ouvert et contribue amliorer le lieu ou on travaille,
joue, communique.
P. ! : De quelle manire une ide germe, se
construit et comment la fait-on aboutir ?
A.R. : Le Labs est un espace virtuel
o ensemble, on cre quelque chose,
on exprimente, on joue avec les dernires innovations du web, et de la
technologie. Des milliers de personnes participent notre processus
Concept Series [http://labs.mozilla.com/
projects/concept-series/]. Au Mozilla
Labs, nous regardons les gens utiliser le web et nous nous posons la
question : comment pouvons-nous les
aider moderniser, amliorer lex-

p r i e n c e ? Tr o p s o u v e n t , n o u s
sommes tous, en tant quutilisateurs,
tombs dans le pige du " syndrome
de Stockholm " et apprenons aimer
le systme qui nous pige. En observant la faon dont les utilisateurs mettent en uvre le web au quotidien,
nous pouvons crer des innovations
qui peuvent librer lexprience, lusage. Par exemple, Weave nous libre
des contraintes de lutilisation de multiples ordinateurs et terminaux. Avec
Weave, les mots de passe, onglets,
historiques, marque-pages sont automatiquement repris ainsi que lexprience de lutilisateur. Ils le suivent
quels que soient les terminaux utiliss !
On se sent toujours comme la maison. Ubiquity nous libre de la ncessit de jongler entre les sites web et
les tches sont jour. Avec Google,

Une photo de
famille des
quipes, des
contributeurs

Avril 2009 \\ PROgrammez !

57

32-58

19/03/2009

0:13

Page 58

dossier \\ Linux
vous tapez ce que vous voulez trouver. Avec ce projet, vous tapez ce que
vous voulez faire. Le navigateur le fait,
o que vous soyez !
P. ! : lorsquune ide est valide,
comment le projet dmarre-t-il, qui
le dirige et de quelle manire peut-il
aboutir ?
A.R. : De nombreux projets se
ralisent trs rapidement. Coop ou
encore New Tab furent crs en
moins dune semaine ! Dautres,
comme Ubiquity et Weave, possdent

De gauche droite : Aza Raskin, Jonathan


DiCarlo, Dan Mills, Rhian Gracey, Myk Melez

Un coin de bureau des Labs

un impact plus impor tant et se


conoivent sur la dure. La gestion
projet est la mme que pour le reste
de Mozilla et de lOpen Source en
gnral. Chaque projet a un " champion ", nous avons des tlconfrences chaque semaine, des wikis,
des blogs, des chats ! De plus, nos
conversations sont ouvertes et tout le
monde peut y participer.
P. ! : qui dcide de lancer le dveloppement dun projet ? le gre au quotidien ? Qui trouve les dveloppeurs ?
A. R. : Il sagit de linspiration, du feeling. Si une ide ninspire pas les participants ou ne convainc pas un
" champion " den prendre les rnes,
alors nous ne le faisons pas ! Les personnes qui travaillent Mozilla sont
en quelque sorte lchafaudage de la
communaut qui cre, dveloppe,
soutient Firefox. Mozilla Labs est galement un chafaudage. Le leader
dun projet peut sortir de nos rangs
ou venir de lextrieur. Et il peut vivre
nimporte o dans le monde. Le feedback est critique pour les projets du
Labs. Un projet ne vit pas, nvolue
pas dans le vide ! Les ides se transforment au fil du temps !
P. ! : nimporte qui peut-il aider le
Mozilla Labs ?
A. R. : Oui, tout le monde peut participer au Labs. Il rejoindra le Concept
Series. Nous sommes particulirement intresss par les designers
ainsi bien sr, que par les dveloppeurs. Mais pour garder un contact
au plus prs des utilisateurs, de la
ralit, rgulirement (en principe
chaque mois), Mozilla Labs organise
les Labs Nights. Occasion pour discuter des nouvelles volutions, des fonctions, des tendances, recueillir les
sentiments
Franois Tonic

Les projets du Labs


Bespin :
un diteur de code ligne
Le dveloppement sera-t-il en ligne dans quelques
annes ? C'est en tout cas une des tendances
actuelles chez les diteurs. Mozilla lance le projet
Bespin qui est avant tout un framework open
source pour crer un diteur de code. Dans la
version actuelle, il supporte la coloration, les
fonctions basiques d'dition, import / export de
projets, prvisualisation de fichiers, etc.

Weave : une exprience


en dehors des terminaux
Comment garder son exprience utilisateur, ses
marque pages, quel que soit le navigateur et les
terminaux. c'est un vritable dfi technique.
Weave constitue un projet passionnant et stratgique pour le futur de l'internet et de firefox. Comment se rendre totalement indpendant...

Personas :
personnalis l'interface
Comment simplement et rapidement personnaliser l'interface de Firefox ? Pour Labs, la rponse
est Personas. Car le modle actuel est vu
comme trop lourd, trop compliqu. Il faut faire
plus simple, plus intuitif...

Prism :
le site web sur son bureau
Ce projet avait dfray la chronique lors de sa
prsentation. Prism permet depuis son bureau
d'accder son application web depuis le client
Prism install sur son bureau. Le site web est
transform depuis Firefox que l'on rcupre
ensuite dans Prism.

Test Pilot :
l'autre manire de faire des tests
L'un des soucis de Labs et des logiciels en gnral consiste rcuprer et traiter efficacement
les commentaires, les bugs, bref l'ensemble du
feedback. Pour ce faire, Labs a conu Test Pilot
qui se prsente sous la forme d'une extension
Firefox.

Concept Series :
penser l'interface de demain
Labs travaille activement sur l'interface de
demain du web et des logiciels web. Dans cette
section, on retrouve de vritables "concept cars"
qui aboutiront ou non. On y trouve le concept de
l'interface mobile. Et tout le monde peut proposer
son propre concept. Pourquoi pas vous ?
Labs recle encore bien d'autres trsors. N'hsitez pas visiter rgulirement le site officiel pour
les dcouvrir, les tester.

Ambiance dtente travail durant les


soires Labs

58

PROgrammez ! \\ Avril 2009

Site : http://labs.mozilla.com

S-ar putea să vă placă și