web-dev-qa-db-fra.com

Puis-je créer un lien vers une bibliothèque GPL à partir d'une application source fermée?

D'accord, avant que tout le monde ne crie sur les questions en double, oui, j'ai déjà vu plusieurs questions comme celle-ci ici. Mais aucun ne répond à la question.

Si je crée un lien avec une bibliothèque éditée sous GPL sans modifier cette bibliothèque, dois-je publier mon code source?

Selon cette question , la réponse est oui!

Mais cette réponse ne me satisfait pas. La réponse dit essentiellement que je ne peux en aucun cas utiliser le code GPL sans rendre mon code open source.

Mais si la précédente est vraie, cela indiquerait qu'aucune personne ou organisation ne pourrait jamais publier de logiciel propriétaire sur Linux. Ce qui doit être faux. Tout simplement parce que pour qu'une application fasse quoi que ce soit d'utile, ouvrez des fichiers, écrivez dans la console, créez des connexions TCP, l'application doit être liée à libc qui est sous GPL) .

Donc ma question est la suivante: si la GPL déclare, comme toutes les réponses précédentes sur le site le disent, qu'un programme qui relie à un autre programme GPL doit être la GPL elle-même, comment est-il possible de créer/publier/vendre une application propriétaire du tout ce qui fonctionne sous Linux? Étant donné que, comme je l'ai décrit ci-dessus, cette application doit être appréciée avec du code GPL uniquement pour fonctionner sous Linux.

Un exemple plus pratique, disons que je crée un lien vers une bibliothèque partagée qui est GPL-ed dans une application non-GPL, est-ce que cela forcerait l'application non-GPL à devenir GPL-ed? Plus précisément, si j'utilise une bibliothèque GPL sans la modifier, puis distribue cette bibliothèque en tant que .so ou .dll, cela exigerait-il que mon application soit open source?

35
john-charles

Si vous créez un lien vers une bibliothèque GPL, vous avez créé un travail dérivé et votre code doit être GPL - c'est différent de LCode GPL qui permet spécifiquement dynamique la liaison de code sous licence différente. Les bibliothèques système, y compris libc, sont toutes LGPL.

Il existe également une exception spéciale pour les en-têtes du noyau Linux et libgcc (la bibliothèque appelée implicitement par le compilateur).

34
Martin Beckett

Dans le cas général, vous avez raison, vous ne pouvez pas créer de lien vers une bibliothèque GPL, distribuer votre code, puis ne pas publier votre code en tant que GPL.

Cependant, il y a System Library Exception qui est la façon dont les gens se lient aux bibliothèques Linux et publient toujours leur produit sous des licences non GPL.

Une autre exception est lorsque les deux licences sont compatibles l'une avec l'autre. Consultez la FSF page de licence compatible pour plus de lecture.

Enfin, les auteurs de la bibliothèque GPL'd peuvent créer des exceptions spécifiques, comme pour une utilisation non commerciale ou amateur.

Malheureusement, il y a trop de potentialités pour avoir une règle dure et rapide. Sans plus de détails dans votre question, votre réponse est "probablement pas possible, mais peut-être que vous le pouvez."

7
user53019

La réponse courte est que personne ne sait vraiment. (Cette discussion concerne la GPL et non la LGPL.)

La GPL a un langage vague à propos des "œuvres dérivées", que différentes personnes interprètent de différentes manières. Le consensus semble être que la liaison statique viole, mais l'appel via des interruptions système (par exemple vers le noyau Linux) ne le fait pas. Ce dernier est basé principalement sur le fait que des entreprises comme Oracle livrent sur Linux et n'ont pas été poursuivies - ce n'est pas clair dans la licence.

La liaison dynamique n'est pas claire, 70/30 disent probablement qu'elle viole. Appeler un programme en utilisant des canaux ou des appels de procédure distante, probablement 30/70 ne viole pas, même si c'est essentiellement la même chose. Appeler via COM, ou utiliser un Java Jar, n'est pas clair du tout.

Fondamentalement, en cas de doute et que vous n'aimez pas les avocats, restez à l'écart de GPL.

0
Tuntable