Ship of Theseus appliqué à la GPL - Puis-je modifier la licence de mon programme si je remplace toutes les parties dérivées?

99

J'ai traduit un Cprogramme GPLv2 en Python, mais j'ai constaté qu'il était difficile d'étendre tel que conçu et de réécrire des parties importantes de celui-ci. La structure du programme est maintenant complètement différente, mais plusieurs fonctions traduites textuellement sont utilisées.

Le paradoxe Ship of Theseus (comme indiqué dans Wikipedia) "soulève la question de savoir si un objet dont toutes les composantes ont été remplacées reste fondamentalement le même objet".

Si je réussissais à écrire des remplaçants pour les fonctions mot à mot, serais-je en mesure de me connecter à une licence que je préfère?

Dans le même ordre d'idées, serais-je en mesure d'extraire l'architecture développée et de la réutiliser avec une licence différente? Je pense que ce serait très utile en soi, mais je n'aime pas l'idée qu'il soit maintenant "corrompu" avec la licence GPL.

Suivi : j'ai décidé de contacter le détenteur du droit d'auteur et j'ai reçu l' autorisation de relicense . Parfois, le meilleur moyen est d’interagir socialement plutôt que par programme!

Se poser sur
la source
6
Comparez l' audit de ReactOS : il a été allégué que ReactOS (un remplacement de Windows gratuit) avait été corrompu en utilisant un code MS Windows filtré et soumis à une ingénierie inverse (pour lequel ils n'ont jamais pris de licence). Ils l'ont résolu en remplaçant systématiquement tout code d'origine peu claire par un code légal "d'ingénierie inversée en salle blanche" - fondamentalement un nouveau code écrit à partir d'une spécification propre.
Jdm
3
@jdm Le code de muraille de Chine / salle blanche doit également être écrit par des personnes n'ayant pas participé à l'ingénierie inverse et entretenant une communication limitée (légalement contrôlée) avec elles. WRT ignorer la licence et juste "violer le copyright à la place" - cela reviendrait à la même chose, puisque vous ne seriez toujours pas autorisé à redistribuer le matériel sur lequel vous avez violé le copyright.
goldilocks
9
@jdm La GPL n'est pas un contrat et n'a besoin d'être acceptée par personne. La GPL est une licence et vous devez la respecter si vous en profitez. Ce n'est pas une rue à double sens, ni une négociation, ni une définition d'obligations multiples, comme dans un contrat. Ce qu'il fait, c'est énoncer les seules règles selon lesquelles vous êtes autorisé à utiliser le code. IANAL, mais plusieurs avocats en droit des licences m'ont expliqué cela.
Elin
3
@CrazyCasta: Vous vous trompez sur la portée de la GPL. Vous dites que c'est la seule raison d'avoir des droits. Ceci est explicitement incorrect et carrément démenti par la GPL elle-même. La GPL ne couvre que les droits de distribution. Vous avez un droit illimité d'utiliser et d'étudier le code même sans accepter la licence GPL.
MSalters
1
@MSalters: GPL accorde des droits de distribution et de modification . Sans licence, vous avez uniquement le droit d'utiliser le logiciel tel quel.
RemcoGerlich

Réponses:

95

Premièrement, la réponse est non (pour une traduction), vous ne pouvez légalement pas renouveler votre licence, ni rien faire en dehors de la légalité de la licence d'origine. Vous avez peut-être très bien fait 10 fois le travail de l’auteur original, mais peu importe, c’est viral. Non seulement parce que c'est la GPL, mais parce que ce n'est pas une conception ou une réécriture épurée.

