Puis-je utiliser temporairement les bibliothèques GPL pour le prototypage et créer le futur code source fermé?

23

Je travaille sur un prototype de système logiciel qui (au moins au début) sera en source fermée.

Afin de gagner du temps, je pense utiliser (c'est-à-dire un lien statique) une bibliothèque sous licence GPLv3 , afin de pouvoir tester rapidement ma conception. Si je distribuais le logiciel à ce stade, je devrais distribuer le code source avec lui.

Et si je ne le fais pas, mais que je m'assure que mon système fonctionne, puis que je remplace la bibliothèque GPL par mon propre code avant de distribuer? Le résultat serait-il «contaminé» par la GPL?

J'ai le sentiment que conserver ou non la bibliothèque GPL dans mon historique Git peut faire une différence.

Laurent S
la source
16
J'aime l'expression "contaminée par la GPL".
Arseni Mourzenko
7
ça va bien avec la nature virale de la licence :)
Laurent S
5
Corrigez-moi si je me trompe, mais vous voulez libérer un système à source fermée, tout en hébergeant simultanément le code sur git? (et je suppose que ce git est lisible par les autres, sinon pourquoi vous inquiéteriez-vous d'avoir une
bibliothèque
3
@ user2813274, vous pouvez avoir un référentiel Git privé.
Arturo Torres Sánchez
5
Lorsque vous trouverez cette question intéressante, vous pourriez également être intéressé par la proposition du nouveau Open Source Stackexchange .
Philipp

Réponses:

20

La GPL écrit :

Vous pouvez transmettre une œuvre basée sur le Programme, ou les modifications pour la produire à partir du Programme, sous forme de code source selon les termes de l'article 4, à condition que vous remplissiez également toutes ces conditions:

Cette condition ne s'applique donc que si votre travail est "basé sur" la bibliothèque, que la licence définit comme suit:

«Modifier» une œuvre signifie copier ou adapter tout ou partie de l'œuvre d'une manière nécessitant une autorisation de droit d'auteur, autre que la réalisation d'une copie exacte. L'œuvre qui en résulte est appelée une «version modifiée» de l'œuvre antérieure ou une œuvre «basée sur» l'œuvre antérieure.

Autrement dit, votre programme est "basé sur" la bibliothèque si et seulement s'il s'agit d'une œuvre dérivée conformément à la loi sur le droit d'auteur. La définition juridique de ce terme varie quelque peu selon les juridictions et ne concerne généralement pas directement les logiciels. Par exemple, la US Copyright Act écrit:

Une «œuvre dérivée» est une œuvre basée sur une ou plusieurs œuvres préexistantes, telles qu'une traduction, un arrangement musical, une dramatisation, une fiction, une version cinématographique, un enregistrement sonore, une reproduction d'art, un abrégé, une condensation ou toute autre forme sous laquelle une œuvre peut être refondu, transformé ou adapté. Une œuvre consistant en des révisions éditoriales, des annotations, des élaborations ou d'autres modifications qui, dans leur ensemble, représentent une œuvre d'auteur originale, est une «œuvre dérivée».

Ce que cela signifie pour les logiciels doit être interprété par les tribunaux, sur la base de décisions similaires antérieures. Je ne connais pas suffisamment la jurisprudence pertinente de votre juridiction pour dire avec certitude comment un tribunal déciderait de votre cas. On pourrait soutenir que «remplacer la bibliothèque GPL par son propre code» est un acte de traduction, en particulier si votre code est fortement inspiré par l'implémentation GPL. Même la réutilisation de l'API de la bibliothèque GPL pourrait vous faire atterrir dans de l'eau chaude (voir Oracle vs Google ).

Si la réponse vous intéresse, je vous recommande de demander un avis juridique compétent plutôt que de demander à des étrangers sur Internet.

meriton - en grève
la source
1
ok, c'est intéressant, je ne savais pas que le partage d'une API pouvait être considéré comme un travail dérivé.
Laurent S
Cette réponse fait le même point que j'essayais de faire dans ma réponse ci-dessous, mais d'une manière beaucoup plus claire. +1
Michael Shaw
23

Tant que vous ne diffusez le logiciel à personne pendant que vous vous connectez aux bibliothèques GPL, vous êtes en sécurité. L'aspect viral de la GPL n'intervient que si vous distribuez votre logiciel.

Ce serait mieux si vous pouviez trouver une bibliothèque avec une licence plus permissive, bien sûr, comme LGPL ou APL2 ou MIT.

James McLeod
la source
De toute évidence, je vais essayer de trouver une autre bibliothèque avec une licence permissive. Mais à défaut, il semble que je pourrais avoir de l'ancien code GPL dans l'histoire de git, et ne pas en casser les termes, en distribuant l'état futur du code.
Laurent S
5
Cette réponse ne prend pas en compte le risque de créer une œuvre dérivée lors de l'implémentation de la nouvelle version de la bibliothèque.
Michael Shaw
4
@Ptolemy Gardez à l'esprit que si votre historique git est publié, vous avez publié l'ancienne version. Il n'a pas besoin d'être sous forme binaire pour compter.
piojo
2
@piojo D'un autre côté, cela vous oblige tout au plus à concéder sous licence cette ancienne version sous GPL (et à distribuer la source pour celle-ci); si, à un moment donné, vous vous retrouvez avec le seul droit d'auteur sur le code, vous pouvez rendre toutes les futures versions fermées (bien que les anciennes versions continuent d'être sous GPL). Selon la quantité de contenu propriétaire dans l'ancienne version, vous pouvez ou non avoir un problème.
cpast
1
Tant que Laurent S est l'auteur et le propriétaire des droits d'auteur de tous les autres codes à côté de la GPL, il est également en sécurité. Il peut et est autorisé à publier l'intégralité de l'œuvre sous les termes de la GPL3 au cas où cela pourrait être le résultat plus tard. Cela peut être indésirable, mais OP est clairement sûr dans tous les cas (si le droit d'auteur est détenu).
hakre
8

Je ne pense pas que votre question concerne réellement la GPL. Il s'agit du prototype et de son utilisation future comme base du système logiciel livrable.

Si vous créez un prototype jetable et que vous n'allez pas réutiliser le code de votre système livrable, alors allez-y et utilisez une bibliothèque GPL.

Trois approches que vous pouvez adopter

Cependant, si vous voulez faire évoluer le prototype (quelque chose que beaucoup de gestionnaires préconisent!), Vous avez trois approches que vous pouvez adopter:

  1. Déplacez les parties non essentielles dans des applications distinctes qui communiquent avec votre cœur via JSON ou une API REST ou un autre langage / bibliothèque de communication inter-processus. Vos pièces non essentielles peuvent donc également être GPL et vous pouvez utiliser n'importe quelles bibliothèques GPL.
  2. Concevez votre code afin de pouvoir échanger les bibliothèques. Cela signifie créer une façade qui cache les détails de mise en œuvre. Lorsque vous êtes prêt à passer à une bibliothèque propriétaire ou à une bibliothèque MIT / BSD.
  3. N'utilisez pas du tout le code GPL.

Je vous suggère de suivre la première approche, car vous disposez ensuite d'un travail open source que vous pourrez utiliser à l'avenir dans le cadre de votre portefeuille professionnel.

La deuxième approche est également bonne, car c'est de cette façon que vous devriez concevoir le système, en créant les fonctions / classes exactes dont vous avez besoin et en les supprimant jusqu'à ce que vous ayez la bibliothèque ou le code personnalisé qui remplit cette fonctionnalité.

Rudolf Olah
la source
2
Mettre le code GPL dans un autre processus ne signifie pas en soi qu'il ne fait plus partie du programme et n'est donc plus pertinent pour l'octroi de licences aux autres. Cela peut cependant aider à les séparer suffisamment bien.
Déduplicateur
1
@Deduplicator si ce sont des applications distinctes qui ne suffisent pas, elles doivent être traitées comme une base de code distincte, vous avez raison. Un peu comme ce que Twitter fait avec Bootstrap et ce que Facebook fait avec toutes ses bibliothèques. Open source non core avec code propriétaire core.
Rudolf Olah
@omouse, je ne peux pas faire 1, car c'est un logiciel embarqué. 2 a été ma première pensée, mais en voyant ce que Ptolémée et Meriton mentionnent, il semble que je ferais des œuvres dérivées, donc 3 est probablement la voie à suivre.
Laurent S
1
Re: "Je ne pense pas que votre question concerne réellement la GPL": je ne suis pas d'accord. Une licence logicielle pourrait certainement interdire ce type d'utilisation. Une réponse qui ignorerait la partie "GPL" de la question, et la prendrait simplement comme une question générale sur une licence open source avec des conditions restrictives et un comportement viral, devrait recourir à "nous ne savons pas, vous aurez lire les termes de la licence ".
ruakh
Si vous créez une œuvre dérivée et la jetez, vous avez toujours créé une œuvre dérivée et vous ne pouvez le faire qu'avec la permission / licence du détenteur du droit d'auteur d'origine. Avec GPL, vous avez cette licence (si vous ne distribuez jamais le travail dérivé avant de le jeter). Avec une autre licence, vous pourriez ne pas avoir l'autorisation. Vous poursuivre en justice pour dommages pourrait cependant être difficile.
gnasher729
5

Je peux penser à deux aspects à considérer avec votre approche. Le premier est simple, en ne distribuant pas votre projet ou (ou comme c'est la GPLv3 , le rendant disponible pour un usage public) pendant que vous utilisez du code qui est publié sous la GPL, il est difficile de voir comment vous seriez obligé de distribuer votre code sous licence GPL également sous les conditions de redistribution.

Le deuxième aspect est peut-être plus important pour vous. Lorsque vous créez votre propre implémentation pour remplacer la bibliothèque GPL, vous devez faire attention à ne pas créer un travail dérivé. Bien que je sois sûr que vous avez de bonnes intentions, en ne copiant pas directement le code source - vous êtes plus susceptible que de ne pas copier des parties importantes de l'API de la bibliothèque.

S'il s'agit d'un produit commercial, ce risque doit être considéré et évalué en lisant attentivement la licence GPLv3 et, en cas de doute, en demandant un avis juridique professionnel.

Michael Shaw
la source
4

Si vous prévoyez d'écrire votre propre code pour remplacer le code GPL, vous aurez un problème potentiel car vous n'écrivez pas le code dans une salle blanche. Vous voudriez vraiment que quelqu'un qui n'a jamais regardé le code GPL écrive une bibliothèque de remplacement. D'un autre côté, si vous souhaitez simplement remplacer une bibliothèque GPL par une bibliothèque déjà publiée sous une autre licence, ce n'est pas un problème, l'autre bibliothèque a probablement été déjà écrite dans un environnement de salle blanche.

Elin
la source
2

Si vous donnez accès aux révisions à l'aide du code GPL, elles seront entièrement GPL. Mais vous ne voulez pas, car ce ne serait pas de source fermée ...

Pour tout état ultérieur qui n'utilise plus de code GPL, le fait que vous ayez utilisé du code GPL un peu plus tôt n'est tout simplement pas pertinent.

Déduplicateur
la source
2

La GPL n'est déclenchée que lors de la distribution ... vous pouvez faire ce que vous voulez si vous ne publiez pas une version modifiée ou un travail dérivé.

J'ai le sentiment que conserver ou non la bibliothèque GPL dans mon historique Git peut faire une différence.

Si vous voulez publier votre source dans un référentiel public comme GitHub , alors oui, vous pouvez avoir un problème. Utiliser git n'est pas pertinent s'il est privé.

Corey Goldberg
la source