web-dev-qa-db-fra.com

Est-il possible de réécrire chaque ligne d'un projet open source d'une manière légèrement différente et de l'utiliser dans un projet open source?

Il y a du code qui est GPL ou LGPL que j'envisage d'utiliser pour un Projet iPhone.

Si je prenais ce code (JavaScript) et le réécrivais dans une langue différente pour l'utiliser sur l'iPhone, serait-ce un problème juridique?

En théorie, le processus qui s'est produit est que j'ai parcouru chaque ligne du projet, appris ce qu'il fait, puis réimplémenté les idées dans une nouvelle langue.

Il me semble que cela revient à apprendre à implémenter quelque chose, mais à le réimplémenter séparément de la licence d'origine. Par conséquent, vous n'avez copié que l'algorithme, que vous auriez sans doute pu apprendre ailleurs que dans le projet d'origine.

La licence couvre-t-elle également l'implémentation spécifique ou l'algorithme?

ÉDITER------

Vraiment content de voir ce sujet créer une bonne conversation. Pour donner un peu plus de soutien au projet, le code impliqué fait une sorte d'analyse audio. Je pense qu'il n'est pas trivial d'apprendre ou de mettre en œuvre, bien que j'étais prêt à me lancer dans cette tâche (je suis au niveau où je peux mettre en œuvre un FFT = algorithme, et cela allait aller au-delà.) C'est un script assez faible LOC , donc je ne pensais pas qu'il serait trop difficile de faire un port droit.

J'aime vraiment l'idée de relancer mon port ainsi que de l'utiliser dans l'application. Je ne vois aucun problème à cela, et ce serait une excellente façon de redonner quelque chose à la communauté.

J'allais ajouter une phrase sur le fait de ne pas vouloir discuter des questions morales, mais je suis très content de ne pas l'avoir fait car il semble avoir déclenché un peu le débat.

Je me sens toujours un peu bizarre d'utiliser le code open source pour apprendre. Est-ce à dire que tout ce que l'on apprend d'un projet open source n'est pas autorisé à être utilisé dans un projet open source? Et combien de temps après ou différemment une implémentation ne doit-elle pas être considérée comme une violation de la licence? Sombre!

EDIT 2 --------

Question de suivi

129
Chris Barry

Je ne suis pas avocat. Ce n'est pas un avis juridique.

Cela dit, prendre chaque ligne d'une application et la modifier légèrement dans le seul but de contourner la loi sur le droit d'auteur est manifestement, de toute évidence, créer une œuvre dérivée sans aucune défense plausible. Même le juge et le jury les plus achetés trouveront certainement à votre encontre si jamais vous êtes traîné en justice.

À titre de comparaison: les entreprises qui ont besoin de réécrire quelque chose pour l'interopérabilité embauchent généralement différents groupes de personnes pour comprendre la source et créer le port ("mise en œuvre en salle blanche"), afin que personne ne puisse les accuser de créer un dérivé. travail. Ce que vous proposez est exactement le contraire.

258
Kilian Foth

Selon Betsy Rosenblatt de la Harvard Law School Copyright Basics :

Qu'est-ce qui constitue une violation du droit d'auteur?

Sous réserve de certains moyens de défense, c'est une violation du droit d'auteur pour une personne autre que l'auteur de faire ce qui suit sans la permission de l'auteur:

  1. copier ou reproduire l'œuvre
  2. créer une nouvelle œuvre dérivée de l'œuvre originale (par exemple, en traduisant l'œuvre dans une nouvelle langue, en copiant et en déformant l'image, ou en transférant l'œuvre sur un nouveau moyen d'expression)
  3. vendre ou donner l'œuvre, ou une copie de l'œuvre, pour la première fois (mais une fois que l'auteur l'a fait, le droit de vendre ou de donner l'article est transféré au nouveau propriétaire. C'est ce qu'on appelle le "premier doctrine de la vente: une fois que le titulaire du droit d'auteur a vendu ou donné l'œuvre ou une copie de celle-ci, le destinataire ou l'acheteur peut faire ce qui lui plaît avec ce qu'elle possède.) 17 USC §109 (a).
  4. effectuer ou afficher l'œuvre en public (ce droit ne s'applique pas aux arts visuels) sans l'autorisation du titulaire du droit d'auteur. 17 U.S.C. §106. C'est également une violation du droit d'auteur de violer les "droits moraux" d'un auteur tels que définis par 17 U.S.C. 106A. Les droits moraux sont discutés à cet endroit.

