Présentation des licences Open source

Effectué

Les licences open source sont des contrats juridiques qui définissent la façon dont les logiciels open source peuvent être utilisés, modifiés et distribués. Chaque projet open source inclut une licence qui spécifie les droits accordés aux utilisateurs et les obligations qu’ils doivent respecter. La compréhension des licences est essentielle pour implémenter légalement et en toute sécurité des logiciels open source dans les contextes organisationnels.

Définition des licences open source

Une licence open source est un document juridique qui accompagne le code source et spécifie :

Autorisations accordées

Les licences accordent explicitement aux utilisateurs certains droits :

  • Droits d'utilisation : Autorisation d’utiliser le logiciel pour tout objectif, y compris les applications commerciales.
  • Droits de modification : Autorisation de modifier le code source pour répondre aux besoins spécifiques, corriger les bogues ou ajouter des fonctionnalités.
  • Droits de distribution : Autorisation de partager le logiciel avec d’autres personnes, sous forme d’origine ou modifiée.
  • Droits de sous-licence : Dans certains cas, l’autorisation de licencer le logiciel à d’autres sous différentes conditions.

Sans licence explicite, le droit d’auteur interdit l’utilisation, la modification ou la distribution de logiciels. La licence fournit une autorisation légale pour ces activités.

Obligations imposées

Les licences imposent généralement des exigences aux utilisateurs :

  • Exigences d’attribution : Doit conserver les avis de droits d’auteur et le texte de licence dans des copies distribuées.
  • Divulgation de code source : Certaines licences nécessitent la fourniture de code source lors de la distribution de fichiers binaires.
  • Conservation des licences : Doit inclure le texte de licence avec des copies distribuées.
  • Licences de travail dérivées : Certaines licences nécessitent des travaux dérivés pour utiliser la même licence (copyleft).
  • Octrois de brevets : Certaines licences incluent des octrois de brevets explicites ou des clauses d’arrêt défensif.

Responsabilité et exclusions de garantie

Presque toutes les licences open source excluent la responsabilité et les garanties :

  • Aucune garantie : Le logiciel est fourni « tel qu’il » sans garantie de qualité marchande, d’adéquation à des fins ou de non-violation.
  • Aucune responsabilité : Les auteurs et les titulaires de droits d’auteur ne sont pas responsables des dommages résultant de l’utilisation de logiciels.
  • Risque utilisateur : Les utilisateurs acceptent tous les risques associés à l’utilisation du logiciel.

Ces exclusions de responsabilité protègent les développeurs open source contre la responsabilité juridique, reconnaissant que les logiciels sont généralement fournis librement sans compensation.

Définition open source

L’Initiative Open Source (OSI) gère la définition open source faisant autorité qui spécifie les critères de licences à considérer comme véritablement open source :

Exigences fondamentales

Selon la définition open source, les licences open source doivent :

Redistribution gratuite :

  • Aucune restriction : Les licences ne peuvent empêcher personne de vendre ou de donner le logiciel dans le cadre d’une distribution agrégée.
  • Aucune redevance : Les licences ne peuvent pas nécessiter de redevances ou de frais pour ces ventes.

Inclusion du code source :

  • Disponibilité: Les programmes distribués doivent inclure du code source ou fournir des instructions claires pour l’obtenir sans coût.
  • Formulaire préféré : Le code source doit être au format préféré pour les modifications.
  • Pas d’obfuscation : Le code source délibérément obfusqué ne répond pas aux exigences.

Travaux dérivés :

  • Modifications autorisées : Les licences doivent autoriser les modifications et les travaux dérivés.
  • Mêmes termes : Les licences doivent autoriser la distribution des modifications sous les mêmes termes que le logiciel d’origine.

Intégrité du code source de l’auteur :

  • Fichiers correctifs : Les licences peuvent nécessiter la distribution de modifications en tant que fichiers correctifs en même temps que la source d’origine.
  • Nommage: Les licences peuvent nécessiter des travaux dérivés pour utiliser différents noms ou numéros de version de l’original.

Aucune discrimination contre des personnes ou des groupes :

  • Accès universel : Les licences ne peuvent pas faire l’objet d’une discrimination contre une personne ou un groupe de personnes.
  • Droits égaux : Tout le monde doit avoir les mêmes droits pour utiliser le logiciel.