J'ai eu quelques difficultés avec cela en 1992 lorsque j'avais réécrit en masse une ancienne base de code MUD. Nous avions un jeu réussi, mais nous voulions faire notre propre travail et les gens étaient prêts à payer pour cela. Pourtant, la licence DikuMUD nous interdisait strictement de gagner de l'argent. Un concurrent, à l'époque, s'était également basé sur la même base de code et avait choisi d'ignorer de manière flagrante le droit d'auteur, d'en éliminer toute trace et de mentir à tout le monde, y compris à eux-mêmes. Leur logique était "aucun du code original n'existe" et "nous avons fait des réécritures et des améliorations massives", ignorant généralement le fait qu'ils avaient commencé avec 20 000 lignes de code. Ils facturaient des objets dans le jeu et gagnaient trop d’argent pour s’arrêter.

J'étais certes envieux. Mais j’ai effectué des recherches sur le droit d’auteur et consulté ma conscience. J’ai décidé que je ne pouvais même pas utiliser le code que j’avais écrit parce que je n’avais honnêtement pas conçu le serveur de jeux à partir de zéro.

J'ai donc décidé de mettre mon argent là où ma bouche était et d'écrire à partir de zéro, avec une copie de la programmation réseau UNIX de W. Richard Steven avec moi tout le temps, j'ai commencé. Ecrire à partir de zéro, à ma façon, m’a appris beaucoup plus que lorsque j’avais réécrit DikuMUD, et cela m’avait aussi appris que je ne comprenais pas vraiment ce que signifiait se tenir sur les épaules de quelqu'un d’autre. En six mois, j'avais 50 000 lignes de code opérationnel que je pouvais appeler le mien. Je l'ai nommé MUD ++ et l' ai publié sous BSD. Mal écrit dans le style ancien C ++, c’était toujours le premier MUD C ++ libre et open source que je connaisse. À ce jour, personne ne peut me l'enlever. J'avais le meilleur serveur TCP à l'époque, personne d'autre ne pouvait faire un "redémarrage à chaud" sans perdre de joueurs, et bientôt tout le monde volait la fonctionnalité (et j'ai remarqué que beaucoup de GUDs GPL ont des extraits de mon code BSD - il est toujours intéressant de savoir comment GPL peut détourner BSD-ware mais pas l'inverse ). Finalement, je suis passé à autre chose, alors ce n’était pas comme si la décision était décisive pour ma fortune, mais alors que les autres gars gagnaient beaucoup d’argent depuis un moment, j’avais perdu tout mon regard, dans un monde de jeux graphiques il n'y a plus beaucoup de demande massive de texte.

L'histoire ne se termine pas… quelques années plus tard, je travaillais pour IBM et Disney nous a embauchés pour écrire un jeu multijoueur 3D en temps réel pour le centre Epcot, et j'ai pu utiliser le noyau TCP de MUD ++ comme base. serveur de jeu! Si je n'avais pas possédé mon propre code, je n'aurais pas été autorisé à l'utiliser, et cela m'a honnêtement sauvé des semaines de temps de programmation. En fin de compte, je suis fier des choix que j'ai faits et j'ai une histoire à raconter à mes enfants.

Les gens minimisent et sous-estiment l'avantage de commencer avec le cadre de travail de quelqu'un d'autre.

Si vous pensez le "posséder", testez-vous. Recommencez avec un livre Python à côté de vous. Voyez ce que ça fait. Ne trichez pas et ne regardez pas l'ancien code. Regardez la sortie. Obligez-vous à réfléchir à chaque aspect de votre propre chef, en faisant des recherches honnêtes. Vous serez meilleur pour cela et aurez probablement un meilleur produit.

Avant de faire cela, essayez cependant de contacter l'auteur original. Demandez-leur s'ils seraient disposés à relicense. Si vous envisagez de vendre des fichiers binaires, proposez des redevances. De nombreux auteurs qui ont publié GPL dans les années 90 et 2000 ont aujourd'hui entre 30 et 40 ans et comprennent ce que signifie vivre avec des logiciels. J'ai vu plus d'une nouvelle licence de GPL à MIT, Apache, Boost ou BSD.

Enfin, une licence ne remplace pas les droits antérieurs de code que vous pourriez avoir. Ou si vous avez écrit un add-on propre, indépendamment, par exemple, si vous avez écrit un moteur TCP en tant qu’add-on à un jeu Tetris à un seul joueur et qu’il peut rester autonome (surtout si vous avez déjà publié une autre licence), pouvez réutiliser votre code dans d'autres projets. Vous avez aussi des droits d'auteur.

