Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

46
Collaboration avec des Collaboration avec des projets libres projets libres enjeux, difficultés enjeux, difficultés et bonnes pratiques et bonnes pratiques Olivier BERGER & Christian BAC - GET/INT <[email protected]> JRES 2007

description

Transparents présentés aux JRES 2007

Transcript of Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

Page 1: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

Collaboration avec des Collaboration avec des projets libresprojets libres

enjeux, difficultés enjeux, difficultés et bonnes pratiqueset bonnes pratiques

Olivier BERGER & Christian BAC - GET/INT<[email protected]>

JRES 2007

Page 2: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 2 / 9

Le libre Le libre c'est bon.c'est bon.

Mangez-en !Mangez-en !

<hype mode="on">

Page 3: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 3 / 9

Dans le Dans le libre, on libre, on se fait se fait

vite plein vite plein d'amis !d'amis !

Page 4: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 4 / 9

Mettez votre Mettez votre logiciel sous logiciel sous

GPLGPL

succès assuré !succès assuré !

Page 5: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 5 / 9

Les failles de Les failles de sécu sont sécu sont corrigées corrigées

super vite !super vite !

patch#45678patch#45678

Page 6: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 6 / 9

Les Les contributeurs contributeurs

travaillent travaillent gratuitementgratuitement

vite et bienvite et bien

Page 7: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 7 / 9

La solution à La solution à tous vos tous vos

problèmes de problèmes de développementdéveloppement

......

Page 8: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 8 / 9

le le CrowdSourcingCrowdSourcing

Après Après l'outsourcingl'outsourcing

</hype>

Page 9: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 9 / 9

Foutaise ?Foutaise ?

Page 10: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 10 / 43

Désolé ;-)Désolé ;-)

● Ce n'est pas si simpleCe n'est pas si simple● Le modèle du libre n'est pas magiqueLe modèle du libre n'est pas magique● Il y a de bonnes opportunitésIl y a de bonnes opportunités● On peut en bénéficier pour des projets On peut en bénéficier pour des projets

internesinternes● Une des conditions nécessaires est Une des conditions nécessaires est

d'avoir intégré une stratégie de d'avoir intégré une stratégie de contribution aux projets libres.contribution aux projets libres.

Page 11: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 11 / 43

PlanPlan

● IntroductionIntroduction● Tirer parti des logiciels Tirer parti des logiciels libreslibres

● Conduite de projetConduite de projet● Contribuer : une nécessitéContribuer : une nécessité

Page 12: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 12 / 43

PrésentationPrésentation

● Ingénieur de recherche au GET (Groupe des Ingénieur de recherche au GET (Groupe des Écoles des Télécommunications), à l'INT (Institut Écoles des Télécommunications), à l'INT (Institut National des Télécommunications) à ÉvryNational des Télécommunications) à Évry

● Co-développeur de la plate-forme Co-développeur de la plate-forme PicoForgePicoForge (plate-forme de travail collaboratif libre - (plate-forme de travail collaboratif libre - www.picoforge.org) - Cf. poster JRESwww.picoforge.org) - Cf. poster JRES

● Plusieurs projets de recherche sur le logiciel libre Plusieurs projets de recherche sur le logiciel libre (FP6 IST CALIBRE, GET PFTCR et Contrib 2.0)(FP6 IST CALIBRE, GET PFTCR et Contrib 2.0)

● Adepte et « évangéliste du libre » de longue date, Adepte et « évangéliste du libre » de longue date, mais en congé sabbatiquemais en congé sabbatique

● Wannabe développeur de la distribution Debian Wannabe développeur de la distribution Debian

http://www-public.int-edu.eu/~berger_o/weblog/

Page 13: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 13 / 43

Point de vuePoint de vue

● Organisation utilisatrice des logiciels Organisation utilisatrice des logiciels libreslibres

● Intégration de logiciels libres et de Intégration de logiciels libres et de customisationscustomisations nécessaires aux besoins nécessaires aux besoins internesinternes

● Rationalisation / Mutualisation sur le Rationalisation / Mutualisation sur le moyen termemoyen terme

● Élaboration d'une stratégie de Élaboration d'une stratégie de collaboration avec des projets librescollaboration avec des projets libres

Page 14: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 14 / 43

Tirer parti Tirer parti des logiciels libres ?des logiciels libres ?

Page 15: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 15 / 43

Logiciel libre ?Logiciel libre ?

● « La liberté d'« La liberté d'exécuterexécuter le programme, pour tous le programme, pour tous les usages (liberté 0). les usages (liberté 0).