Il me semble que vous violeriez l'élément n ° 2 ci-dessus.

Cependant, je pense que la terminologie est un gros problème ici. Vous avez dit: "Si je prenais ce code (javascript) et le réécrivais dans une langue différente pour l'utiliser sur l'iPhone, serait-ce un problème juridique?" (c'est moi qui souligne). Réécrire quelque chose peut être différent ou non de la copie. Par exemple, si vous avez regardé la Joconde, puis êtes allé dans votre propre studio et avez peint ce dont vous vous souvenez, il me semble que vous créez une œuvre originale qui est votre expression de la façon dont vous avez perçu l'original. Si, cependant, vous aviez une copie de la Joconde dans votre studio, et que vous en avez peint une copie, plutôt que ce dont vous vous souvenez, alors je pense que vous copiez définitivement.

De la même manière, si vous utilisez MS Word, et peut-être même si vous regardez une partie du code, puis que vous allez écrire votre propre traitement de texte qui présente des similitudes fonctionnelles, je crois qu'il y a des cas où il a été décidé que "regardez & feel "n'est pas protégé par les droits d'auteur. (Cela ne dit rien sur les brevets, bien sûr.)

Vous devriez probablement demander à un avocat (car je ne suis pas un).

Mon opinion personnelle est qu'un "port" est un travail dérivé et vous devez donc libérer le code porté dans la même licence.

73
Scott Whitlock

Je ne suis pas avocat, ce n'est pas un conseil juridique, et si vous vous fiez à ce que je dis dans une entreprise douteuse (1) vous êtes un idiot, et (2) je décline toute responsabilité. C'est ce que j'ai entendu et lu au fil des ans par des gens qui semblent savoir.

Les juges ne jouent pas aux jeux "en théorie". Ils n'aiment pas les gens qui inventent des façons de déformer la loi qui sont peut-être acceptables en termes d'analyse logique mais qui sont contraires à l'intention évidente et à la façon dont les juges ont statué dans le passé. N'essayez jamais d'être trop intelligent sur la loi s'il y a une chance que vous vous retrouviez dans une salle d'audience pour défendre votre interprétation.

Il est généralement admis que prendre un roman et en faire un film ou le traduire dans une autre langue crée des œuvres dérivées, et ce sont des transformations beaucoup plus importantes que celles dont vous parlez, et nécessitent beaucoup plus de créativité. Regardez-les comme des exemples; un juge le fera certainement.

Aux États-Unis, il y a eu des cas où la copie d'un programme plus lâchement que vous en avez parlé a été jugée comme une infraction. Aux États-Unis, attendez-vous à ce qu'ils soient utilisés comme précédents.

En d'autres termes, vous allez démarrer une entreprise commerciale sur une base qui sera jugée illégale si quelqu'un cherche à regarder. Pas une bonne idée.

De plus, si vous avez le moindre respect pour l'idée du droit d'auteur, ou tout contrôle qu'un auteur peut avoir sur ce qu'il publie, vous êtes hypocrite. Le code source a été mis à votre disposition sous certaines conditions. Vous violez la loi et l'intention expresse de l'auteur.

Désormais, les algorithmes ne peuvent pas être protégés par des droits d'auteur. Aux États-Unis, les tribunaux ont jugé qu'il était impossible de protéger une idée par copyright, et que tout ce qui est normalement protégé par le droit d'auteur et qui est le seul moyen d'exprimer quelque chose n'est pas protégé par le droit d'auteur. Par conséquent, vous pouvez certainement utiliser l'algorithme.

Il existe un moyen de copier un algorithme protégé contre les droits d'auteur: l'approche "salle blanche", où une personne ou un groupe étudie le code source et crée une description de l'algorithme (avec le moins de détails de mise en œuvre possible), et une autre personne ou Le groupe écrit un nouveau code sans aucune référence à la source d'origine. Plus vous vous rapprocherez de cela, plus vous serez en sécurité.

Vous voudrez peut-être aussi considérer qu'en publiant la question ici, vous avez publié une intention possible de violer le droit d'auteur, sous une forme qui peut probablement vous être attribuée si quelqu'un a le droit légal de le faire (comme la découverte dans une affaire civile, ou une enquête policière ordinaire si cela se révèle être une affaire pénale).

56
David Thornley

Pourquoi ne pas simplement ouvrir votre port source et laisser le reste de votre projet être fermé?

Pour citer un autre réponse à moi:

L'open source fonctionne, car c'est une communauté. Parce que c'est réciproque. Vous n'obtenez pas d'argent en écrivant du code open source. Vous obtenez de l'argent en consommant du code open source. Alors pourquoi écrivez-vous du code open source? Pour donner quelque chose en retour.

Mais d'un point de vue plus pragmatique:
Si le code que vous avez porté est vraiment si utile que vous pensez que vous devriez le protéger pour conserver un avantage (ce que vous n'avez pas, car les personnes utilisant Appcelerator peuvent l'utiliser immédiatement) , il y aura tôt ou tard un port open source. Il sera maintenu par un certain nombre de personnes, il sera utilisé et ainsi testé par encore plus de personnes et il sera affiné pour incorporer les principes promus par la langue cible et pour mieux s'interfacer avec les cadres répandus sur votre plate-forme. Tôt ou tard, votre code ressemblera à un morceau de merde par rapport à lui.
L'open source est en fait votre chance de rester au top du sillage. C'est gagnant-gagnant. Si vous avez de la chance, vous obtiendrez même des responsables pour ce code et pourrez vous concentrer sur la logique de votre application, ce qui rend votre produit unique.

16
back2dos

Je ne suis pas avocat, je n'en joue même pas à la télé.

Mais je pense que le problème ici est la dérivation. Si votre nouveau travail est dérivé du travail GPL ou LGPL, alors ce travail doit respecter les exigences de la GPL ou LGPL. Votre travail sera clairement dérivé, même si vous le réécrivez complètement ligne par ligne dans une autre langue.

8
T.J. Crowder

Je ne suis pas non plus avocat. Si vous vous demandez s'il s'agit d'un problème juridique, vous ne devriez probablement même pas poser cette question et simplement écrire la vôtre.

Mon opinion personnelle à ce sujet:

Si vous prenez le code javascript et le réécrivez dans une langue différente, cela s'appelle le portage et est considéré comme un travail dérivé. Si vous écrivez votre propre version du logiciel et utilisez le code javascript comme référence pour savoir comment fonctionnent certains algorithmes, vous êtes probablement d'accord.

Je me tromperais du côté de demander à un avocat.

En tant qu'addendum, la loi sur le droit d'auteur vous permet essentiellement de ne rien faire [*] avec le code source publié autre que de le lire. La licence sous laquelle le titulaire du droit d'auteur l'a publiée vous permet certains privilèges supplémentaires non prévus par la loi sur le droit d'auteur. Prendre et utiliser le code d'une manière autre que celle autorisée dans la licence n'est pas différent de prendre et d'utiliser des œuvres protégées par le droit d'auteur sans obtenir la permission de l'auteur.

[*] Avec des exceptions pour une utilisation équitable.

5
Dave Rager

Comme d'autres le disent, il s'agit probablement d'un travail dérivé et donc d'une violation directe des conditions de la GPL si vous choisissez de le faire "séparément de la licence d'origine" (je suppose que cela signifie que vous supprimeriez la GPL et utiliseriez autre chose, même une source fermée) .

Même s'il glisse comme "légal", c'est clairement immoral. L'auteur d'un logiciel sous GPL a choisi une telle licence qui étend les libertés aux œuvres dérivées. Que ce soit une bonne ou une mauvaise chose, c'est l'intention de l'auteur , et vous devez respecter cela. Ils vous ont donné le code à lire et à modifier, fork et autre, demandant seulement en retour que vous ne modifiez pas les conditions. Il est également probable que vous ne deviez pas non plus payer le logiciel lui-même.

Je sais que l'argent est difficile, mais sous cette forme lorsque vous peignez votre idée, c'est du vol. Bien sûr, vous auriez pu apprendre cet algorithme ou tout autre détail d'implémentation d'une autre source, mais vous ne l'avez pas fait, comme vous l'avez dit vous-même.

Si la morale ne vous concerne pas, souvenez-vous qu'étant donné la légalité grise de ce que vous faites (ou êtes sur le point de faire), il est très possible que les auteurs originaux contactent le Apple car Jusqu'à présent, Apple n'a pas tardé à supprimer les logiciels qui enfreignaient la GPL. Une autre possibilité est un procès.

Si j'étais vous, je considérerais soit GPL-ing mon propre travail (ce n'est pas une si mauvaise chose!) Ou acquérir les connaissances par d'autres moyens.