Ma croyance est libre est libre. Si vous devez attacher des chaînes, n'appelez pas cela gratuitement. Des années plus tard, quelqu'un m'a envoyé un mail me disant qu'ils utilisaient mon jeu dans un moteur commercial, principalement le protocole TCP et éventuellement l'interpréteur de code-barres. Ils gagnaient de l'argent. Cela ne me dérangeait pas du tout. J'étais heureux comme je le suis encore aujourd'hui, en tant que père fier.

Codenheim
la source
4
En fait, j'allais suggérer cela et je me suis perdu dans mon histoire. Oui, certainement, consultez l'auteur original, rendez-lui hommage, pour ainsi dire, et vous serez probablement surpris de la fréquence à laquelle l'auteur est simplement heureux que vous ayez pris la peine de demander. Et beaucoup de jeunes universitaires qui avaient acquis une grande popularité dans la GPL dans les années 90 et 2000 réalisent maintenant que les programmeurs doivent gagner leur vie.
codenheim
13
J'aime cette réponse et je voudrais passer au vote suivant, mais je ne peux pas, à cause de toutes les réactions anti-GPL décrites dans le dernier paragraphe. La chaîne que la GPL attache est que les chaînes ne peuvent plus être attachées à l'avenir.
Michael Shaw
9
Bonne réponse, et surtout pour recommander un accord avec l'auteur original. L'autosuffisance est souvent un chemin qui mène à la pauvreté et, bien que la réécriture de toute une bibliothèque / plate-forme / application puisse être une tentative louable, ce n'est pas toujours le cas.
Dan1701
16
@ MichaelShaw: En fait, je pensais que c'était la partie la plus brillante de cette réponse. Votre demande de l'autre côté est factuellement erronée . Si l'auteur du code GPLd décide de publier de nouvelles versions de son code sous une licence différente, elles ont bien leurs droits. Ils attachent les chaînes non pas à eux-mêmes, mais uniquement à ceux avec qui ils "partagent" leur code. La meilleure façon de décrire cela est un manque fondamental de foi en l’humanité.
back2dos
9
À mon avis, les licences de type BSD rendent ce code, ici, gratuit, ce qui est simple. Les licences de type GPL visent à créer une communauté / un écosystème / un logiciel libre en concurrence avec des logiciels fermés et non libres. Pour ce faire, ils effectuent un certain nombre de mouvements stratégiques. La longueur et la variété des licences GPL et de licences similaires (et leur évolution dans le temps) montrent qu'il s'agit d'une entreprise complexe qui fait appel à de nombreux jugements de valeur. Si ceux qui préfèrent l’un perçoivent l’autre comme non-libre ou ceux qui préconisent que l’autre tourne contre eux, ils perdent tous les deux.
Steve Jessop
31

Ce scénario est couvert dans la FAQ sur la GPL :

Que dit la GPL à propos de la traduction de code dans un autre langage de programmation?

En vertu du droit d'auteur, la traduction d'une œuvre est considérée comme une sorte de modification. Par conséquent, ce que dit la GPL à propos des versions modifiées s’applique également aux versions traduites.

