Transcript
Page 1: Introduction aux logiciels libres

Logiciels libres

Olivier Berger, TELECOM SudParis - Département INF<[email protected]>

Telecom SudParisCSC4522 / DSI - 2010/06/10

Page 2: Introduction aux logiciels libres

page 2

Présentation personnelle

● Ingénieur de Recherche au département INF à TELECOM & Management SudParis (B 303)

● Projets de R&D sur le logiciel libre (CALIBRE, HELIOS, COCLICO, ...)

● Contributeur à la distribution Debian

● Recherche : plate-formes de développement collaboratif de logiciels (forges)

● Google est mon ami, mais au cas où :http://www-public.it-sudparis.eu/~berger_o/http://www-public.it-sudparis.eu/~berger_o/weblog/

Page 3: Introduction aux logiciels libres

page 3

Sondage rapide

● Déjà eu des cours sur le sujet ?

● Logiciel libre ?

● Linux ?

● GNU ?

● FSF ?

● APRIL, AFUL, etc. ?

● Firefox ?

● Ubuntu ?

● Creative Commons ?

● SourceForge ?

● Bugzilla ?

Page 4: Introduction aux logiciels libres

page 4

Objectif de cette conférence

● Donner une idée des enjeux liés à la collaboration dans les projets libres

● Rappel des fondamentaux du modèle libre

● Démythifier un modèle loin d'être magique

● Quelques pistes permettant d'intégrer le libre dans les projets industriels

Page 5: Introduction aux logiciels libres

page 5

Contenu

Introduction générale

Page 6: Introduction aux logiciels libres

page 6

Pourquoi ?

Page 7: Introduction aux logiciels libres

page 7

Le logiciel libre incontournable

● Semble simple

● Loin d'être si simple

● Processus humains plus que technologiques

● Pluri-disciplinaire

● Oportunités

● Risques

Page 8: Introduction aux logiciels libres

Introduction générale sur le libre

● Principes

● Historique

● Aspects juridiques

● Aspects économiques

● Projets / Communautés

● Evaluation outils libres

● Guidelines

Page 9: Introduction aux logiciels libres

page 9

Liberté, égalité, fraternité...

4 libertés

Page 10: Introduction aux logiciels libres

page 10

Définition du logiciel libre

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

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

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

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

Définition de la Free Software Foundation (FSF)

Page 11: Introduction aux logiciels libres

page 11

Terminologie

● Logiciel Libre ~= OpenSource

● Liberté !

● Coût ?

● Autres : freeware, domaine public, shareware, shared source, etc.

● Libre = ouvert ?

● Ne pas se fier aux déclarations : vérifier les licences

Page 12: Introduction aux logiciels libres

page 12

Libre vs. non-libre

● En théorie, identification facile :

● droit d'utilisation : OK - NOK● droit d'étudier : OK - NOK● droit de modifier : OK - NOK● droit de diffuser copies (modifiées) : OK – NOK

● En pratique, parfois complexe (jargon licences)

● Demander aux experts

