Logiciels libres - Département d`informatique et de recherche

Transcription

Logiciels libres - Département d`informatique et de recherche
IFT3902 :
(Gestion de projet pour le)
développement, (et la)
maintenance des logiciels
Yann-Gaël Guéhéneuc
Professeur adjoint
[email protected], local 2345
Département d’informatique et de recherche opérationnelle
Université de Montréal
© Yann-Gaël Guéhéneuc 2004
Les logiciels libres
1.
2.
3.
4.
5.
Définitions
Naissance
Gestion de projet
Avantages / inconvénients
Pour approfondir
2/44
1. Définitions
n Free
(1/8)
software : logiciel libre
– Richard Stallman
– 1975 : Emacs au MIT AI Lab.
– 1984 : commencement « officiel » du projet
GNU avec Bison (cf. Yacc)
– 1985 : création de la Free Software Foundation
+ licence GNU GPL
– 1990 : bibliothèque C et interpréteur Bash
– 1996 : première version du noyau Hurd
3/44
1. Définitions
n
(2/8)
Free software : logiciel libre
– Liberté d'exécuter le programme, pour tous les usages
(liberté 0)
– Liberté d'étudier le fonctionnement du programme, et de
l'adapter (liberté 1)
– Liberté de redistribuer des copies, donc d'aider votre
voisin (liberté 2)
– Liberté d'améliorer le programme et de publier vos
améliorations, pour en faire profiter toute la communauté
(liberté 3)
Humanisme (et Trois Lois de la Robotique J)
4/44
1. Définitions
(3/8)
n Open
source software : logiciel avec code
source ouvert
– Eric Raymond
– Deuxième génération de hackers
– 1980 : projet Xanadu (hypertexte)
– 1991 : presque co-inventeur du WWW + New
Hacker’s Dictionary aux MIT Press
– 1997 : « La cathédrale et le bazar »
– 1998 : idée de code source ouvert
5/44
1. Définitions
(4/8)
n Open
source software : logiciel avec code
source ouvert
n
n
n
n
n
n
Redistribution libre
Code source
Travaux dérivés
Intégrité du code source de
l’auteur originel
Pas de discrimination contre
des personnes ou des
groupes de personnes
Pas de discrimination
contres des champs
d’activités
n
n
n
n
Distribution de licence
Licence non spécifique à un
produit
Licence ne doit pas
restreindre d’autres logiciels
Licence doit être
technologiquement neutre
Pragmatisme
6/44
1. Définitions
n En
(5/8)
clair… Un logiciel « libre »
– Est disponible « gratuitement » depuis au moins
une source de diffusion (d’autres sources
peuvent être payantes)
– Peut être utilisé pour des développements
commerciaux ou sans but lucratif, même par
ceux n’ayant pas payé (il peut y avoir des
restrictions)
– Peut être obtenu sous forme de code source
7/44
1. Définitions
(6/8)
n Philosophies
– Proprietary software is legal but illegitimate and immoral. Manufacturing and
using proprietary software causes a lot of unhappy social and psychological
side-effects. The knowledge that a software cannot be shared causes
people to become reluctant to sharing, which is a natural and good part of
living in a human society. The inability of people to modify software for their
own needs, makes them feel helpless, and at the mercy of external
software
– Proprietary software is not illegitimate, just problematic from the economic
sense. Open Source software gives many advantages to the end-users and
is a generally a good thing. Copyleft licenses are important in making sure
certain software is not abused. It is not immoral to use proprietary software,
it's just risky. Using or producing software that is not 100% open-source but
pretty close can be a good idea, depending on its license and the general
attitude of its developers
8/44
1. Définitions
n Philosophies
(7/8)
appliquées
– Licence sous gauche d’auteurs (copyleft)
• GPL
• Pas de dérivés privés sauf pour l’auteur
• Stratégie de marque (branding)
– Licence « ouverte »
• Apache, BSD…
• Possibilité d’ajouter des innovations et de les vendre
en plus du projet
• Renommée, qualité, consistance
9/44
1. Définitions
(8/8)
Voir www.fsf.org/philosophy/categories.html
10/44
Les logiciels libres
1.
2.
3.
4.
5.
Définitions
Naissance
Gestion de projets libres
Avantages / inconvénients
Pour approfondir
11/44
2. Naissance
(1/2)
n Les
logiciels libres / à code source ouvert
implantent (souvent) des normes ouvertes
– Norme Posix → Linux
– Norme TCP/IP → Internet (logiciels BSD)
– Norme HTML → Web
– Norme J2EE → JBoss
– Norme BitTorrent → Azureus
12/44
2. Naissance
n Norme
(2/2)
ouverte
– Documentation
– Implantation de référence
– Tests unitaires
13/44
Les logiciels libres
1.
2.
3.
4.
5.
Définitions
Naissance
Gestion de projets libres
Avantages / inconvénients
Pour approfondir
14/44
3. Gestion de projet
(1/20)
n Pas
de processus de développement
« formalisé »
n Structure
externe toujours par projet
n Structure interne peut être contrôle
centralisé, décentralisé, egoless
programming team
15/44
3. Gestion de projet
n Emacs
(2/20)
(www.gnu.org/software/emacs/)
– Depuis 1975 ! J
– Télécharger le code source
– Écrire une « rustine »
– Soumettre à [email protected]
16/44
3. Gestion de projet
n Emacs
(3/20)
(www.gnu.org/software/emacs/)
– Revue par quelqu’un ?
– Incorporée ?
– Le développement se fait de manière assez
anarchique
17/44
3. Gestion de projet
n XEmacs
(4/20)
(www.xemacs.org)
– Télécharger le code source
– Écrire une « rustine »
– Soumettre à [email protected]
– Revue par les membres du conseil
18/44
3. Gestion de projet
n XEmacs
(5/20)
(www.xemacs.org)
– Chaque membre du conseil connaît un domaine
précis (?)
• Support Cygwin
• Mule
• …
Et a accès seulement à son domaine
19/44
3. Gestion de projet
n Linux
(6/20)
(www.tux.org, vger.kernel.org)
– Télécharger le code source
– Écrire une « rustine »
– Soumettre à [email protected] (ou
autre liste de diffusion)
– Revue par les lieutenants de Linus Torvald
– Envoyé à Linus Torvald qui centralise
l’application des rustines
20/44
3. Gestion de projet
n Linux
(7/20)
(www.tux.org, vger.kernel.org)
– Linus Torvald semble déléguer le contrôle de
plus en plus à ses lieutenants
21/44
3. Gestion de projet
n Eclipse
(8/20)
(www.eclipse.org)
– Télécharger le code source
– Écrire une « rustine »
– Attacher la « rustine » au bogue associé dans
Bugzilla
22/44
n Eclipse
(www.eclipse.org)
3. Gestion de projets libres
(9/20)
23/44
3. Gestion de projet
n Eclipse
(10/20)
(www.eclipse.org)
– Envoyer la « rustine » à l’équipe concernée et
signer un décharge
– Revue par les développeurs concernés
– Au bout d’un certain temps (et du nombre de
rustines et de leur qualité), un contributeur peut
devenir comitter
– Le contributeur n’est pas obligé de maintenir
son code
24/44
3. Gestion de projet
n Eclipse
(11/20)
(www.eclipse.org)
– Une certaine tendance dans les projets à code
source ouvert « entreprise »
• Une entreprise réalise le noyau
• L’entreprise gère l’addition des rustines des
contributeurs
• Certains contributeurs peuvent contribuer
directement (au mérite)
25/44
3. Gestion de projet
(12/20)
n Mozilla
(www.mozilla.org/hacking/life-cycle.html)
– Télécharger le code source
– Compiler le code source
– Suivre les conventions de programmation
• Règles de style
• Règles de portabilité
– Écrire une « rustine »
– Attacher la « rustine » à un (au) bogue (associé)
dans Bugzilla
26/44
3. Gestion de projet
(13/20)
n Mozilla
(www.mozilla.org/hacking/life-cycle.html)
– Révision par le propriétaire du module réparé
(ou ses collègues)
– Super-révision par un groupe de développeurs
« acharnés »
• <module owner>@<address>.<domain>
• [email protected][email protected]
27/44
3. Gestion de projet
(14/20)
n Mozilla
(www.mozilla.org/roadmap.html)
– Carte routière (au 08/11/04)
28/44
3. Gestion de projet
(15/20)
n Mozilla
(www.mozilla.org/contribute/
hacking/first-bug/)
– Prendre en main le code source
– Écrire des rustines
– Simplifier le code
– Minimiser la taille du code
29/44
3. Gestion de projet
n Mozilla
(16/20)
(www.mozilla.org/tools.html)
– CVS : gestion du code source
– LXR : navigation dans le code source
– Bonsai : contrôle de l’arbre CVS
– Tinderbox : contrôle des « builds »
– Bugzilla : contrôle des bogues
– Doctor : édition des pages web
30/44
3. Gestion de projet
(17/20)
n Mozilla
(www.mozilla.org/projects/marketing/)
– Équipe pour l’identité visuelle de Mozilla
– Lettre de nouvelles
– Documentation de Mozilla
– Les champions de Mozilla (comme au temps
des gladiateurs)
– Par exemple : Firefox (www.spreadfirefox.com) !
31/44
3. Gestion de projet
(18/20)
n SourceForge (www.sourceforge.net)
– Référentiel de projets libres
– Techniques pour développer les projets
•
•
•
•
•
Pages Web
Listes de diffusion
Suivi des bogues
CVS
…
32/44
3. Gestion de projet
(19/20)
n SourceForge (www.sourceforge.net)
– L’administrateur de chaque projet contrôle
• Les permissions des développeurs pour
– Le suivi des bogues
– Les forums de discussion
– Le gestionnaire des tâches
• Tous les développeurs ont accès au serveur CVS
– L’administrateur de chaque projet peut
demander… des dons !
33/44
n SourceForge
: le projet Azureus
3. Gestion de projets libres
(20/20)
34/44
Les logiciels libres
1.
2.
3.
4.
5.
Définitions
Naissance
Gestion de projets libres
Avantages / inconvénients
Pour approfondir
35/44
4. Avantages/inconvénients
(1/5)
n Qualité
– La qualité des projets libres a été jugée
comparable à celle de projets propriétaires
– Les bogues peuvent être corriger plus
rapidement
– Mais tout le monde est un « client » du code
même son développeur originel !
36/44
4. Avantages/inconvénients
(2/5)
n Financement
– « Gratuit » ?
• Mécènes, millionnaires
– Donation
• Temps libre
– Financé par les impôts
• Universités
Voir www.apostate.com/programming/bm-freesoftware.html
37/44
4. Avantages/inconvénients
(3/5)
n Financement
– Fonds privés
• Entreprises
– Sponsorisé par les impôts, par le privé
• Universités, entreprises
• Le système GNU de Richard Stallman
Voir www.apostate.com/programming/bm-freesoftware.html
38/44
4. Avantages/inconvénients
n Retombées
(4/5)
économiques
– L’argent vient de la valeur ajoutée au code
•
•
•
•
•
Mise en boîte
Documentation
Soutient aux usagers
Formation
…
39/44
4. Avantages/inconvénients
n Retombées
(5/5)
politiques
– Microsoft « contre » le Péru
– Une loi pour garantir
• L’accès libre aux informations par les citoyens
• La permanence des données publiques
• La sécurité de l’état et des citoyens
– Une loi obligeant l’état à utiliser des logiciels
libres / à code source ouvert
40/44
Les logiciels libres
1.
2.
3.
4.
5.
Définitions
Naissance
Gestion de projets libres
Avantages / inconvénients
Pour approfondir
41/44
5. Pour approfondir
n Sur
(1/3)
Linux
– Glyn Moody ; Rebel Code: Linux and the Open
Source Revolution ; Perseus Publishing,
January 23, 2001
– www.cs.helsinki.fi/linux/linux-kernel/
2002-13/0063.html
n Sur
les listes de diffusion
– www.catb.org/%7Eesr/faqs/smart-questions.html
42/44
5. Pour approfondir
n Sur
(2/3)
le développement de Linux
– catb.org/~esr/writings/cathedral-bazaar/
n Sur
le financement
– www.apostate.com/programming/bmfreesoftware.html
– www.advogato.org/article/94.html
n Sur
les retombées financières
– www.theopenenterprise.com/story/TOE2002100
8S0002
43/44
5. Pour approfondir
n Sur
(3/3)
la qualité
– www.germane-software.com/~ser/Files/
Essays/FreeCommercial.html
– www.internetnews.com/dev-news/
article.php/2230481
– mysite.fh-coburg.de/~wielandt/OSSIE03/
ossie03-SeidelNiedermeier.pdf
n Sur
les retombées politiques
– www.opensource.org/docs/peru_and_ms.php
44/44