● La liberté d'La liberté d'étudierétudier le fonctionnement du le fonctionnement du programme, et de l'programme, et de l'adapter à vos besoinsadapter à vos besoins (liberté (liberté 1). Pour ceci l'accès au code source est une 1). Pour ceci l'accès au code source est une condition requise.condition requise.

● La liberté de La liberté de redistribuer des copiesredistribuer des copies, donc d'aider , donc d'aider votre voisin, (liberté 2). votre voisin, (liberté 2).

● La liberté d'améliorer le programme et de La liberté d'améliorer le programme et de publier publier vos améliorationsvos améliorations, pour en faire profiter toute la , pour en faire profiter toute la communauté (liberté 3). Pour ceci l'accès au code communauté (liberté 3). Pour ceci l'accès au code source est une condition requise. » source est une condition requise. »

http://www.gnu.org/philosophy/free-sw.fr.html

Page 16: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 16 / 43

Nombreuses qualitésNombreuses qualités

● Qualités génériques ... déjà connuesQualités génériques ... déjà connues● Qualités particulières d'un logiciel libreQualités particulières d'un logiciel libre

=> à évaluer=> à évaluer– sa licencesa licence– sa communautésa communauté– son code (sa doc, son langage, etc.)son code (sa doc, son langage, etc.)

● Méthodes d'évaluation Méthodes d'évaluation (QSOS, OpenBRR, ...)(QSOS, OpenBRR, ...)

http://fr.wikipedia.org/wiki/Méthode_d'évaluation_de_logiciels_libres

Page 17: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 17 / 43

Intégrer le libre dans les projets Intégrer le libre dans les projets internesinternes

Page 18: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 18 / 43

Degrés d'interaction avec les Degrés d'interaction avec les communautéscommunautés

● utilisation « simple » de solutions utilisation « simple » de solutions packagées correspondant directement packagées correspondant directement au besoin, sans nécessité d'adaptation,au besoin, sans nécessité d'adaptation,

● « customisation » de solutions « customisation » de solutions existantes,existantes,

● intégration lourde de différentes intégration lourde de différentes solutions, packaging et déploiement solutions, packaging et déploiement d'un ensemble plus large, d'un ensemble plus large, potentiellement « mission critical ».potentiellement « mission critical ».

Page 19: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 19 / 43

Conduite de projetConduite de projetAnalyse des besoins

Spécification

Architecture

Conception détaillée

Codage

Tests

Déploiement

?

Page 20: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 20 / 43

Sélection d'un produitSélection d'un produit

● Simplicité et réactivitéSimplicité et réactivité● Ne pas confondre vitesse et Ne pas confondre vitesse et

précipitationprécipitation● Sous-traiter ce qui peut l'êtreSous-traiter ce qui peut l'être● Identifier les éléments critiques et Identifier les éléments critiques et

monter en compétencemonter en compétence● Préférer les solutions déjà packagéesPréférer les solutions déjà packagées

Page 21: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 21 / 43

Maintien en condition opérationnelleMaintien en condition opérationnelle

● Réactivité pour les mises à jourRéactivité pour les mises à jour● Diminuer l'adhérence dans les Diminuer l'adhérence dans les

composants spécifiquescomposants spécifiques

Page 22: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 22 / 43

Stabilisation impossibleStabilisation impossible

● Mises à jour de sécurité permanentesMises à jour de sécurité permanentes● Répétition des mises à jourRépétition des mises à jour● Automatisation souhaitableAutomatisation souhaitable● Diminuer la taille du code spécifiqueDiminuer la taille du code spécifique

Page 23: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 23 / 43

Reverser au projetReverser au projet

● Rendre générique les éléments Rendre générique les éléments spécifiquesspécifiques

● Maintenus à l'extérieurMaintenus à l'extérieur● Améliorés à l'extérieurAméliorés à l'extérieur● Pas besoin de les repackagerPas besoin de les repackager

Page 24: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 24 / 43

DéveloppementDéveloppement

● Rendre générique ce qui peut l'êtreRendre générique ce qui peut l'être● Méthodologie d'intégrationMéthodologie d'intégration

Page 25: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 25 / 43

DéploiementDéploiement

● Support de certains matériels Support de certains matériels (distributions supportées)(distributions supportées)

● Virtualisation (Xen, etc.)Virtualisation (Xen, etc.)● Savoir packagerSavoir packager

Page 26: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 26 / 43

Repackager i810switchRepackager i810switch

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=374638#15

Page 27: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 27 / 43

$ apt-get source i810switchLecture des listes de paquets... FaitConstruction de l'arbre des dépendances Lecture des informations d'état... FaitNécessité de prendre 32,3ko dans les sources.Réception de : 1 http://ftp.fr.debian.org testing/main i810switch 0.6.5-3 (dsc) [593B]Réception de : 2 http://ftp.fr.debian.org testing/main i810switch 0.6.5-3 (tar) [24,3kB]Réception de : 3 http://ftp.fr.debian.org testing/main i810switch 0.6.5-3 (diff) [7376B]32,3ko réceptionnés en 0s (271ko/s)gpg: Signature made ven 22 déc 2006 00:06:16 CET using DSA key ID 0917A9E4gpg: Can't check signature: public key not founddpkg-source : extraction de i810switch dans i810switch-0.6.5dpkg-source : extraction de i810switch_0.6.5.orig.tar.gzdpkg-source : mise en place de ./i810switch_0.6.5-3.diff.gz

$ cd i810switch-0.6.5/

$ wget "http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=15;filename=i810switch_macbook_support.patch;att=1;bug=374638"

$ patch -p1 <i810switch_macbook_support.patchpatching file debian/changelogpatching file i810switch.c

$ dpkg-buildpackage -rfakerootdpkg-buildpackage: source package i810switchdpkg-buildpackage: source version 0.6.5-4dpkg-buildpackage: source changed by Thomas Perl <[email protected]>dpkg-buildpackage: host architecture i386 fakeroot debian/rules cleandh_testdirdh_testroot

...

dpkg-deb : construction du paquet « i810switch » dans « ../i810switch_0.6.5-4_i386.deb ».

Page 28: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 28 / 43

Connaître un projet libreConnaître un projet libre

Page 29: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 29 / 43

Pas que la licencePas que la licence

● CommunautéCommunauté– développementdéveloppement– utilisatriceutilisatrice

● PersonnesPersonnes● Acteurs économiquesActeurs économiques● But, objectifsBut, objectifs● MéthodologieMéthodologie● Qualités propres du codeQualités propres du code

Page 30: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 30 / 43

Rapide panorama d'un écosystèmeRapide panorama d'un écosystème

Développeursamont

(“upstream”)

OpenSuse

DebianDebian

RedHatRedHat

distributions

versions

versions

versions

bugs

bugs

bugs

Utilisateurs

SSIIÉditeurs

packages

bugs

Page 31: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 31 / 43

CommunautésCommunautés

● Bénévoles (motivations)Bénévoles (motivations)● ProfessionnelsProfessionnels● Contractualisation ?Contractualisation ?● RoadmapRoadmap● Stratégie de stabilisation de versionsStratégie de stabilisation de versions● Système d'Assurance QualitéSystème d'Assurance Qualité● LeadershipLeadership

Page 32: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 32 / 43

Enjeux sociauxEnjeux sociaux● Comprendre les règles du jeuComprendre les règles du jeu● Identifier les éléments influentsIdentifier les éléments influents● Motiver des bénévolesMotiver des bénévoles● Faire accepter ses contributionsFaire accepter ses contributions● Impact sur les décisionsImpact sur les décisions● Prouver son implicationProuver son implication● Se faire (re-)connaîtreSe faire (re-)connaître● Anticiper les aleaAnticiper les alea

Page 33: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 33 / 43

Contribuer : une nécessitéContribuer : une nécessité

Page 34: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 34 / 43

Pourquoi contribuerPourquoi contribuer

● Cercle vertueux des contributionsCercle vertueux des contributions● Quasi-obligation du fait des licencesQuasi-obligation du fait des licences● Externalisation de la maintenanceExternalisation de la maintenance● Se faire plaisir et apprendre en vraie Se faire plaisir et apprendre en vraie

grandeurgrandeur● Se faire connaître et reconnaîtreSe faire connaître et reconnaître● Influer sur le pilotage d'un projetInfluer sur le pilotage d'un projet

Page 35: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 35 / 43

C'est l'histoire d'un bugC'est l'histoire d'un bug * From: Olivier Berger < [email protected]> * To: " [email protected]" < [email protected]> * Subject: [sympa-dev] Re: Re: authenticateAndRun for createList not working in SOAP server in 5.3.3 ? * Date: Fri, 21 Sep 2007 16:58:26 +0200

Le vendredi 21 septembre 2007 à 16:29 +0200, Olivier Berger a écrit :> >> > I'm using the soap client in Perl in which I did something like :> > $reponse => > $soap->authenticateAndRun($user_email,$md5,'createList',['essai5','essai5','picoforge_publicproject_members','List> > essai4 of project essai4','essai4'])> > &print_result($reponse);> > called with the listmaster user...> >

Having a look at the createList() code in sympasoap.pm, I see :

...unless ($reject){&Log::do_log('info', 'create_list%s@%sfrom %s refused, missing parameter(s) %s', $listname,$robot,$sender,$reject);die SOAP::Fault->faultcode('Server')->faultstring('Missing parameter')->faultdetail("Missing required parameter(s) : $reject");}

Wouldn't it be :*IF* ($reject){&Log::do_log('info', 'create_list%s@%sfrom %s refused, missing parameter(s) %s', $listname,$robot,$sender,$reject);die SOAP::Fault->faultcode('Server')->faultstring('Missing parameter')->faultdetail("Missing required parameter(s) : $reject");}instead of unless ?

Page 36: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 36 / 43

Bug Sympa dans DebianBug Sympa dans Debian

J+5

Page 37: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 37 / 43J+6

Page 38: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 38 / 43

Committed upstream (branch in SVN)Committed upstream (branch in SVN)

J+6

Page 39: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 39 / 43

Migration vers DebianMigration vers Debian

Accepted sympa 5.3.3-5 (source i386)

Date: Fri, 26 Oct 2007 11:56:09 +0200Source: sympaBinary: sympaArchitecture: source i386Version: 5.3.3-5Distribution: unstableUrgency: lowMaintainer: Stefan Hornburg (Racke) <[email protected]>Changed-By: Stefan Hornburg (Racke) <[email protected]>Description: sympa - Modern mailing list managerCloses: 443802 444188 444304 447721 447945Changes: sympa (5.3.3-5) unstable; urgency=low . * fix createList not invoked from authenticateAndRun on SOAP server (Closes: #444188)

J+7

J+35

Page 40: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 40 / 43

Page 41: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 41 / 43

Comment bien contribuerComment bien contribuer

● Il n'y a pas besoin de savoir coderIl n'y a pas besoin de savoir coder● Assurer une veille régulièreAssurer une veille régulière● Beaucoup d'effort même pour des Beaucoup d'effort même pour des

choses simpleschoses simples● Minimum légal : faire vivre la base de Minimum légal : faire vivre la base de

bugsbugs

Page 42: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

Comment bien contribuer (suite)Comment bien contribuer (suite)

● Accepter des usages sociaux différentsAccepter des usages sociaux différents● Communiquer avant toutCommuniquer avant tout● Jouer le jeu selon les règlesJouer le jeu selon les règles● Eviter l' « abandonware » non déclaréEviter l' « abandonware » non déclaré● Contribuer un nouveau module au bon Contribuer un nouveau module au bon

endroitendroit● Investir dans une forge pour un Investir dans une forge pour un

nouveau logicielnouveau logiciel

Page 43: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 43 / 43

ConclusionConclusion

● Loin de l'exhaustivitéLoin de l'exhaustivité

● Pas un seul modèle : mais quelques Pas un seul modèle : mais quelques bonnes pratiquesbonnes pratiques

● Contribuer est nécessaire pour la survie Contribuer est nécessaire pour la survie du modèle, mais aussi concrètement du modèle, mais aussi concrètement dans les effets utiles aux projets locaux.dans les effets utiles aux projets locaux.

Page 44: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 44 / 43

Méthode QSOS Méthode QSOS http://www.qsos.org/http://www.qsos.org/

Page 45: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 45 / 43

Fiche QSOSFiche QSOS

Page 46: Collaboration avec des projets libres - enjeux, difficultés et bonnes pratiques

O. Berger - JRES 2007 46 / 43

AnnuairesAnnuaires

● Freshmeat Freshmeat http://freshmeat.net/http://freshmeat.net/ (43000 projets)(43000 projets)

● FSF/Unesco : FSF/Unesco : http://directory.fsf.org/http://directory.fsf.org/ (5400 projets)(5400 projets)

● Plume (Promouvoir les Logiciels Utiles Plume (Promouvoir les Logiciels Utiles Maîtrisés et Economiques dans Maîtrisés et Economiques dans l'Enseignement Supérieur et la l'Enseignement Supérieur et la Recherche) : Recherche) : http://www.projet-plume.org/http://www.projet-plume.org/