5
Tamás Szelei

Que diriez-vous d'essayer de faire la bonne chose et de ne pas voler les idées de quelqu'un? Vous pouvez simplement envoyer un e-mail au créateur du code et lui demander si vous pouvez baser certaines parties de votre projet sur les leurs. Beaucoup de gens n'auraient aucun problème avec ça. S'ils ont un problème avec cela, alors même en mettant de côté les problèmes juridiques, pourquoi voudriez-vous ternir votre réputation de professionnel dans la communauté? Le fait que cette question soit formulée plus ou moins comme "Que puis-je m'en tirer?", Par opposition à "Que dois-je faire?" est un peu troublant.

En résumé, demandez à la personne (ou aux personnes) qui a écrit le code.

5
Morgan Herlocker

Non, ce n'est pas éthique. C'est presque certainement illégal. Et si jamais je passais en revue une application de travail de quelqu'un qui l'avait fait, elle serait déposée avec un préjudice extrême.

4
Paul Nathan

Toujours coder comme si le gars qui finit par maintenir votre code sera un psychopathe violent qui sait où vous vivez. ~ Martin Golding

Je ne suis pas avocat, donc je ne vais pas répondre comme tel. En outre, de nombreuses autres personnes non juristes ont déjà fait part de leurs réflexions sur les ramifications juridiques de votre idée. Et je vais sauter le débat sur la moralisation/l'éthique.