Aucune discrimination contre les champs d’effort :

  • Tout objectif : Les licences ne peuvent pas restreindre l’utilisation du logiciel dans des domaines spécifiques tels que la recherche commerciale ou génétique.
  • Utilisation commerciale : Les licences ne peuvent pas interdire l’utilisation du logiciel dans les applications commerciales.

Distribution de la licence :

  • Application automatique : Les droits attachés au programme doivent s’appliquer à tous ceux auxquels le programme est redistribué.
  • Aucune licence supplémentaire : Les utilisateurs ne doivent pas avoir besoin d’exécuter des licences supplémentaires pour recevoir ces droits.

La licence ne doit pas être spécifique à un produit :

  • Droits autonomes : Les droits ne doivent pas dépendre du programme faisant partie d’une distribution de logiciels particulière.
  • Exécution indépendante : S’il est extrait de la distribution d’origine, le logiciel doit avoir les mêmes droits.

La licence ne doit pas restreindre d’autres logiciels :

  • Aucune contamination : Les licences ne peuvent pas imposer de restrictions sur d’autres logiciels distribués avec le logiciel sous licence.
  • Agrégation autorisée : Les licences ne peuvent pas empêcher la distribution du logiciel en même temps que les logiciels sous différentes licences.

La licence doit être neutre en technologie :

  • Aucune restriction d’interface : Les licences ne peuvent pas nécessiter de technologies ou de styles d’interface spécifiques.
  • Méthode d’exécution indépendante : Les licences ne doivent pas s’occuper du fait que le logiciel est exécuté via des icônes, des lignes de commande ou des interfaces web.

Pourquoi ces exigences sont importantes

La définition Open Source garantit que les licences offrent une liberté significative :

Protège la liberté de l’utilisateur : Les exigences empêchent les licences d’imposer des restrictions masquées qui compromettraient les principes open source.

Active l’utilisation commerciale : En interdisant la discrimination contre les domaines d’activité, la définition garantit que les entreprises peuvent créer des produits à l’aide de logiciels open source.

Favorise la compatibilité : Les exigences limitant la façon dont les licences peuvent affecter d’autres logiciels réduisent les problèmes de compatibilité.

Empêche la fragmentation : En exigeant des termes raisonnables, la définition empêche la prolifération de licences quasi-ouvertes incompatibles.

Catégories de licences open source

Bien que de nombreuses licences open source différentes existent, elles appartiennent généralement à deux grandes catégories :

Licences permissives

Les licences permissives imposent des exigences minimales sur les œuvres dérivées :

  • Caractéristiques: Autorisez l’incorporation de code dans des logiciels propriétaires sans exiger que le logiciel propriétaire soit open source.
  • Exigences: En règle générale, seule l’attribution (préservation des avis de droits d’auteur et du texte de licence).
  • Utilisation commerciale : Entièrement compatible avec le développement de logiciels commerciaux.
  • Exemples: Licence MIT, Licence Apache 2.0, Licences BSD.

Les licences permissives optimisent la liberté pour les utilisateurs, ce qui leur permet de créer des produits commerciaux à source fermée intégrant du code open source.

Licences Copyleft

Les licences Copyleft nécessitent des travaux dérivés pour utiliser la même licence :

  • Caractéristiques: Vérifiez que les versions modifiées et les travaux dérivés restent open source.
  • Exigences: Exiger la distribution du code source et l’utilisation de la même licence pour les travaux dérivés.
  • Utilisation commerciale : Peut être utilisé dans des logiciels commerciaux, mais les travaux dérivés doivent être open source.
  • Exemples: Licence générale GNU (GNU General Public License), GNU Lesser General Public License (LGPL), Mozilla Public License (MPL).

Les licences Copyleft hiérarchisent la liberté logicielle par rapport à la liberté de l’utilisateur, ce qui garantit que les logiciels open source restent open source même si elles évoluent.

Faible copyleft

