IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels Yann-Gaël Guéhéneuc Professeur adjoint guehene@iro.umontreal.ca, local 2345 Département d informatique et de recherche opérationnelle Université de Montréal Yann-Gaël Guéhéneuc 2007
Les logiciels libres 1. Définitions 2. Naissance 3. Gestion de projet 4. Avantages / inconvénients 5. Pour approfondir 2/44
1. Définitions (1/8) Free 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 (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 ) 4/44
1. Définitions (3/8) 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) Open source software : logiciel avec code source ouvert Redistribution libre Distribution de licence 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 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 (5/8) En 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) 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 (7/8) Philosophies 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. Définitions 2. Naissance 3. Gestion de projets libres 4. Avantages / inconvénients 5. Pour approfondir 11/44
2. Naissance (1/2) 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 (2/2) Norme ouverte Documentation Implantation de référence Tests unitaires 13/44
Les logiciels libres 1. Définitions 2. Naissance 3. Gestion de projets libres 4. Avantages / inconvénients 5. Pour approfondir 14/44
3. Gestion de projet (1/20) Pas de processus de développement «formalisé» Structure externe toujours par projet Structure interne peut être contrôle centralisé, décentralisé, egoless programming team 15/44
3. Gestion de projet (2/20) Emacs (www.gnu.org/software/emacs/) Depuis 1975! Télécharger le code source Écrire une «rustine» Soumettre à bug-gnu-emacs@gnu.org 16/44
3. Gestion de projet (3/20) Emacs (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 (4/20) XEmacs (www.xemacs.org) Télécharger le code source Écrire une «rustine» Soumettre à xemacs-patches@xemacs.org Revue par les membres du conseil 18/44
3. Gestion de projet (5/20) XEmacs (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 (6/20) Linux (www.tux.org, vger.kernel.org) Télécharger le code source Écrire une «rustine» Soumettre à linux-kernel@vger.kernel.org (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 (7/20) Linux (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 (8/20) Eclipse (www.eclipse.org) Télécharger le code source Écrire une «rustine» Attacher la «rustine» au bogue associé dans Bugzilla 22/44
23/44 3. Gestion de projets libres (9/20) Eclipse (www.eclipse.org)
3. Gestion de projet (10/20) Eclipse (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 (11/20) Eclipse (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) 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) 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> reviewers@mozilla.org staff@mozilla.org 27/44
3. Gestion de projet (14/20) Mozilla (www.mozilla.org/roadmap.html) Carte routière (au 08/11/04) 28/44
3. Gestion de projet (15/20) 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 (16/20) Mozilla (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) 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) 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) 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
34/44 3. Gestion de projets libres (20/20) SourceForge : le projet Azureus
Les logiciels libres 1. Définitions 2. Naissance 3. Gestion de projets libres 4. Avantages / inconvénients 5. Pour approfondir 35/44
4. Avantages/inconvénients (1/5) 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) 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) 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 (4/5) Retombées é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 (5/5) Retombées politiques Microsoft «contre» le Péru http://www.theregister.co.uk/2002/05/19/ ms_in_peruvian_opensource_nightmare/ 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. Définitions 2. Naissance 3. Gestion de projets libres 4. Avantages / inconvénients 5. Pour approfondir 41/44
5. Pour approfondir (1/3) Sur Linux Glyn Moody ; Rebel Code: Linux and the Open Source Revolution ; Perseus Publishing, January 23, 2001 www.cs.helsinki.fi/linux/linuxkernel/2002-13/0063.html Sur les listes de diffusion www.catb.org/%7eesr/faqs/smartquestions.html 42/44
5. Pour approfondir (2/3) Sur le développement de Linux catb.org/~esr/writings/cathedral-bazaar/ Sur le financement www.apostate.com/programming/bmfreesoftware.html www.advogato.org/article/94.html Sur les retombées financières www.theopenenterprise.com/story/toe2002100 8S0002 43/44
5. Pour approfondir (3/3) Sur 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 Sur les retombées politiques www.opensource.org/docs/peru_and_ms.php 44/44