Philipp
la source
Cette partie est claire, mais elle devient floue lorsque je développe le reste du programme (du moins, à mon avis.) Le programme original était un jeu maudit, mais mon travail au-delà de la traduction inclut l’ajout de réseaux pour que les joueurs puissent concurrencer la tête à tête ainsi que de la refaire en le rendant plus modulaire / extensible. En substance, le moteur de jeu partage peu de similitudes avec l'original, mais le jeu lui-même est lourd. Cela nous ramène à ma question connexe: le moteur est-il maintenant sous GPL ou serais-je en mesure de le retirer et de le réutiliser pour un projet de licence MIT ou BSD.
Landon
7
@Landon Votre travail est toujours un dérivé d'un travail GPL, il est donc lié aux termes de la GPL.
Philipp
1
@Landon: ce qui détermine si la GPL s'applique n'a rien à voir avec la GPL, c'est si votre résultat final est un "travail dérivé" ou non. Ajouter plus d'éléments ne transforme pas un travail dérivé en travail non dérivé, car en droit, il ne s'agit pas de la proportion du travail dérivé, mais de la quantité brute. Une conversion de routine dans une autre langue est également dérivée, et c'est ce que la FAQ vous informe / vous rappelle. La question que vous devez poser à votre avocat est la suivante: "Compte tenu de mes procédures, un tribunal jugera-t-il qu'il s'agit d'un travail dérivé?".
Steve Jessop
... cependant, cette réponse se concentre sur les "fonctions traduites textuellement" qui sont vraisemblablement dérivées, mais que vous avez l'intention de supprimer. En tant que tel, je ne pense pas que cela couvre vraiment le scénario prévu. Il couvre votre scénario actuel et le scénario dans lequel vous vous trouveriez si vous commettiez une erreur et ne parveniez pas à exciser tout ce dont vous aviez besoin.
Steve Jessop
8

Il est douteux que, même si vous réécriviez toute la bibliothèque à partir de rien, cela passerait le contrôle de la loi. Le code serait considéré comme "corrompu" parce que vous l'avez vu dans la bibliothèque sous licence GPL.

L’approche standard de ce problème s’appelle "mise en oeuvre en salle blanche". Vous écrivez un document d'exigences et demandez à quelqu'un d'autre de le mettre en œuvre (qui n'a pas vu le code GPL).

Voir aussi cette question: Réécrire le code GPL pour changer de licence

Comme l’a bien dit la traduction chinoise de Harry Potter, sa traduction en chinois reste un travail dérivé, même si toutes les informations ont été remplacées.

Bien sûr, la probabilité que vous soyez poursuivi pour avoir réécrit une bibliothèque sous licence GPL (et la moralité de vous fier à cette faible probabilité) sont des discussions totalement différentes.

En ce qui concerne l’ajout de fonctionnalités au code original, c’est (une partie de) la définition même des travaux dérivés: l’ ajout au travail original. Peu importe combien vous avez ajouté ou la taille du travail initial: il est toujours dérivé.

Sir Athos
la source
3
Je ne suis pas sûr d’apprécier le choix de l’analogie: la question initiale semble plus proche du fait qu’ils pensent qu’ils regroupaient à l'origine leurs documents avec Harry Potter, mais ils souhaitent à présent les regrouper avec leur propre roman épique fantastique avec magie et méchants. principalement dans une école dans un château.
1
@Hurkyl So 50 Shades of Grey?
Yamikuronue
8
Avoir vu le code ne signifie pas que vous l'avez copié. Une implémentation en salle blanche est utile si vous vous attendez à ce que le propriétaire du code d'origine n'aime pas ce que vous faites et vous poursuive en justice. Vous pouvez donc dire au tribunal "nous n'avons pas copié le code; même si nous l'avions voulu, nous ne pouvait pas "qui est une défense forte. Après avoir vu le code, vous pouvez toujours dire "nous n'avons pas copié le code" tant que c'est la vérité.
gnasher729
2
D'accord avec @ gnasher729. GPL indique spécifiquement que vous êtes autorisé à étudier le code. Le principe est que l'auteur l'a publié pour vous apprendre (entre autres choses). Pour cette raison, je n'ai jamais appliqué l'argument de la salle blanche au code GPL. On ne peut pas publier de livre de recettes et poursuivre en justice les personnes qui créent leurs propres recettes, à moins que le code ne soit bien sûr breveté. La protection par brevet couvre alors les techniques et les inventions, mais pas la mise en œuvre (autant que je sache). Le droit d'auteur et le brevet sont des problèmes différents.
codenheim
1
Je dirais qu'il y a une très faible probabilité de se retrouver dans une salle d'audience si vous enfreignez GPL, car à une ou deux exceptions près chaque fois qu'il y a un problème, les avocats de ceux qui violent violent la GPL comprennent la GPL, mais leur disent soit arrêter ou faire une affaire. Ce fut certainement mon expérience chaque fois que j'ai eu à écrire une lettre à propos d'une violation. Et il y a des avocats pro bono qui défendront la GPL pour le développeur d'origine. En réalité, le meilleur conseil est de parler au codeur d'origine. J'ai demandé aux gens de code dual / relicense et ils ont presque toujours dit d'accord.
Elin
7

