web-dev-qa-db-fra.com

Ship of Theseus appliqué à GPL - Puis-je relicenser mon programme si je remplace toutes les pièces dérivées?

J'ai traduit un programme GPLv2 C en Python, mais j'ai trouvé qu'il était difficile d'étendre comme prévu et de réécrire des parties importantes de celui-ci. Le programme est maintenant structurellement complètement différent, mais plusieurs fonctions traduites textuellement sont utilisées.

Le Ship of Theseus Paradox (comme indiqué sur Wikipédia) "soulève la question de savoir si un objet dont tous ses composants ont été remplacés reste fondamentalement le même objet."

Si j'arrivais à écrire des remplacements pour les fonctions textuelles, serais-je en mesure d'accorder une nouvelle licence à une licence que je préfère?

En relation, pourrais-je retirer l'architecture évoluée et 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 désormais "entaché" de la licence GPL.

Suivi : J'ai décidé de contacter le détenteur des droits d'auteur et j'ai reçu l'autorisation de remettre en licence . Parfois, la meilleure façon est d'interagir socialement plutôt que par programme!

101
Landon

Tout d'abord, la réponse est non (pour une traduction), vous ne pouvez pas légitimer la licence ou faire quoi que ce soit en dehors des légalités de licence d'origine. Vous avez peut-être très bien fait 10 fois le travail de l'auteur d'origine, mais ce n'est pas grave, c'est viral. Pas seulement parce que c'est de la GPL, mais parce que ce n'est pas une conception propre ou une réécriture.

J'ai lutté brièvement avec cela en 1992 quand j'avais fait une réécriture massive d'une ancienne base de code MUD. Nous avons eu un jeu réussi, mais nous voulions faire notre propre truc, et les gens étaient prêts à payer pour cela, mais la licence DikuMUD nous interdit strictement de gagner de l'argent. Un concurrent, à l'époque, avait également basé le leur sur la même base de code, et ils ont choisi d'ignorer ouvertement le droit d'auteur, d'en arracher toutes les traces et de mentir à tout le monde, y compris eux-mêmes. Leur logique était "aucun code original n'existe" et "nous avons fait des réécritures et des améliorations massives" et ignorant généralement le fait qu'ils ont 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 fait des recherches sur la loi sur le droit d'auteur et consulté ma conscience, et 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 jeu à partir de zéro.

J'ai donc décidé de mettre mon argent où ma bouche était et d'écrire à partir de zéro, avec une copie de W. Richard Steven Programmation réseau UNIX avec moi à tout moment, j'ai commencé. L'écriture à partir de zéro, à ma façon, m'a appris beaucoup plus que lorsque j'avais réécrit DikuMUD, et cela m'a aussi appris que je ne comprenais pas vraiment ce que cela signifiait de 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 la mienne. Je l'ai nommé MUD ++ et l'ai publié sous BSD. Mal écrit en C++, c'était toujours le premier MUD C++ gratuit 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 laisser tomber les joueurs, et bientôt tout le monde volait la fonctionnalité ( et j'ai noté beaucoup Les MUD GPL ont des extraits de mon code BSD - toujours intéressant de voir comment la GPL peut détourner BSD-ware mais pas vice-versa). Finalement, j'ai évolué, donc ce n'était pas comme si la décision était une fortune pour ma fortune, mais alors que les autres gars ont fait beaucoup d'argent pendant un certain temps, la dernière fois, j'ai regardé qu'ils avaient diminué, dans un monde de jeux graphiques il n'y a plus 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 Epcot Center, et j'ai pu utiliser le TCP = core de MUD ++ comme base pour ce 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 épargné des semaines de codage. Au final, je suis fier du J'ai fait des choix et j'ai une histoire à raconter à mes enfants.

Les gens sous-estiment et sous-estiment l'avantage de commencer avec le cadre de quelqu'un d'autre sur lequel s'appuyer.

Si vous pensez que vous le "possédez", testez-vous. Recommencez avec un livre Python à côté de vous. Voyez ce que ça fait. Ne trichez pas et ne regardez pas l'ancienne base de code. Regardez la sortie. Forcez-vous à réfléchir à tous les aspects par vous-même, en faisant des recherches honnêtes. Vous serez meilleur pour cela et vous aurez probablement un meilleur produit.

Avant de faire cela, essayez de contacter l'auteur d'origine. Demandez-leur s'ils seraient prêts à renouveler leur licence. Si vous prévoyez de vendre des fichiers binaires, offrez des redevances. De nombreux auteurs qui ont publié des choses GPL dans les années 90 et 2000 sont maintenant dans la trentaine, la quarantaine et la cinquantaine et comprennent ce que signifie gagner sa vie dans un logiciel. J'ai vu plus d'un licencier leurs trucs de la GPL au MIT, Apache, Boost ou BSD.

Enfin, une licence ne remplace pas les droits antérieurs sur le 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 comme add-on pour un jeu Tetris à un seul joueur, et qu'il peut être proprement autonome (surtout si vous avez précédemment publié sous une autre licence), vous pouvez réutiliser votre code dans d'autres projets. Vous avez également des droits d'auteur.

Ma croyance est gratuite est GRATUITE. Si vous devez attacher des chaînes, ne l'appelez pas gratuitement. Quelqu'un m'a posté des années plus tard et m'a dit qu'il avait utilisé mon jeu dans un moteur commercial, principalement le TCP et peut-être l'interprète de bytecode. Ils faisaient de l'argent. Cela ne me dérangeait pas du tout. Je était heureux comme je le suis encore aujourd'hui, comme un fier père.

95
codenheim

Ce scénario est couvert dans la FAQ GPL :

Que dit la GPL à propos de la traduction de code dans un langage de programmation différent?

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 la GPL dit des versions modifiées s'applique également aux versions traduites.

31
Philipp

Il est douteux, même si vous avez réécrit toute la bibliothèque à partir de zéro, qu'elle passerait un examen juridique. Le code serait considéré comme "entaché" car vous l'avez vu dans la bibliothèque sous licence GPL.

L'approche standard de ce problème est appelée "mise en œuvre en salle blanche". Vous écrivez un document d'exigences et demandez à quelqu'un d'autre de l'implémenter (qui n'a pas vu le code GPL).