● Free Software Foundation (http://www.fsf.org/),

● OpenSource initiative (http://www.opensource.org/).

Page 13: Introduction aux logiciels libres

page 13

Logiciel libre

Page 14: Introduction aux logiciels libres

page 14

Logiciel non-libre (Propriétaire)

Page 15: Introduction aux logiciels libres

page 15

Exemples de logiciels libres

● GNU/Linux, FreeBSD, OpenBSD

● Apache

● Perl, PHP, Python

● Java (récent)

● Eclipse, Maven, Hudson

● GNOME, KDE, etc.

● Jonas, Jboss, MySQL, PostgreSQL

● Asterisk

● Videolan

● Firefox, OpenOffice, Thunderbird

● Talend, CPS, XWiki

● etc.

Page 16: Introduction aux logiciels libres

page 16

ValeurS : mouvement logiciel libre

● Philosophie : Liberté, Egalité, Fraternité● Liberté : faire des copies, améliorer, distribuer

● Égalité : mêmes droits pour tout le monde

● Fraternité : Co-opération pour construire des biens communs

● Mouvement « politique »● Éthique, philosophie, activisme politique

● Richard M. Stallman et la FSF (Free Software Foundation : http://www.fsf.org)

● APRIL, en france http://www.april.org/http://stallman.org/

Page 17: Introduction aux logiciels libres

page 17

« Mouvement » Open Source ?

● Approche orientée vers le marché (créé en réaction au mouvement du libre)

● Bénéfices pratiques

● Coûts (ambiguïté free)

● « Mouvement »● Open Source Initiative

(http://www.opensource.org)

● La plupart des industriels de l'informatique, les SS2I, etc.

Page 18: Introduction aux logiciels libres

page 18

● Principes

● Historique

● Aspects juridiques

● Aspects économiques

● Projets / Communautés

● Evaluation outils libres

● Guidelines

Page 19: Introduction aux logiciels libres

page 19

Chronologie

● Au début était le code source (< 80) Unix, BSD (> 80)

● GNU project & Free Software Foundation créés par Richard M. Stallman (> 83/84)

● Noyau Linux créé par Linus Torvalds (> 91)

● Distributions GNU/Linux ( > 95)

● Création de l'APRIL (96)

● IBM entre en jeu (2001)

● Sun rachète StarOffice et création de OpenOffice.org (2002)

● Ubuntu, Firefix 1.0 (2004)

● OpenOffice.org 2.0 (2005)

● Google sponsorise

● Java sous GPL (2007)

● Android, ...

Page 20: Introduction aux logiciels libres

page 20

Le libre est partout

● Internet : Apache, Bind, etc.

● Serveurs (Samba, MySQL, etc.)

● Groupware, CMS, ERP, ETL, etc.

● Appliances, embarqué, grand public

● Nokia 900

● Freebox, Easybox, routeurs, etc.

● Téléphones (Google Android, etc.)

● GPS, ...

● Impots

● Poste de travail des gendarmes, députés AN

● ...

Page 21: Introduction aux logiciels libres

Impact global dans la société

● Impact sur tous les aspects de la production et de la diffusion du savoir, et plus largement tous les artefacts immatériels : ● Publications et données scientifiques (open archives, etc.)

● OpenStreetmap, Wikipedia

● Création artistique : creative commons (CC)

● Entertainment - gratuité ?

● Débat public, démocracie, régulation de l'utilisation des ressources, etc.

● Nouveau paradigme : (Creative) Commons (L. Lessig)

● Des biens publics aux biens communs ?

Page 22: Introduction aux logiciels libres

Résistances

● Copyright / droit d'auteur

● Brevets

● DRM

● FUD

● Hadopi

● ...

Page 23: Introduction aux logiciels libres

page 23

Aujourd'hui incontournable

● 20/25 ans plus tard

● La partie est en voie d'être gagnée

● Mais au fait, comment ça marche !?!

Page 24: Introduction aux logiciels libres

page 24

Qu'est-ce que le logiciel libre ?

● Juridique / Licences

● Organisationnel / Communautés

● Economique / Modèles d'affaires

Pas un seul modèle !

Page 25: Introduction aux logiciels libres

page 25

● Principes

● Historique

● Aspects juridiques

● Aspects économiques

● Projets / Communautés

● Evaluation outils libres

● Guidelines

Page 26: Introduction aux logiciels libres

page 26

Droit d'auteur sur le logiciel

● A la base : le droit d'auteur / copyright

● Similaire à propriété littéraire et artistique

● Fondement : code source

● Ensuite : oeuvres dérivées

● IANAL

Page 27: Introduction aux logiciels libres

page 27

Protection vs. Contrôle

● Comment bien exercer un contrôle ?

● Le Copyright contrôle si● Utiliser

● On peut copier pour donner ou vendre

● (essayer de) Modifier

● Toute autre chose non prévue dans un contrat de licence

● Le libre rééquilibre la donne en faveur des tiers, utilisateurs, concurrents

Page 28: Introduction aux logiciels libres

page 28

Droit d'auteur, licences

● Droit d'auteur :● Prérogatives de l'auteur, faibles

● Conditions d'exploitation (employeur ?), fortes

● Attaché à :● au fichier source, d'abord

● œuvres dérivées (y compris exécutable)

● Régime par défaut : restrictions des droits

● Licence libres établissent des exceptions

● Œuvres composites : compliqué

● Mixibilité des licences ?

Page 29: Introduction aux logiciels libres

page 29

Brevets sur les logiciels

● Le droit d'auteur/copyright ne controle pas si un programme similaire peut être écrit par un tiers

● Le brevet protège une idée

● Au départ destiné à protéger l'intérêt général

● Dérive

● Controverse législative en Europe

Page 30: Introduction aux logiciels libres

page 30

Licences libres

Page 31: Introduction aux logiciels libres

page 31

Catégories de licences libres

● Deux grandes catégories :● Façon « domaine public » (BSD, X11)

● Façon « Copyleftées »

● Copyleftées (GPL, LGPL):● Liberté de changer le logiciel

● Impossibilité de changer la licence sur oeuvres dérivées

● Un même logiciel + plusieurs licenses = segmentation des « marchés » (dual license)

● Modèles économiques des éditeurs de logiciels libres

Page 32: Introduction aux logiciels libres

page 32

Points clés

● Question d'oeuvres dérivées

● Edition de liens, etc.

● Pas questions modèle éco, mais seulement copyright

● Compatibilité des licences

● Éviter la prolifération des licences

● Qui est titulaire des droits ?

● SAAS, Cloud computing ? (Affero GPL)

Page 33: Introduction aux logiciels libres

page 33

● Principes

● Historique

● Aspects juridiques

● Aspects économiques

● Projets / Communautés

● Evaluation outils libres

● Guidelines

Page 34: Introduction aux logiciels libres

page 34

$ / €

● Libre == gratuit (oui, mais)

● ROI

● Technologies clés

Page 35: Introduction aux logiciels libres

page 35

Économie du logiciel

● Non rivalité

● Valeur augmente quand on s'en sert (effets de réseau)

● Monopôles

● Création d'un « bien commun »

● Faciliter la réutilisation

● Mutualisation de l'investissement

● Logiciel libre == gratuit (une fois qu'il a été payé)

Page 36: Introduction aux logiciels libres

page 36

Software Wars

Page 37: Introduction aux logiciels libres

page 37

« Bataille » immense

● Réduire les coûts (commoditisation)

● Effets de réseaux pour établir des standards

● Mutualiser la R&D

● « Co-opétition » :● coopération

● compétition

● Prendre position dans le libre pour maîtriser son évolution

● Modèles économiques ?

Page 38: Introduction aux logiciels libres

page 38

« Commoditisation » du logiciel

source : Frank van der Linden (Philips)

Page 39: Introduction aux logiciels libres

page 39

Valeur du libre ?

● Exemple: Debian 2.2 GNU/Linux (2001)

● Lignes de code source :● 55 201 526

● dont noyau Linux < 6%

● x 2 tous les 2 ans

● Si applique métriques traditionnelles du développement en entreprise :● Effort estimé : 14 005 hommes x années

● Délai estimé : 6,04 ans (équipe de 2 318 p.)

● Coût développement : US$ 1 891 990 000

(Source: "Counting potatoes" par Gonzalez-Barahona et al)

● Cf. http://ohloh.net pour d'autres chiffres (Méthodologie discutable)

Page 40: Introduction aux logiciels libres

page 40

ROI utilisateurs

● Profusion d'études

● Libre != gratuit ... heureusement ;-)

● Économie gestion des licenses

● Transfert de coût entre licences et formation

● Paradoxes

● Au final coût des licences souvent marginal dans les coûts d'un projet

Page 41: Introduction aux logiciels libres

page 41

Modèles d'affaires pour fournisseurs

● Service

● « Valeur ajoutée » couches hautes

● Editeur

● Double licence

● Marché en croissance

● Positions stratégies industrielles

● Exemple : Linagora (fondée par anciens INT Management)

Page 42: Introduction aux logiciels libres

page 42

Acteurs spécialisés Logiciel libre

Source : Cartographie des Entreprises du Logiciel Libre (CNLL, 2010)

Page 43: Introduction aux logiciels libres

page 43

Qui ?

(source : Sam Hocevar)

Page 44: Introduction aux logiciels libres

page 44

Qui participe

● Individus bénévoles

● Parfois très isolés

● Parfois de façon organisée (Apache, GNU project, etc.)

● Sociétés

● Services

● Utilisateurs finaux (sponsors)

● Pas un seul profil d'activités :

● Utilisation, tests, rapports de bugs

● Support communautaire (forums, listes, etc.)

● Code

● Vendre du libre

● etc.

Page 45: Introduction aux logiciels libres

page 45

Rapide panorama d'un écosystème

Développeursamont

(“upstream”)

OpenSuse

DebianDebian

RedHatRedHat

distributions

versions

versions

versions

bugs

bugs

bugs

Utilisateurs

SSIIÉditeurs

packages

bugs

Page 46: Introduction aux logiciels libres

page 46

Le libre est global

● debian

Debian developers

Page 47: Introduction aux logiciels libres

page 47

Où sont ces développeurs ?

Par pays (SourceForge) :

Rang Pays Developpeurs1. United States 4256202. Germany 958003. United Kingdom 607684. Canada 491095. France 445876. China 36517... ... ...

(source : Gregorio Robles and Jesús M. González Barahona - 2006)

Page 48: Introduction aux logiciels libres

page 48

Où sont ces développeurs ? (2)

Par continent :

Continent DéveloppeursAfrica 12 560Asia 127 275EU401 845Europe 466 792North America 485 679Oceania 46 422South America 36 330

(source : Gregorio Robles and Jesús M. González Barahona – 2006)

Page 49: Introduction aux logiciels libres

page 49

Comment ?

Page 50: Introduction aux logiciels libres

page 50

● Principes

● Historique

● Aspects juridiques

● Aspects économiques

● Projets / Communautés

● Evaluation outils libres

● Guidelines

Page 51: Introduction aux logiciels libres

page 51

Vidéo

« 5 years of Linux kernel development in GIT »

Visualisation avec GOURCE

Page 52: Introduction aux logiciels libres

page 52

Comment le libre est-il développé ?

● Outils de travail collaboratif : ● Internet, CVS, SubVersion, Git, mailing-lists, chat IRC

● « Forges » publiques (ou privées) :

– SourceForge, GitHub, LaunchPad– FusionForge, Redmine,...

● Structure projets (caricature)● old-style traditional model : Cathedral

● new unexpected style : Bazaar

"The Cathedral and the Bazaar" (Eric Raymond)● Projet == réseau social

Page 53: Introduction aux logiciels libres

page 53

Communautés, résaux sociaux

Linux 1.0 (1994)Developers linked by common authorship to same files

source [Robles]

Page 54: Introduction aux logiciels libres

page 54

Bon sang, mais c'est le bazar !

Classical analysis of Apache modules feb. 2004 (source [Robles])

Page 55: Introduction aux logiciels libres

page 55

Amélioration de la visualisation

Reshaped with Girvan-Newman algorithm (source [Robles])

Page 56: Introduction aux logiciels libres

page 56

Apache 01/01/1999

Page 57: Introduction aux logiciels libres

page 57

Apache 01/01/2000

Page 58: Introduction aux logiciels libres

page 58

Apache 01/09/2000

Page 59: Introduction aux logiciels libres

page 59

Apache 01/01/2002

Page 60: Introduction aux logiciels libres

page 60

Apache 01/02/2004

Page 61: Introduction aux logiciels libres

page 61

Développement collaboratif et distribué

● Forces centrifuges● Fork / branch

● Git, Bzr, etc

● Forces centripètes● Cohésion

● Communauté

● Leadership

● Merge

Page 62: Introduction aux logiciels libres

page 62

Prendre part à une nouvelle communauté

● Rencontrer des hommes (et des femmes), pas seulement des compagnies ou des services marketing

● Construire un projet où différents modèles peuvent cohabiter

● Apprendre les règles des communautés

● Méritocratie

● De nombreux mode d'organisation sociale

● Comme dans la « vie réelle » c'est souvent plus subtil que ce qu'on en dit dans les présentations ou les publicités !

● Communiquer pour construire la confiance

Page 63: Introduction aux logiciels libres

page 63

« HOWTO » projets

basés sur le libre

Page 64: Introduction aux logiciels libres

page 64

● Principes

● Historique

● Aspects juridiques

● Aspects économiques

● Projets / Communautés

● Evaluation outils libres

● Guidelines

Page 65: Introduction aux logiciels libres

page 65

Qualités

● Prépare l'avenir

● Sécurité

● Adaptabilité

● Indépendance

● Faible coût

● Portabilité

● ...

Encore faut-il vérifier ?

Qui fait vraiment ce travail ? -> VOUS !

Page 66: Introduction aux logiciels libres

page 66

Annuaires

● Freshmeat http://freshmeat.net/ (> 39000 projets)

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

● Framasoft : http://framasoft.net/ (> 1400)

● Ohloh : http://ohloh.net/ (> 300 000 projets ??)

Page 67: Introduction aux logiciels libres

page 67

Sélection d'un produit

● Facilité à tester

● Ne pas confondre vitesse et précipitation

● Sous-traiter ce qui peut l'être

● Identifier les éléments critiques et monter en compétence

● Préférer les solutions déjà packagées (distributions)

● Éléments de dépendance sur des tiers non-contractualisés

Page 68: Introduction aux logiciels libres

page 68

Nombreuses qualités

● Qualités génériques ... déjà connues

● Qualités particulières d'un logiciel libre=> à évaluer● sa licence

● sa communauté

● son code (sa doc, son langage, etc.)

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

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

Page 69: Introduction aux logiciels libres

page 69

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

Page 70: Introduction aux logiciels libres

page 70

Fiche QSOS

Page 71: Introduction aux logiciels libres

page 71

Conduite de projetAnalyse des besoins

Spécification

Architecture

Conception détaillée

Codage

Tests

Déploiement

?

Page 72: Introduction aux logiciels libres

page 72

Maintien en condition opérationnelle

● Réactivité pour les mises à jour

● Diminuer l'adhérence dans les composants spécifiques

Page 73: Introduction aux logiciels libres

page 73

Stabilisation impossible

● Mises à jour de sécurité permanentes

● Répétition des mises à jour

● Automatisation souhaitable

● Diminuer la taille du code spécifique

Page 74: Introduction aux logiciels libres

page 74

Reverser au projet

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

● Maintenus à l'extérieur

● Améliorés à l'extérieur

● Pas besoin de les repackager

● Plus facile à dire qu'à faire

● Participer aux projets externes ASAP

Page 75: Introduction aux logiciels libres

page 75

Compétences pour le développement

● Développement distribué

● Communication en réseau

● Rendre générique ce qui peut l'être (bibliothèques, sous-projets)

● Méthodologie d'intégration (versions dérivées, customisations)

● Savoir packager (exemple : Debian)

● Traditionnels : doc, specs, tests, etc.

● Animation de communauté

● ...

Page 76: Introduction aux logiciels libres

page 76

Comment bien intégrer un projet libre

● Guides nouveaux contributeurs

● Être de bonne volonté (commencer petit pour se faire connaître)

● Pas magique (le diable est dans les détails)

● Identifier la roadmap

● Stratégie de stabilisation de versions

● Système d'Assurance Qualité

● Identifier les acteurs clé

● Rencontres physiques

● Canaux temps réel (IRC, etc.)

Page 77: Introduction aux logiciels libres

page 77

Spécificités du projet

● Pas que la licence

● Communauté● développement

● utilisatrice

● Personnes, rôles

● Acteurs économiques

● But, objectifs

● Méthodologie

Page 78: Introduction aux logiciels libres

page 78

Règles de vie en communauté

● Bénévoles (motivations)

● Professionnels

● Contractualisation ?

● Confiance

● Leadership

● Barrières à l'entrée

● Humour, culture et autres folklores

Page 79: Introduction aux logiciels libres

page 79

Enjeux sociaux plus que techniques

● Comprendre les règles du jeu

● Identifier les éléments influents

● Motiver des bénévoles

● Faire accepter ses contributions

● Impact sur les décisions

● Prouver son implication

● Se faire (re-)connaître

● Anticiper les alea

Page 80: Introduction aux logiciels libres

page 80

Où rencontrer la communauté

● En ligne

● Salons / conférences :● Solutions Linux

● Rencontres Mondiales LL

● Open World Forum

● FOSDEM

● Associations :● April

● CNLL

● etc.

Page 81: Introduction aux logiciels libres

page 81

Contribuer : une nécessité

● Cercle vertueux des contributions

● Quasi-obligation du fait des licences

● Externalisation de la maintenance

● Se faire plaisir et apprendre en vraie grandeur

● Se faire connaître et reconnaître

● Influer sur le pilotage d'un projet

Page 82: Introduction aux logiciels libres

page 82

Comment bien contribuer

● Il n'y a pas besoin de savoir coder

● Assurer une veille régulière

● Beaucoup d'effort même pour des choses simples

● Minimum légal : faire vivre la base de bugs dans le bugtracker du projet

Page 83: Introduction aux logiciels libres

page 83

Comment bien contribuer (suite)

● Accepter des usages sociaux différents

● Communiquer avant tout

● Jouer le jeu selon les règles

● Eviter l' « abandonware » non déclaré

● Respecter copyright

● Respecter les licenses

Page 84: Introduction aux logiciels libres

page 84

Conclusion

Loin de l'exhaustivité

Le libre est un changement extrèmement positif

Plein d'oportunités

Pas un seul modèle : mais quelques bonnes pratiques générales

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

Page 85: Introduction aux logiciels libres

page 85

● Merci à :

● Jean-Christophe Becquet / APITUX

● Roberto Di Cosmo / Paris 7 – PPS

● Gregorio Robles

● Aller plus loin :

● «Richard Stallman et la révolution du logiciel libre» Eyrolles, 2010

● http://www.april.org

● http://www.apitux.org/index.php?2009/05/25/199-cours-logiciel-libre-standards-ouverts-et-interoperabilite

● http://loli.fsa.ulaval.ca/index.php?id=9

● http://dpt-info.univ-littoral.fr/mediawiki/index.php/I2L:Accueil

● http://www.dicosmo.org/CourseNotes/LogicielLibre/

Page 86: Introduction aux logiciels libres

page 86

Conditions d'utilisation

● This work is Copyright 2009-2010 by Institut TELECOM and Olivier Berger, published under a Creative Commons ShareAlike license

Page 87: Introduction aux logiciels libres

direction ou services <pied de page>page 87

Merci de votre attention

http://www-public.it-sudparis.eu/~berger_o/weblog/


Top Related