Si j'étais vous, je serais plus préoccupé par les ramifications en tant que développeur. C'est une chose de respect. Le respect de soi, surtout.

Bien sûr, nous partons tous à la recherche de "Comment ça se passe {implémentation} dans {spécification}?" de temps en temps. C'est de là que vient Stack, amirite? Et voilà comment nous avons tous trouvé ici, non? Ce n'est pas de cela que je parle parce que ce n'est pas de cela que vous parlez.

Si je combinais le coup de génie + l'effort héroïque = un résultat digne d'être présenté à la communauté des développeurs comme une offre open source en premier lieu, et que les gens l'aimaient suffisamment pour l'utiliser, je tomberais mort de flatterie. Ce serait génial. Comme John Reisig ou Mark Story. Petit vieux moi. Et puis des conneries sont arrivées et ont détaillé ma contribution afin qu'elles puissent l'offrir commercialement ou l'intégrer dans leur application commerciale? Raide mort.

Le code est comme l'écriture manuscrite. Vous ne pouvez pas changer une application plus grande qu'une boîte d'allumettes de manière suffisamment significative pour qu'un autre développeur légitime ne puisse pas différencier les deux côte à côte et dire "Attendez une minute ..." En tant que développeur, je serais trop gêné par le possibilité que mes pairs, mes collègues, les gens que je respecte et dont je désire ardemment, découvrent que j'ai piraté le code de quelqu'un. Je serais la risée. Parce que c'est une copie épique de script de pâtes kiddie bs. Voulez-vous vraiment vous délégitimer aux yeux de vos pairs? Le jacking code est une bonne façon de commencer.

