Posso usare temporaneamente le librerie GPL per la prototipazione e rendere il codice futuro chiuso chiuso?


23

Sto lavorando a un prototipo per un sistema software, che (almeno all'inizio) sarà a sorgente chiuso.

Per risparmiare tempo, sto pensando di utilizzare (ovvero collegare staticamente) una libreria autorizzata da GPLv3 , in modo da poter testare rapidamente il mio progetto. Se ho distribuito il software in questa fase, dovrei distribuire il codice sorgente insieme ad esso.

Cosa succede se non lo faccio, ma mi accerto che il mio sistema funzioni e quindi sostituisco la libreria GPL con il mio codice prima di distribuirlo? Il risultato sarebbe "contaminato" dalla GPL?

Ho la sensazione che il mantenimento della libreria GPL nella mia storia di Git o meno possa fare la differenza.


16
Mi piace l'espressione "contaminata dalla GPL".
Arseni Mourzenko,

7
si sposa bene con la natura virale della licenza :)
Laurent S

5
Correggimi se sbaglio, ma vuoi rilasciare un sistema a sorgente chiuso, ospitando contemporaneamente il codice su git? (e presumo che questo git sia leggibile da altri, altrimenti perché dovresti preoccuparti di avere una lib GPL nella storia?)
user2813274

3
@ user2813274, puoi avere un repository Git privato.
Arturo Torres Sánchez,

5
Quando trovi questa domanda interessante, potresti anche essere interessato alla proposta per il nuovo Stackexchange Open Source .
Philipp

Risposte:


20

La GPL scrive :

Puoi trasmettere un lavoro basato sul Programma o le modifiche per produrlo dal Programma, sotto forma di codice sorgente ai sensi della sezione 4, a condizione che tu soddisfi anche tutte queste condizioni:

Quindi questa condizione si applica solo se il tuo lavoro è "basato su" la libreria, che la licenza definisce come segue:

"Modificare" un'opera significa copiare o adattare tutta o parte dell'opera in un modo che richiede l'autorizzazione del copyright, oltre alla realizzazione di una copia esatta. L'opera risultante viene chiamata "versione modificata" dell'opera precedente o un'opera "basata su" l'opera precedente.

Cioè, il tuo programma è "basato su" la libreria se e solo se si tratta di un'opera derivata secondo la legge sul copyright. La definizione legale di quel termine varia leggermente tra le giurisdizioni e di solito non si rivolge direttamente al software. Ad esempio, la legge sul copyright degli Stati Uniti scrive:

Un "lavoro derivato" è un lavoro basato su una o più opere preesistenti, come una traduzione, arrangiamento musicale, drammatizzazione, finzione, versione cinematografica, registrazione del suono, riproduzione artistica, abbreviazione, condensazione o qualsiasi altra forma in cui un'opera può essere rifuso, trasformato o adattato. Un'opera composta da revisioni editoriali, annotazioni, elaborazioni o altre modifiche che, nel loro insieme, rappresentano un'opera originale di paternità, è un'opera derivata.

Ciò che ciò significa per il software deve essere interpretato dai tribunali, sulla base di precedenti sentenze simili. Non ho abbastanza familiarità con la giurisprudenza pertinente nella tua giurisdizione per dire con certezza come un tribunale deciderebbe il tuo caso. Si potrebbe sostenere che "sostituire la libreria GPL con il proprio codice" è un atto di traduzione, in particolare se il codice è fortemente ispirato dall'implementazione di GPL. Anche il riutilizzo dell'API della libreria GPL potrebbe portarti in acqua calda (vedi Oracle vs. Google ).

Se la risposta è importante per te, ti consiglio di chiedere una consulenza legale competente piuttosto che chiedere a estranei su Internet.


1
ok, questo è interessante, non mi ero reso conto che la condivisione di un'API potesse essere considerata un'opera derivata.
Laurent S

Questa risposta fa lo stesso punto che stavo cercando di fare nella mia risposta di seguito, ma in un modo molto più chiaro. +1
Michael Shaw,

23

Finché non rilasci il software a nessuno mentre ti colleghi a librerie GPL, sei al sicuro. L'aspetto virale di GPL entra in gioco solo se distribuisci il tuo software.

Sarebbe meglio se potessi trovare una libreria con una licenza più permissiva, ovviamente, come LGPL o APL2 o MIT.


Chiaramente, proverò a trovare un'altra biblioteca con una licenza permissiva. Ma in caso contrario, sembra che potrei avere il vecchio codice GPL nella cronologia git, e non romperne i termini, distribuendo il futuro stato del codice.
Laurent S

5
Questa risposta non tiene conto del rischio di creare un'opera derivata durante l'implementazione della nuova versione della libreria.
Michael Shaw,

4
@Ptolemy Tieni presente che se la tua cronologia git viene rilasciata, hai rilasciato la vecchia versione. Non deve essere in forma binaria per contare.
Piojo,

2
@piojo D'altra parte, ciò ti obbliga al massimo a concedere in licenza quella vecchia versione sotto GPL (e distribuirne i sorgenti); se a un certo punto ti ritrovi con il solo copyright del codice, puoi rendere tutte le future versioni chiuse (anche se le vecchie versioni continuano a essere sotto licenza GPL). A seconda di quanto materiale proprietario è presente nella vecchia versione, potresti avere o meno un problema.
venerdì