Observation: la GPL n’est pertinente que si vous publiez votre travail. L'avez-vous déjà publié?

Observation: Ce n'est pas un site Web de conseil juridique, alors jetez tout ce FUD juridique et appliquez le bon sens.

Opinion: La GPL, ou toute licence, ne protège pas les idées , elle revendique le code source, quelle que soit sa taille. Donc, si et seulement si votre travail "dérivé" ne peut pas être identifié comme étant dérivé de l'original, parce que vous avez modifié la structure du code et réimplémenté toutes les fonctionnalités, il n'est pratiquement plus dérivé, car être indiscernable d'une mise en œuvre de salle blanche.

C’est très difficile (impossible?) D’atteindre quand vous modifiez une base de code existante, au lieu de partir de zéro.

Martin Ba
la source
8
"Observation: Ce n'est pas un site Web de conseillers juridiques, alors jetez tout ce FUD juridique et appliquez le bon sens." Euh, puisqu'il s'agit clairement d'une question juridique, la solution ne consiste pas à prétendre que les problèmes juridiques n'existent pas, mais à faire appel à un avocat. Je crois comprendre qu'un travail dérivé ne peut cesser d'être un travail dérivé simplement parce que vous dérivez davantage.
David Richerby
1
@DavidRicherby: S'il s'agit d'une question juridique, la réponse est spécifique à la juridiction et le q doit être fermé car trop localisé. :-)
Martin Ba
2
@MartinBa - le droit international est à peu près d'accord sur le droit d'auteur. Des variations locales existent, mais je ne pense pas que la question / les réponses soient nécessairement trop localisées pour être utiles.
cloudfeet
5

Vous possédez les droits d'auteur pour tout code que vous écrivez. La GPL a pour mandat: tout code que vous contribuez ou que vous publiez en même temps que le code GPL doit également être publié sous une licence similaire. Cependant, le droit d'auteur est toujours à vous.

Ainsi, si vous publiez votre logiciel à mi-chemin de la réécriture (il y a donc un mélange de votre code et de votre ancien code), vous devez alors publier cette partie de votre code en tant que GPL et cela ne peut pas être révoqué. Cependant, le détenteur du droit d'auteur est celui qui décide des conditions de licence. Vous avez donc toujours le droit de "concéder deux licences" à cette partie du code, y compris en la combinant avec un autre code que vous avez écrit seul et en vendant / ré-licence, etc.

Mises en garde:

  • Bien que le droit d'auteur sur le code que vous écrivez soit le vôtre par défaut, il peut être modifié par un autre contrat / accord, par exemple un CLA spécifiant le transfert du droit d'auteur, ou un contrat avec un employeur qui détient tout le travail que vous faites sur "leur temps".
  • Que votre ré-écriture constitue suffisamment d'un "travail dérivé" pour partager le droit d'auteur avec l'auteur original est une question de degré. Si vous traduisez le code ligne par ligne dans une autre langue ( comme votre question l’a mentionné ), ces parties pourraient alors être considérées comme dérivées. Si vous implémentez un remplacement compatible avec l'API sans examiner les détails, ce ne serait probablement pas le cas.

(source: une session "copyright et open-source" organisée par ma société il y a quelques semaines)

