Lorsque le logiciel libre dépend de logiciel non libre par Richard Stallman

When Free Software Depends on Nonfree

https://www.gnu.org/philosophy/when-free-depends-on-nonfree.html

Quand un programme est un logiciel libre (libre comme dans la liberté), cela signifie qu'il donne aux utilisateurs les quatre libertés ( gnu.org/philosophy/free-sw.html ) de sorte qu'ils contrôlent ce que le programme fait. Dans la plupart des cas, cela est suffisant pour la distribution du programme soit éthique; mais pas toujours. Il y a d'autres problèmes qui peuvent survenir dans des circonstances particulières. Cet article décrit un problème subtil, où la mise à niveau du programme libre nécessite l'utilisation d'un programme non libre.

Si l'utilisation du programme libre dépend inévitablement sur un autre programme qui est non libre, nous disons que le programme libre est "piégé". Son code est un logiciel libre, et vous pouvez être en mesure de copier des morceaux de son code dans d'autres programmes libres avec un bon résultat éthique. Mais vous ne devriez pas exécuter le programme piégé, parce que cela implique de remettre votre liberté à l'autre programme nonfree.

Quelqu'un qui respecte les principes du logiciel libre ne saurait pas sciemment faire un programme piégé. Cependant, de nombreux programmes libres sont développés par des personnes ou des entreprises qui ne prennent pas particulièrement ces principes en compte, ou ne comprennent pas le problème.

la dépendance à l'égard d'un programme non libre peut prendre diverses formes. La forme la plus simple est quand le langage de programmation utilisé n'a pas d'implémentation libre. Les premiers programmes que j'ai écrits pour le système GNU dans les années 1980, y compris GNU Emacs, GDB et GNU Make, devaient être compilés avec le compilateur C non libre AT & T, parce qu'il n'y avait pas de compilateur libre C jusqu'à ce que je aie écrit GCC. Heureusement, ce genre de problème est surtout une chose du passé; nous avons maintenant des compilateurs et des plates-formes libres pour à peu près tous les langages que quelqu'un puisse utiliser pour écrire des logiciels libres.

Nous pouvons libérer le programme de ce genre de piège en le traduisant dans un autre langage, ou en libérant une implémentation libre du langage dans lequel il est écrit. Ainsi, quand une implémentation de Java complète et libre est devenue disponible, cela a libéré tous les programmes Java du Piège Java .

Ce type de dépendance est conceptuellement simple, car il découle de la situation à un instant donné dans le temps. A l'instant T, le programme libre P ne fonctionnera pas sans la plate-forme de programmation non libre Q. Pour emprunter un terme à la linguistique, cette relation est «synchrone».

Plus récemment, nous avons vu un autre type de dépendance dans les programmes de base de données, où vous pouvez construire et exécuter une version donnée du programme dans le monde libre, mais la mise à niveau de la version N à la version N + 1 nécessite un programme non libre.

Cela se produit parce que le format interne de la base change entre la version N et la version N + 1. Si vous avez été utilisé la version N, vous avez probablement une grande base de données existante dans le format de la version N. Pour passer à la version N + 1 du logiciel de base de données, vous devez reformater cette base de données.

Si la façon dont vous êtes censé le faire est d' exécuter un programme base de données de reformatage de la base de données non libre, ou en utilisant le service du développeur en mode SaaSS, le logiciel de base de données est piégé, mais d'une manière plus subtile. Chacune des versions du programme de base de données peut être utilisé sans logiciel non libre ou service SaaSS. Le problème se pose lorsque vous essayez d'utiliser le programme pour le long terme, ce qui implique qu'il faut le mettre à niveau de temps à autre; vous ne pouvez pas l'utiliser de cette façon sans certains logiciels non libres ou équivalent. Ce programme de base de données est piégé dans la durée, nous pourrions l'appeler "diachroniquement piégé," pour emprunter un autre terme de la linguistique.

Par exemple, le programme OpenERP, bien que libre, est diachroniquement piégé. GNU-Health , notre package libre pour la gestion d'un hôpital, a d'abord utilisé OpenERP. En 2011, le développeur GNU-health, Luis Falcón, a découvert que la mise à niveau vers la prochaine version d'OpenERP nécessitait l'envoi de la base de données (contenant les données médicales des patients) au serveur d'OpenERP pour le reformatage. C'est le SaaSS ( Service as a Software Substitute): il demande à l'utilisateur de GNU-Health (un hôpital) de confier ses propres règles de traitement et ses données à l'entreprise qui a développé OpenERP. Plutôt que de s'agenouiller, Falcón a réécrit GNU-Health pour utiliser Tryton à la place.

L'utilisation de SaaSS est intrinsèquement équivalente à l'exécution d'un programme propriétaire avec une fonctionnalité d'espionnage et une porte dérobée universelle. Le service pourrait conserver une copie des bases de données que les utilisateurs reformatent. Même si nous pouvons faire confiance à la société qui gère le service de ne jamais montrer intentionnellement toute forme de données à quiconque, nous ne pouvons pas être sûr que ce ne sera pas accédé par les agences de renseignement de différents pays ou des craqueurs de sécurité (s'il vous plaît ne les appelez pas "hackers") .

Quand un programme est diachroniquement piégé, le libérer de son piège nécessite plus qu'un travail unique de programmation. Au contraire, le travail doit être refait en permanence, à chaque fois qu'il y a un changement dans le format de données. Le lancement d'un projet, avec l'engagement à long terme de continuer à le faire, n'est pas facile. Il peut être plus facile de faire pression sur l'entreprise pour qu'elle cesse d'essayer de piéger les utilisateurs-en rejetant le programme piégé jusqu'à ce qu'il le fasse. Étant donné la difficulté de libérer le programme, vous feriez mieux de garder vos distances.

Il est possible d'essayer un programme libre diachroniquement piégé sans logiciel non libre, mais si vous voulez aller plus loin, vous devez vraiment éviter de l'utiliser pour de vrai. Les entreprises et les particuliers trouveront de bonnes alternatives libres qui ne présentent pas un tel problème; Ce qui est nécessaire pour éviter le piège, c'est de le détecter.