1
Finché Laurent S è l'autore e il proprietario del copyright di tutti gli altri codici accanto alla GPL, è al sicuro. Si può ed è consentito di liberare tutta l'opera secondo i termini del GPL3 nel caso in cui questo potrebbe essere il risultato più tardi. Ciò potrebbe essere indesiderato, ma OP è chiaramente sicuro in ogni caso (se il copyright è di proprietà).
Hacre,

8

Non penso che la tua domanda riguardi effettivamente la GPL. Riguarda il prototipo e se verrà utilizzato in futuro come base per il sistema software consegnabile.

Se stai realizzando un prototipo usa e getta e non riutilizzerai nessuno dei codici nel tuo sistema consegnabile, vai avanti e usa una libreria GPL.

Tre approcci che puoi prendere

Tuttavia, se hai intenzione di evolvere il prototipo (qualcosa che molti manager spingono per!) Hai tre approcci che puoi adottare:

  1. Spostare le parti non principali in applicazioni separate che comunicano con il proprio core tramite JSON o un'API REST o qualche altra lingua / libreria di comunicazione tra processi. Le tue parti non core possono quindi essere anche GPL e puoi utilizzare qualsiasi libreria GPL in esse.
  2. Progetta il tuo codice in modo da poter scambiare le librerie. Ciò significa creare una facciata che nasconda i dettagli di implementazione. Quando sei pronto per passare a una libreria proprietaria o MIT / BSD.
  3. Non usare affatto il codice GPL.

Ti suggerisco di seguire il primo approccio perché hai un lavoro open source che puoi utilizzare in futuro come parte del tuo portafoglio professionale.

Il secondo approccio è anche buono perché è così che dovresti progettare il sistema comunque, creando le esatte funzioni / classi di cui hai bisogno e cancellandole fino a quando non hai la libreria o il codice personalizzato che riempie quella funzionalità.


2
Inserire il codice GPL in un altro processo non significa di per sé che non fa più parte del programma, e quindi non è più rilevante per la licenza del resto. Può aiutare a separarli abbastanza bene però.
Deduplicatore

1
@Deduplicator se sono applicazioni separate che non bastano, devono essere trattate come una base di codice separata, hai ragione. Piace molto quello che fa Twitter con Bootstrap e quello che fa Facebook con tutte le sue librerie. Open source non core con codice proprietario core.
Rudolf Olah,

@Mouse, non posso fare 1, dal momento che è un software incorporato. 2 fu il mio primo pensiero, ma vedendo ciò che citano Tolomeo e Meriton, sembra che farei lavori derivati, quindi 3 è probabilmente la strada da percorrere.
Laurent S

1
Ri: "Non penso che la tua domanda riguardi effettivamente la GPL": Non sono d'accordo. Una licenza software potrebbe certamente vietare questo tipo di utilizzo. Una risposta che ha ignorato la parte "GPL" della domanda, e l'ha presa solo come una domanda generale su una licenza open source con termini restrittivi e comportamento virale, dovrebbe ricorrere a "non lo sappiamo, dovrete leggere i termini della licenza ".
Ruakh

Se crei un'opera derivata e la butti via, hai comunque creato un'opera derivata e puoi farlo solo con l'autorizzazione / licenza del detentore del copyright originale. Con GPL hai quella licenza (se non distribuisci mai il lavoro derivato prima di buttarlo via). Con un'altra licenza, potresti non avere l'autorizzazione. Fare causa per danni potrebbe essere difficile però.
gnasher729

5

Posso pensare a due aspetti da considerare con il tuo approccio. Il primo è semplice, non distribuendo il tuo progetto o (o poiché è GPLv3 , rendendolo disponibile per uso pubblico) mentre stai usando il codice rilasciato sotto GPL, è difficile capire come ti verrà richiesto di distribuire il tuo codice sotto la licenza GPL anche sotto i termini di ridistribuzione.

Il secondo aspetto è forse più significativo per te. Quando crei la tua implementazione per sostituire la libreria GPL, devi fare attenzione a non creare un lavoro derivato. Sebbene sia sicuro che tu abbia buone intenzioni, non copiare direttamente il codice sorgente, è più probabile che non copierai parti significative dell'API della libreria.

Se si tratta di un prodotto commerciale, questo rischio deve essere considerato e valutato leggendo attentamente la licenza GPLv3 e, in caso di dubbio, chiedendo un parere legale professionale.


4

Se si prevede di scrivere il proprio codice per sostituire il codice GPL, si verificherà un potenziale problema poiché non si sta scrivendo il codice in un ambiente pulito. Vorresti davvero che qualcuno che non avesse mai guardato il codice GPL scrivesse una libreria sostitutiva. D'altra parte, se si desidera semplicemente sostituire una libreria GPL con una libreria già pubblicata che è sotto un'altra licenza, questo non è un problema, presumibilmente l'altra libreria è stata già scritta in un ambiente pulito.


2

Se si fornisce l'accesso alle revisioni utilizzando il codice GPL, queste saranno completamente GPL. Ma non vuoi, dato che non sarebbe un codice sorgente chiuso ...

Per qualsiasi stato successivo che non utilizza più alcun codice GPL, che hai usato il codice GPL qualche tempo prima è semplicemente irrilevante.


2

La GPL viene attivata solo sulla distribuzione ... puoi fare quello che vuoi se non rilasci una versione modificata o un lavoro derivato.

Ho la sensazione che il mantenimento della libreria GPL nella mia storia di Git o meno possa fare la differenza.

Se intendi pubblicare la tua fonte su un repository pubblico come GitHub , allora sì, potresti avere un problema. Usando solo git è irrilevante se è privato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.