Et en tant que développeur, considérez ceci: si c'était mon application, et j'ai découvert que vous l'avez utilisée de telle sorte que vous seriez inquiet de vous faire poursuivre, et si je décidais de l'enfer de vous poursuivre, vous faites une pile d'argent grâce à mon code de toute façon alors pourquoi ne devrais-je pas vous frapper là où ça fait mal, peut-être récupérer une partie de cela? Comment SAVEZ-VOUS que je ne suis pas un adolescent ou possède un tempérament et un ensemble de compétences effrayantes? Sortez de mon chemin vers pwn r00 [sur ur b0xen, pour ainsi dire. Puisque le jacking de mon application me montrerait que je> vous (base: je pourrais écrire ce que vous ne pouviez que jack). Ce ne serait pas la première fois.

2
OpenSorceress

Si vous réécrivez chaque ligne individuellement, vous pouvez ou non "copier" les lignes.

Mais vous copiez textuellement l'ordre, la structuration globale et l'inclusion des lignes. En d'autres termes, le genre de choses qui font que le travail est un "tout".

Vous copiez la partie qui dit "cette ligne devrait aller ici, cette ligne devrait aller là-bas". Il s'agit d'une grande partie de l'algorithme global.

De plus, lorsqu'un projet est lancé, personne ne sait quoi inclure, quelles choses doivent être considérées comme plus ou moins importantes, comment structurer et composer les algorithmes. Ces informations doivent être produites et conçues à un moment donné. Mais vous n'en auriez pas besoin, car vous le "copieriez".


Par exemple:

Si j'ai un ensemble {a, b, c, d, e, f}.

Je peux en créer une liste ordonnée, [f, e, c, b, d, a]. Vous devez dire que j'ai ajouté des informations à la liste, connues sous le nom de ordering, qui n'étaient pas présentes dans l'ensemble non ordonné. Selon la taille de la liste, ces informations peuvent être très spécifiques et difficiles à trouver.

0
Ben Jones

Vous ne pouvez pas faire un travail dérivé d'un travail dérivé d'un travail dérivé ... et vous attendre à ce que ce ne soit pas un travail dérivé. Cela peut devenir méconnaissable, mais c'est autre chose. Et vous pouvez commencer à partir de n'importe quel texte et par série de modifications obtenir n'importe quel texte (par exemple, supprimer le premier, insérer le second), de sorte que son possible ne signifie pas qu'il a été fait. Il n'est donc pas important de savoir si quelque chose est possible, mais si cela s'est réellement produit (ce qui est impossible ne s'est évidemment pas produit)

Moralement parlant: apprendre de tout ce que vous pouvez (légalement) obtenir est OK, mais vous devez reconnaître les sources. le repos est la légalité.

IANAL, mais je ne pense pas que j'ai fait quelque chose de mal, si: 1) J'ai appris de la mise en œuvre open source 2) Implémentez le même algorithme (même dans le même langage) en faisant cela, de grandes portions deviendront naturellement totalement différentes, et certaines le feront être vraiment similaire. Si ces parties similaires sont des choses où les deux côtés ont suivi la même pratique de codage et ne peuvent donc pas être différentes, alors ces parties ne sont pas protégées par le droit d'auteur. Par exemple. si la classe a deux champs String privés et qu'ils ont des getters et des setters, la seule chose intéressante est que cette classe a deux propriétés de lecture/écriture, pas des implémentations de getters et de setters.

0
user470365