nuage de pieds
la source
Vous voudrez peut-être remplacer "document" par "contrat" ​​ou "accord". Il ne suffit pas d'écrire sur un papier "DougM possède le code de cloudfeet". Nous aurions besoin d'un échange juridique qui passerait en revue par un tribunal.
DougM
Cela dépend de la juridiction - du moins où je suis, même les contrats verbaux sont contraignants, simplement difficiles à prouver. Un post-it avec une écriture appropriée résiste assez bien en théorie . : p
cloudfeet
Cependant, votre argument est bon et que le contrat / accord est une meilleure description - merci :)
cloudfeet
3

Oui.

Les autres réponses utilisent beaucoup trop de texte expliquant les opinions sur l'opportunité de le faire ou non, mais ces opinions ne sont pas très pertinentes pour la question.

Le fait est que vous aurez un nouveau travail une fois que vous aurez remplacé les dernières pièces, qui ont certes été construites en regardant un travail sous GPL. Ce n'est pas une préoccupation majeure dans la loi sur le droit d'auteur (les brevets seraient un autre problème). Tout ce que vous distribuez sera votre création.

La théorie selon laquelle le droit d'auteur sur un logiciel correspond à la somme de droits d'auteur partiels est abondante. Par exemple, le MPL reconnaît explicitement ce modèle. La poursuite entre Google et Oracle a abouti à des droits d'auteur au niveau de la ligne.

MSalters
la source
3
Une œuvre construite "en regardant" une autre œuvre est une œuvre dérivée et serait tachée du même droit d'auteur que l'œuvre que vous "avez regardée".
DougM
1
@DougM: Désolé, mais c'est une hypothèse très conservatrice que je n'ai jamais vue utilisée avec succès devant un tribunal. N'oubliez pas que si cette théorie avait une pertinence juridique, elle s'appliquerait également aux livres - le code informatique ne dispose pas de lois spéciales pour déterminer ce qu'est un travail dérivé. Personne ne dira que votre livre est un dérivé de Shakespeare simplement parce que vous lisez l'une de ses pièces à l'école. Ainsi, ce précédent établit que la barre du "travail dérivé" est beaucoup plus élevée que celle de "avoir lu un travail similaire".
MSalters
1
GPL indique spécifiquement que vous êtes autorisé à étudier le code. Ce n'est pas une propriété intellectuelle, c'est gratuit, open source. Dans la vie de GPL, je n'ai vu aucun soutien juridique à l'affirmation selon laquelle le fait de regarder une recette publiée pour créer ma propre recette implique un dérivé.
codenheim
1
On peut se demander jusqu'où aurait pu aller Linux si le remplacement du code Unix par du code original n'était pas suffisant.
user2338816
3
@ user2338816 Linux n'a pas commencé avec le code Unix, mais avec MINIX. Et techniquement, il est possible que MINIX ait eu un procès contre Linux. Cela dépend de la façon dont Linux a réécrit son code et de la licence sous laquelle le code MINIX a été partagé avec les universités. Cependant, cela dépend aussi de la politique et de l'argent. MINIX veut-il vraiment s'en prendre à Linux, et est-ce que Linux a l'argent (par le biais de sociétés comme Red Hat) pour les combattre?
CrazyCasta
1

La réponse courte est que vous ne pouvez pas savoir.

Lorsque vous parlez à Richard, vous constatez qu'il est "fou comme un renard" dans bon nombre de ses implémentations. La GPL est écrite spécifiquement pour avoir des ambiguïtés et des formulations peu claires. Celles-ci sont généralement exprimées contre les avantages de l'auteur de la licence, mais donnent également des préoccupations à votre avocat spécialisé en propriété intellectuelle. Intelligemment, votre avocat en propriété intellectuelle est de plus en plus préoccupé par le développement de l’entreprise. Une petite entreprise commerciale effectuant une "interprétation raisonnable" de la GPL peut constituer un risque acceptable, mais une grande entreprise de logiciels pourrait trouver plus prudent de brûler toute une équipe qui a réussi à se faire reprocher GPL.

Il n'y a pas de reponse. Il n'y aura pas de réponse. C'est la réponse.

Charles Merriam
la source