Certaines licences occupent un terrain intermédiaire :

  • L’utilisation de la bibliothèque est autorisée : Autorisez la liaison à des bibliothèques dans des applications propriétaires sans ouvrir l’application.
  • Restrictions de modification : Les modifications apportées à la bibliothèque elle-même doivent être open source.
  • Exemples: GNU LGPL, licence publique Mozilla.

Les licences copyleft faibles équilibrent la promotion du développement open source avec l’activation de l’utilisation commerciale.

Sélection de licences par projets

Les projets open source choisissent des licences en fonction de leurs objectifs :

Optimisation de l’adoption : Les projets hiérarchisant l’adoption généralisée choisissent généralement des licences permissives qui n’imposent pas d’obligations significatives aux utilisateurs.

Garantir la liberté : Les projets hiérarchisant la liberté logicielle choisissent les licences copyleft qui garantissent que les travaux dérivés restent open source.

Prévention des bifurcations propriétaires : Les licences Copyleft interdisent aux entreprises de créer des versions propriétaires de logiciels open source.

Protection des brevets : Les projets préoccupés par les brevets choisissent des licences avec des octrois de brevets explicites (comme Apache 2.0) qui fournissent des droits de brevet plus clairs.

Compatibilité: Les projets peuvent choisir des licences compatibles avec d’autres logiciels dont ils dépendent ou souhaitent s’intégrer.

Plusieurs licences

Certains projets utilisent plusieurs stratégies de licence :

Double licence : Proposez des logiciels sous licences open source et commerciales, permettant aux utilisateurs de choisir les termes qui s’appliquent.

Pile de licences : Différents composants d’un projet peuvent avoir des licences différentes.

Évolution de la licence : Les projets changent parfois de licences au fil du temps, bien que cela nécessite un accord de tous les contributeurs.

Le paradoxe de transparence

La transparence du code source crée à la fois des avantages et des risques de sécurité :

Avantages de la sécurité de la transparence

Le code source public permet d’améliorer la sécurité :

  • Beaucoup d’yeux : Des milliers de développeurs peuvent examiner le code pour détecter les vulnérabilités, ce qui augmente la probabilité de la découverte.
  • Divulgation plus rapide : Lorsque des vulnérabilités sont détectées, elles peuvent être divulguées et corrigées publiquement, en informant tous les utilisateurs.
  • Correctifs de la communauté : Les développeurs conscients des enjeux de sécurité apportent des correctifs pour corriger les vulnérabilités.
  • Fonctionnalité d’audit : Les organisations peuvent auditer les dépendances open source pour les problèmes de sécurité, ce qui est impossible avec le logiciel source fermé.

Risques de sécurité de la transparence

Le code source public aide également les attaquants :

  • Détection des vulnérabilités : Les acteurs malveillants peuvent analyser le code source pour rechercher des vulnérabilités exploitables.
  • Développement d'exploits : Comprendre les détails de l’implémentation aide les attaquants à créer des programmes d'exploitation.
  • Identification de la cible : Les attaquants peuvent identifier les applications qui utilisent des versions vulnérables des composants open source.
  • Exploitation jour zéro : Les attaquants peuvent découvrir et exploiter des vulnérabilités avant qu’elles ne soient divulguées publiquement.

Équilibre

La recherche suggère que la transparence offre des avantages nets en matière de sécurité :

Loi de Linus : « Étant donné suffisamment de globes oculaires, tous les bogues sont peu profonds. » L’examen ouvert recherche et corrige généralement les vulnérabilités plus rapidement que le développement de source fermée.

L’obscurité n’est pas la sécurité : La conservation du secret du code source n’empêche pas les vulnérabilités, mais elle les masque jusqu’à ce que les attaquants les découvrent.

Divulgation responsable : La communauté open source a développé des pratiques de divulgation responsable qui équilibrent la sécurité avec la transparence.

Réalité pratique : Les violations de sécurité les plus graves impliquent un logiciel source fermé ou une mauvaise configuration, et non des vulnérabilités open source, ce qui suggère que la transparence ne réduit pas intrinsèquement la sécurité.

La compréhension des licences open source et de leurs catégories constitue la base de l’évaluation des licences spécifiques. L’unité suivante explore en détail les licences open source courantes, ce qui vous aide à comprendre les termes que les licences populaires imposent et comment elles diffèrent.