Pourquoi la GPL n’est pas (si) libre

Posted on 16 July 2014 in Libre • 6 min read

Cet article est une traduction (dont je ne garantis pas la qualité :) de cet article (en anglais). Je n’ai pas réussi à contacter l’auteur, et si celui-ci passe par là et souhaite le retrait de la traduction, je la retirerai.

Cet article résume bien le problème que me pose la clause de redistribution sous une licence compatible, qui complique bien souvent l’utilisation de la licence (notamment car ce qu’on peut réellement faire avec un code sous GPL n’est pas toujours très clair et intuitif). C’est une des raisons pour laquelle je privilégie généralement une licence plus permissive, comme la MIT. La dernière partie sur l’échec de la GPL est moins convaincante, et peut être même un peu tirée par les cheveux, mais elle fait partie de l’article donc je la laisse.

À partir de maintenant et dans toute la suite, « je » désigne donc l’auteur de l’article précédent.

Pourquoi la GPL n’est pas libre

Introduction

La Free Software Foundation (FSF) présente la GPL comme un défenseur idéal de vos libertés. On nous dit que la GPL est au cœur de la défense de quatre libertés :

  1. La liberté de faire tourner le programme, pour n’importe quelle raison (liberté 0).
  2. La liberté d’étudier comment le programme fonctionne, et de l’adapter à vos besoins (liberté 1). L’accès au code source est une condition préliminaire à cette liberté.
  3. La liberté de redistribuer des copies pour que vous puissiez facilement aider vos voisins (liberté 2).
  4. La liberté d’améliorer le programme et de diffuser les améliorations (et les versions modifiées en général) au public, pour que la communauté entière en bénéficie (liberté 3). L’accès au code source est une condition préliminaire à cette liberté.

« Qu’est-ce que le logiciel libre ? », sur le site de la GNU

J’affirme cependant que la GPL ne nous donne pas de liberté, mais juste différentes restrictions. J’affirme de plus qu’elle ne nous donne pas toutes les libertés précédentes. Dans cet article, je défend que la GPL est intrinsèquement imparfaite quand il s’agit de libérer les logiciels.

Qu’est-ce que j’ai écrit ?

Permettez moi d’ouvrir une parenthèse avant de commencer. Je voudrais présenter un sujet lié qui est au cœur de mon argumentation, et qui est la question de savoir combien de code exactement vous avez écrit. Imaginons un scénario typique : vous êtes l’auteur d’une bibliothèque libre et open source. Le but de cette bibliothèque n’importe pas particulièrement, donc disons qu’elle sert à chiffrer des widgets. Vous mettez tout votre talent dans cette bibliothèque, et elle devient stable et très complète. Le diagramme représente le projet à ce moment :

Votre projet,
initialement. Vous êtes fier de votre projet.

Supposons donc maintennt qu’une tierce partie prenne votre code et construise quelque chose par dessus. On pourrait le représenter comme ceci :

Des ajouts à votre
projet. Un important et un petit ajout à votre projet.

Ce qui est important ici, c’est de réaliser que la quantité de code que vous avez écrite ne change pas. Même si l’ajout de la tierce partie consiste seulement en une jolie interface graphique pour votre bibliothèque, la quantité de code que vous avez écrite n’a pas augmenté, ni diminué.

Ce que vous couvrez avec une licence

Ok, posons donc maintenant la question : quelle est la pertinence de tout ceci ? Ça nous a aidé à clarifier ce que vous couvrez exactement par la licence lorsque vous appliquez une licence GPL à votre code. Vous couvrez votre code, et seulement votre code. Et pourtant, la GPL restreint la licence des travaux dérivés. Notons ici que les travaux dérivés sont intégralement le travail de quelqu’un d’autre.

L’argument le plus courant que j’ai entendu pour favoriser la GPL est qu’avec une licence plus faible (disons BSD), une tierce partie peut prendre votre code, l’étendre, et fermer l’accès aux sources. Réfléchissons donc à ce que cela signifie. Pour fermer l’accès à votre code, ils auraient du le prendre, retirer toutes les sources en accès libre pour ce code, et ensuite le distribuer à nouveau en closed source. Mais cela n’a aucun sens. Vous distribuez toujours votre code source sous une licence libre et open source, donc en quoi l’ont-ils rendu closed source ? Ils ne l’ont pas fait : votre code est toujours open source. Donc, qu’ont-ils rendu closed source ? Et bien, la réponse est « leur code », et seulement leur code est closed source, et c’est très bien : ils sont dans leur droit d’appliquer la licence de leur choix à leur code.

