Un code JavaScript est-il utilisé uniquement pour les sites Web, open source?

12

Question réécrite:

Je ne pose pas de question liée à JavaScript, mais à toutes les langues "clientes" utilisées sur le Web (HTML5, JavaScript, CSS, etc.). Si je mets du code JavaScript (c'est-à-dire sous GPL) sur mon site Web et que ce site Web est accessible à tous sur le Web, est-ce que je viole la GPL d'une manière ou d'une autre?

Que se passe-t-il si je souhaite vendre le code client (HTML, CSS, JavaScript) à quelqu'un? Ai-je besoin d'une licence différente dans ce cas?

Le JavaScript (lorsqu'il est utilisé pour des sites Web) n'est-il pas toujours open source? Lorsque vous ouvrez une page Web, vous pouvez toujours lire la source.

Dois-je également publier mon code côté serveur si je vends un site Web contenant du code JavaScript GPL?

Que se passe-t-il si ce site est partiellement accessible (une partie est gratuite et l'autre vous oblige à payer) mais le code GPL (la même partie) est utilisé des deux côtés du site?

Que faire si le code GPL ne se trouve que dans une partie du site Web qui vous oblige à payer pour y accéder?

Si je vends un site Web à un client de cette manière:

  1. Je vous vends (frais uniques) tout le code client (JavaScript, HTML et CSS)
  2. Je ne vous vends pas le code côté serveur, vous le louez (je ne veux pas vous laisser réutiliser mon code côté serveur)

Si j'utilise du code JavaScript sous GPL, est-ce que je viole quelque chose? (Le site Web est accessible à tous sur le Web.)

Modifier 2:

Ajout d'une nouvelle question spécifique:

Et si le site Web peut fonctionner sans code côté serveur, je veux dire, JavaScript appelle simplement certaines pages PHP contenant des données au format JSON. D'autres personnes peuvent créer un site Web avec le côté client, mais elles devront fournir des données. Dans ce cas, JavaScript appelle le code "PHP" (mais pas l'inverse) je pense. Dans ce cas, suis-je en train de violer la GPL?

Fire-Dragon-DoL
la source
4
La possibilité de "voir" le code n'a rien à voir avec l'octroi de licences, donc JavaScript n'est pas différent de tout le reste. Vous seriez mieux servi en consultant un avocat qui est un expert dans cette spécialité.
Sparky
Pour le javascript sur un site Web, est-ce là que vous parlez spécifiquement du code GPL? c'est-à-dire, le code est-il explicitement autorisé sous la GPL?
Philip
Eh bien, je ne vends aucun produit, je pose simplement cette question parce que je ne comprends pas bien comment cela fonctionne. Je demande spécifiquement si une langue liée au client n'est pas déjà entièrement "GPL" (vous téléchargez la source chaque fois que vous visitez une page Web)
Fire-Dragon-DoL
Dans une application non triviale, votre code source n'est pas seulement Javascript, c'est aussi votre code côté serveur. Voulez-vous rendre tout cela au public? Parce que c'est ce que dit la GPL. Cela ne dit pas que vous pouvez en libérer une partie tout en respectant la licence.
Robert Harvey

Réponses:

3

En ce qui concerne la GPL, l'unité de publication est l'unité de licence.

Si votre site Web et son javascript sont une seule chose qui fonctionne ensemble, alors l'ensemble a une licence efficace. Si une partie est GPL, la licence effective de l'ensemble est GPL. (Ce n'est pas vrai pour LGPL, MIT, etc.)

Si vous hébergez le site Web et que vos clients achètent l'accès au service, vous n'avez pas distribué ou transmis le code côté serveur, la GPL n'est donc pas pertinente. (L'AGPL change cela et affirme que le logiciel en tant que service doit avoir sa source libérée.)

Javascript qui fait partie de votre application n'est en aucun cas automatiquement concédé sous licence. À strictement parler, le téléchargement du javascript pour l'exécuter dans le navigateur constitue une violation des droits d'auteur. Bien sûr, c'est idiot. Il y a probablement une licence implicite pour exécuter le code, mais c'est tout.

Si vous utilisez une bibliothèque Javascript, vous devez alors respecter la licence de cette bibliothèque. Si cette licence est GPL, je comprends que cela signifie que votre application entière est GPL. C'est probablement pourquoi jQuery a une double licence - votre choix, MIT ou GPL. Sans la possibilité d'utiliser la licence MIT, elle ne pourrait être utilisée que par les applications GPL.

Sean McMillan
la source
4

Premièrement: vous êtes entièrement autorisé à utiliser le code Open Source dans des projets commerciaux tant que vous respectez les restrictions de licence (c'est-à-dire principalement que vous laissez toutes les attributions en place et que vous apportez toutes les modifications disponibles sous une licence similaire).

Je comprends que la GPL est l'une des licences les plus restrictives lorsqu'il s'agit d'essayer d'imposer ses licences sur d'autres parties d'un projet. Je ne pense pas que cela ait jamais été testé en cour, mais d'une manière générale, l'interprétation que j'ai toujours vue est que si le code GPL est laissé dans ses propres modules séparés qui sont simplement référencés (c'est-à-dire qu'ils sont traités comme des produits entièrement autonomes que vous utilisez juste), ça devrait aller.

Si vous n'êtes pas sûr de cela et / ou si vous voulez être plus sûr, il existe d'autres licences moins normatives.

Deuxièmement: la possibilité de voir le code et les droits de l'utiliser sont entièrement distincts . Je ne peux pas retirer JavaScript de n'importe quel site et l'utiliser simplement parce que je le vois. Si j'ai accès à la source Windows, même légalement, cela ne le rend pas mien. Le Web nécessite que beaucoup de code soit visible, vous pouvez toujours le concéder sous licence comme vous le souhaitez.

Troisièmement: En termes de licence, le reste du site est sous, il est très peu probable que votre client soit heureux de vous payer quelque chose, puis de le rendre open source . Mis à part le «pourquoi avons-nous payé pour quelque chose que vous venez de donner», cela aura probablement des conséquences sur la conception et l'image de marque et permettra à quelqu'un d'emprunter des éléments de son identité d'entreprise. Si vous le leur vendez, ils voudront que ce soit le leur . Si vous allez leur en vendre des morceaux, vous devez leur dire qu'il y a OSS car vous ne pouvez pas vendre cela, juste un autre code qui l'utilise.

Quatrièmement: c'est un modèle très étrange qui vend un bit du code et loue l'autre . Ils sembleraient si fortement interdépendants que l'un est largement sans valeur sans l'autre. Je suppose que techniquement, ils pourraient prendre le design frontal que vous avez fait et le patcher dans autre chose, mais généralement, lorsque cela se produit, les gens recommencent.

Étant donné que les deux parties ne sont pas vraiment utiles l'une sans l'autre, je proposerais de payer pour la personnalisation d'un logiciel en tant que produit de service que vous possédez. C'est-à-dire que vous possédez tout le code, vous le personnalisez simplement selon leurs spécifications (c'est-à-dire la marque à leur façon). Le rend beaucoup plus net et plus simple.

Jon Hopkins
la source
Mhhh maintenant j'ai un doute: quand je crée un site web pour un client, qui est le client: la personne à qui je vends mon site web ou les utilisateurs qui y accéderont? Si je vends tout le site Web en tant que produit GPL (avec des sources donc) à mon client, dois-je divulguer le code source même à toutes les personnes naviguant sur ce site Web?
Fire-Dragon-DoL
@ Fire-Dragon-DoL - Votre client est la personne qui paie vos factures. Si vous GPL votre code, vous devez le rendre public à tout le monde, partout , pas seulement à vos clients et / ou utilisateurs (et tout le monde a le droit de réutiliser ce code).
Jon Hopkins
Sur la dernière partie (votre explication est vraiment intelligente, merci): Étant donné que les deux parties ne sont pas vraiment utiles sans chacune : dans ce cas, si j'utilise du code GPL, dois-je quand même libérer les sources? Parce que je peux lire votre phrase comme "Je vous vends le service de personnalisation du logiciel, pas le logiciel lui-même qui est toujours le mien"
Fire-Dragon-DoL
Pour répondre à votre dernier commentaire: je ne suis pas sûr, je veux dire que la GPL dit que vous devez libérer le code avec votre logiciel, mais si une personne navigue sur mon site je ne lui donne pas mon programme, il utilise mon programme , Je pense que c'est différent. GPL ne dit pas que vous devez libérer votre programme.
Fire-Dragon-DoL
1
@Jon Il vous suffit de donner la source aux personnes qui ont obtenu le binaire; pas à quiconque demande. (Bien sûr, ils ont le droit de donner à qui ils veulent, mais vous n'êtes pas obligé de le faire.)
Sean McMillan
3

De manière générale, si vous utilisez du code GPL n'importe où dans votre projet et que vous redistribuez votre projet (c'est-à-dire le vendez ou le donnez à d'autres), vous devez divulguer le code source de votre projet au public dans son intégralité afin d'être conforme à la licence GPL.

Si vous fournissez votre propre site Web accessible au public en tant que service utilisant le code GPL côté serveur, vous pouvez être OK, car cela n'est pas considéré comme une redistribution.

Le code Javascript dans le navigateur me semble être une zone grise. Techniquement, vous redistribuez le code GPL au navigateur de tout le monde, ce qui déclencherait l'obligation de libérer votre propre source.

Edit: Pour prouver mon point, je vais maintenant inclure le texte de la FAQ sur les licences du site Web ExtJS. ExtJs est un framework Javascript sous licence GPL. Voici leur interprétation du fonctionnement de la licence par rapport à leur cadre (le mien en italique):

Œuvres dérivées
Lorsqu'un logiciel appelle un code sous licence GPLv3, ce logiciel devient une œuvre dérivée du code GPL et donc soumis à la licence GPLv3. Si le logiciel est ensuite «transmis» à un utilisateur, la GPLv3 exige que le code source de ce logiciel soit également «transmis». Le «transfert» pour une application Web est déclenché lorsqu'un utilisateur extérieur à l'entité juridique qui a créé l'application utilise l'application.

La définition d'un programme
logiciel Pour les programmes logiciels construits à l'aide des architectures Web d'aujourd'hui qui utilisent des interfaces de service basées sur le réseau à distance pour la communication interne au lieu de la liaison statique ou dynamique traditionnelle, le programme logiciel pertinent est la totalité du code d'application, y compris le code exécuté sur le serveur et code exécutés sur le client, à condition que le code serveur fasse partie intégrante de l'application.

Exemple
Supposons que l'application dispose d'un frontal (qui génère des pages Web liées à Ext JS JavaScript) qui communique via JSON / HTTP avec un service backend. Ce service principal contient une logique d'approbation et de validation pour cette application uniquement. Même si seul le frontal utilise le code Ext JS, vous devez considérer que la combinaison des frontaux et des backends constitue l'application, et le code source pour le backend et le frontal devrait être fourni aux utilisateurs finaux de l'application sous GPLv3 si l'application est utilisée par un utilisateur final qui ne fait pas partie de la même entité juridique qui détient la licence GPLv3 pour le code Ext JS.

Robert Harvey
la source
2
C'est faux, la GPL ne fonctionne pas de cette façon. Inclure un lien vers un fichier JS GPL dans la sortie de votre code PHP ne rend pas en quelque sorte votre code PHP open source.
user229044
@meager: Voir ma modification.
Robert Harvey
Cela semble tout à fait faux. Que faire si mon back-end est dirigé vers un site tiers qui utilise des fichiers JS GPL? Dois-je alors ouvrir la source de mon application entière? Je ne pense pas que cela tiendrait dans aucun tribunal. Pardon.
Rob
1

Pour un site Web avec javascript côté client, ils possèdent toujours le code. Si vous deviez simplement prendre ce code et l'utiliser comme le vôtre, ce serait probablement une atteinte à la propriété intellectuelle. Je suppose que je ne sais pas s'ils n'incluent pas de licence avec. Il existe également des problèmes d'inapplicabilité. Parlez à un avocat, je suppose, mais ils ne vous diront probablement rien d'utile.

Les projets avec un mélange de licences sont compliqués. Le code GPL qui interagit avec d'autres bibliothèques, y compris vraisemblablement les backends côté serveur, nécessite également qu'elles soient GPL. D'autres licences open source sont moins strictes, comme la LGPL et la licence BSD.

Et non, si vous ne voulez pas qu'il réutilise votre code php, cela ne rentre pas dans le modèle GPL. Si vous publiez votre code sous GPL, vous êtes OBLIGÉ de remettre le code source.

Il semble donc que vous créez un site Web pour quelqu'un et que vous ne voulez pas distribuer votre code à quelqu'un. Pourquoi envisagez-vous l'open source? Si c'est open source, vous donnez le code.

Philippe
la source
Je ne vends rien pour le moment, je pose simplement cette question car je pense qu'un site Web se compose de 2 parties différentes, le site Web client et le site Web serveur. La première partie est gratuite tandis que la seconde ne l'est pas. Si un site Web est "opensource", devez-vous publier le code source côté serveur? Je trouve un peu difficile, ça va créer des désastres sur la sécurité!
Fire-Dragon-DoL
2
Ce n'est pas bien. Si une partie d'un projet est GPL, l'ensemble du projet doit être publié sous une licence compatible GPL (en supposant qu'il est considéré comme le même programme et ne peut pas être divisé en morceaux). Et étant GPL ne vous empêche pas de le vendre, cela signifie simplement que vous devez fournir la source avec tous les binaires, et ne pouvez pas restreindre la redistribution.
KeithB
Et si le site Web peut fonctionner sans code côté serveur, je veux dire, javascript appelle simplement des pages php qui contiennent des données au format json. D'autres personnes peuvent créer un site Web avec le côté client, mais elles devront fournir des données. Dans ce cas javascript appelle le code "php" (mais pas l'inverse) je pense. Dans ce cas, suis-je en train de violer la GPL?
Fire-Dragon-DoL
@KeithB ACK! Tu as raison. Je pensais au GTK et au SDL, mais ce sont des LGPL. Merci.
Philip
Oui LPGL est une bonne licence, j'aimerais comprendre la GPL en passant parce que ... eh bien, je pense que c'est plus difficile à comprendre
Fire-Dragon-DoL