Voir aussi cette question: Réécriture du code GPL pour changer de licence

Comme quelqu'un l'a bien dit, une traduction chinoise de Harry Potter est toujours un travail dérivé, même si toutes les informations ont été remplacées.

Bien sûr, la probabilité que vous soyez poursuivi pour la réécriture d'une bibliothèque sous licence GPL (et la moralité de s'appuyer sur cette faible probabilité) sont des discussions entièrement différentes.

En ce qui concerne l'ajout de fonctionnalités au code d'origine, c'est (une partie de) la définition même des œuvres dérivées: l'ajout à l'œuvre originale. Peu importe le montant que vous avez ajouté ou la taille du travail initial - c'est toujours dérivé.

8
Sir Athos

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 fait pas de droits d'auteur, elle revendique le code source, peu importe la taille de sa partie. Donc, si, et seulement si votre travail "dérivé" ne peut pas être identifié comme étant dérivé de l'original, car vous avez modifié la structure du code et réimplémenté la fonctionnalité all, il est à toutes fins pratiques plus dérivé, car, bien, il serait indiscernable d'une mise en œuvre de salle blanche.

C'est très difficile (impossible?) À réaliser, cependant, lorsque vous avez une base de code existante, vous modifiez, au lieu de partir de zéro.

7
Martin Ba

Vous détenez les droits d'auteur pour tout code que vous écrivez. Ce que la GPL exige: tout code que vous contribuez ou publiez avec le code GPL, vous devez également le publier sous une licence similaire. Cependant, le droit d'auteur est toujours le vôtre.

Donc, si vous publiez votre logiciel en cours de réécriture (il y a donc un mélange de votre code et de l'ancien code), vous devez libérer cette partie de votre code sous 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 "sous-licencier" essentiellement cette partie du code, y compris en la combinant avec un autre code que vous avez écrit seul et en vendant/remettant en 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 une CLA qui spécifie le transfert de droits d'auteur ou un contrat avec un employeur qui possède tout le travail que vous faites sur "leur temps".
  • la question de savoir si votre réécriture constitue suffisamment une "œuvre dérivée" pour que vous finissiez par partager le droit d'auteur avec l'auteur d'origine 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 bien compter comme dérivées. Si vous implémentez un remplacement compatible API sans regarder les détails, cela ne le sera probablement pas.

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

5
cloudfeet

Oui.

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

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

De nombreux éléments étayent la théorie selon laquelle le droit d'auteur sur un logiciel est la somme de droits d'auteur partiels. Par exemple, la MPL reconnaît explicitement ce modèle. Le procès Google/Oracle est descendu aux droits d'auteur au niveau de la ligne.

3
MSalters

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

Lorsque vous parlez avec Richard, vous trouvez 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 le bénéfice de l'auteur de la licence, mais donnent également des inquiétudes à votre avocat en propriété intellectuelle. Astucieusement, cela inquiète de plus en plus votre avocat en propriété intellectuelle à mesure que l'entreprise s'agrandit. Une petite entreprise commerciale faisant l '"interprétation raisonnable" de la GPL pourrait être un risque acceptable, mais une grande société de logiciels pourrait juger plus prudent de brûler toute une équipe qui a réussi à se faire une idée de la GPL.

Il n'y a pas de reponse. Il n'y aura pas de réponse. Voilà la réponse.

1
Charles Merriam