Donc la conclusion est qu’une entreprise peut venir, prendre libWidgetCrypt et proposer un petit wrapper autour, et commencer à faire d’énormes profits en vendant le résultat $10,000. Oui, c’est possible, mais c’est aussi un scénario assez improbable. Si tout ce qu’ils ont fait a été d’écrire un petit wrapper, alors vous, ou quelqu’un d’autre dans la communauté open source est parfaitement capable de réaliser un tel wrapper en un rien de temps. Et alors, tout ce qu’il vous reste à faire est de casser les prix et d’ajouter un bon gros morceau de liberté.

Le scénario le plus probable, cependant, est qu’une entreprise arrive, prenne libWidgetCrypt et produise un gros morceau de code supplémentaire, qui utilise juste votre bibliothèque dans sa base. Alors, cette entreprise va vendre son code, et ses extensions pour un montant élevé, et ils ont parfaitement le droit de le faire. Après tout, c’est leur code.

Croyez le ou non, ce scénario est encore un scénario bénéfique pour vous. Cette entreprise est susceptible de trouver des bugs dans libWidgetCrypt, et de les corriger. De mon expérience de ce genre de choses, ils contribuent et vous font parvenir leurs correctifs plus souvent qu’on le pense, même si rien ne les y oblige ! Oui, il arrive qu’ils corrigent la bibliothèque et s’enfuient avec les correctifs, mais encore une fois, ils ont écrit les correctifs, ils ont le droit de le faire !

Là où la GPL rate

Je suis entré dans beaucoup de détails sur ce que vous mettez sous GPL quand vous appliquez une licence GPL à votre code, mais je n’ai pas encore parlé de ce que j’avais annoncé au début de cet article. Je ne vous ai pas dit pourquoi la GPL n’est pas une licence libre. Pour cela, je vais me concentrer sur la dernière liberté qu’elle affirme offrir : « La liberté d’améliorer le programme, et de diffuser les améliorations (et les versions modifiées en général) au public, pour que la communauté entière en bénéficie (liberté 3). ». Supposons que j’ai une entreprise, et que je crée un produit à distribuer. J’aimerais utiliser votre bibliothèque dans mon programme, j’aimerais même améliorer votre bibliothèque, et diffuser les améliorations publiquement, pour que l’intégralité de la communauté en bénéficie. Malheureusement, je dois finir par vendre un produit, donc j’aimerais garder le cœur de mon projet closed source. Malheureusement, la GPL proscrit ce genre de choses.

Nous avons donc un bon citoyen, une entreprise qui veut diffuser leurs correctifs à la bibliothèque, et pourtant la GPL leur interdit de le faire. Elle ne leur donne aucune liberté ! À la place, la GPL est un ensemble de restrictions.

Il se peut que vous trouviez que l’ensemble de restrictions que la GPL offre est plus moralement acceptable que les licences closed source traditionnelles, mais ce n’est pas une licence libre. Elle ne donne pas de liberté, elle donne différentes restrictions.

Conclusions

La GPL n’est pas une licence libre, en ce qu’elle restreint les libertés aux seules personnes qu’elle juge moralement acceptables. Il y a souvent des gens qui ne tombent pas dans cette case « moralement acceptable », mais qui ont pourtant de très bonnes intentions. La GPL est donc trop restrictive pour beaucoup de projets. À la place, c’est souvent une bonne idée d’utiliser une véritable licence FOSS, comme la licence BSD par exemple. En faisant cela, vous ne vous rendrez pas vulnérable pour des entreprises qui voudraient passer magiquement votre code en closed source, car vous continuerez à le distribuer. Il se peut qu’ils passent en closed source un petit ajout à votre code et essayent de le vendre pour des sommes astronomiques. Cependant, dans ce cas, vous pouvez aussi reproduire le même changement mineur, et le donner entièrement librement à la communauté.