Riscrivere il codice GPL per cambiare la licenza


23

Ho trovato una libreria GPL (nessuna doppia licenza), che fa esattamente ciò di cui ho bisogno. Sfortunatamente, la licenza GPL sulla libreria non è compatibile con la licenza di un'altra libreria che utilizzo. Ho quindi deciso di riscrivere la libreria GPL, quindi la licenza può essere cambiata.

La mia domanda è: quanto devono essere estese le modifiche alla libreria per poter cambiare la licenza? In altre parole, qual è il modo più economico per farlo?


3
Potrebbe essere più economico pagare l'autore della libreria GPL per rilasciarlo con una licenza diversa.
quant_dev,

3
Invece di chiedere qual è il modo PIÙ ECONOMICO, perché non raccontarci la storia completa e chiedere "Qual è la cosa giusta da fare?"
John R. Strohm,

4
Se l'altra libreria non è compatibile con GPL, forse quella è la libreria che devi modificare.
Paul Butcher,

1
Quale licenza ha l'altra biblioteca?
Andres F.

Risposte:


34

Non sono un avvocato, ma AFAIK se hai visto il codice della libreria GPLed qualsiasi libreria di emulazione che scrivi verrebbe contaminata e potrebbe essere dichiarata opera derivata da un giudice se è troppo simile nel suo apprezzamento.

Quindi il processo sarebbe quello di scrivere una specifica funzionale e avere qualcuno che non ha visto il codice GPL scrivere la libreria.

Modifica: tieni presente che nel formulare la tua domanda "Quanto devono essere estese le modifiche alla libreria per poter cambiare la licenza?" la risposta è chiara AFAIK: qualunque cosa tu faccia, se modifichi la libreria devi rispettare il termine della licenza che ti rende in grado di modificarla in primo luogo.


3
Il problema della contaminazione non è probabilmente una preoccupazione molto seria nella pratica. Nei casi in cui stai decodificando il codice di un'entità commerciale, il firewall tra il lettore e l'implementatore è necessario per la causa (essenzialmente inevitabile) della violazione, quindi puoi dimostrare che non era possibile copiare il codice dall'altra versione . Nel caso della maggior parte del codice GPL, a meno che tu non stia violando palesemente nessuno ti farà causa, dal momento che non è nel loro interesse farlo.
Mark Bessey,

1
Potrebbe piacerti la roulette russa, è la tua scelta. Se per qualsiasi motivo - concorrenza che eredita il codice in un modo o nell'altro, o semplicemente concorrenza che decide di finanziare la causa - si viene citati in giudizio e condannati, è qualcosa che può annegare la vostra azienda. Anche se non sei stato citato in giudizio, se è noto la cattiva reputazione potrebbe essere un problema.
AProgrammer,

2
Penso che il problema "contaminato" si applichi principalmente agli NDA. Per problemi di copyright, ha poco senso. Considera che il copyright si applica anche a libri, giornali, film, ecc. George Lucas probabilmente ha visto la serie di Star Trek in TV prima di creare Star Wars, questo rende Star Wars un lavoro derivato? Se un giornalista viene a conoscenza di qualcosa alla radio, questo gli impedisce di scrivere dello stesso evento?
user281377

6
L'approccio alla clean room è solo un modo per dimostrare che non hai violato la legge sul copyright. A quanto ho capito - e ancora non sono un avvocato - le cose sviluppate senza la conoscenza dell'opera originale potrebbero non violare il copyright (ma potrebbero violare i brevetti). Le cose sviluppate con questa conoscenza possono o meno violare il diritto d'autore - è solo più difficile dimostrare che le somiglianze sono dovute a eventi casuali o alla natura del problema che rende naturale un approccio.
AProgrammer,

1
@ammoQ: Negli Stati Uniti c'era molto tempo fa una causa per violazione della copia (un pacchetto software statistico?) in cui si riteneva che una società avesse violato anche se ogni riga di codice era stata riscritta. Nota che Star Wars non è particolarmente simile a Star Trek e che un giornalista non scriverà una storia solo da ciò che ha sentito alla radio.
David Thornley,

21

Il solito modo per aggirare questo problema è prima contattare il proprietario della biblioteca e chiedere se te lo rilasceranno con una licenza diversa.

Se stai lavorando a un progetto open source in cui la GPL non è compatibile, allora ci sono buone probabilità che lo facciano, alcuni progetti finiscono con una licenza GPL solo perché sembrava la scelta migliore.

Naturalmente, questo vale per entrambe le librerie. Ottenere la doppia licenza permissiva sotto una licenza meno permissiva non dovrebbe essere un problema.

Se lavori con un prodotto commerciale, molti autori di biblioteche ti rilasciano con una licenza diversa, se li compensi in modo appropriato.


8
Vale la pena provare, ma questo non funziona se il proprietario della biblioteca ha accettato o fatto uso di contributi GPL, come nel caso di molte biblioteche.
Brian,

^ A meno che non avessero un accordo di "contributore" che riassegnasse il copyright agli autori originali: softwareengineering.stackexchange.com/a/225577/93511
Jonathan

17

La mia comprensione è che se inizi con un'opera e la modifichi, non importa quanto siano estese le modifiche, il risultato finale è un'opera derivata dell'originale. Dovrai scrivere la libreria da zero. Se scrivi la libreria da zero, ma hai visto il codice, se è troppo simile puoi essere nuovamente citato in giudizio per violazione del copyright.

Queste regole non sono specifiche per il software, si applicano a cose copyrightable di tutti i tipi.

Non sono un avvocato e questo non è un consiglio legale. Probabilmente non sono anche nella tua giurisdizione e dovresti sempre essere dubbioso sulla consulenza legale offerta su Internet. Se desideri avere una consulenza legale affidabile, dovrai pagare un avvocato.


4

IANAL, ma so che negli Stati Uniti, nessun grado di modifica creerà un lavoro non derivato. Se ha qualche codice copiato dalla vecchia biblioteca o ha abbastanza somiglianza interna da metterti nei guai per il plagio in una classe universitaria, allora non sei vicino a un nuovo lavoro. La modifica di alcuni nomi di funzioni o variabili non farà nulla, né lo spostamento di blocchi di codice nel sorgente. Dovresti ricrearlo autonomamente per avere anche una possibilità. IOWs, dovresti guardare solo alle interfacce che fornisce e decidere come fornire quella funzionalità e ricrearla in quel modo per avere una possibilità. Anche allora potresti ancora non essere fuori dal bosco se qualcuno si prende davvero cura e si arrabbia.

Alla fine, la soluzione migliore è contattare l'autore della biblioteca e sperare che tu possa trovare un accordo per ottenere licenze più permissive per la sua biblioteca.


1

Se tutto il resto suggerito qui (chiedere doppia licenza, riscrittura) non è accettabile, si ricorda che non è ancora chiaro se il collegamento dinamico con il programma / biblioteca proprietario sia considerato lavoro derivato. La FSF afferma di si, ma molti avvocati (incluso Lawrence Rosen) lo hanno messo in dubbio.

Quindi puoi collegare il tuo software alla libreria GPLed, quindi assicurarti che il codice sorgente sia distribuito con ogni copia del tuo software. Se qualcuno ti fa causa, deve dimostrare che la sua comprensione di questo aspetto oscuro e oscuro della GPL è corretta. Come sembra (es. Galoob vs Nintendo) non si può essere assolutamente sicuri di ciò che fa funzionare i derivati ​​e cosa no.


o almeno chiedi se la lib può essere anche LGPL.
Johan

2
Il problema del collegamento dinamico è difficile, ma non contare sul fatto che un giudice decida a modo tuo. Il giudice potrebbe decidere di accettare le definizioni Gnu se si utilizza la licenza Gnu e probabilmente non si desidera basare il prodotto software sull'esito di un caso giudiziario che non si è ancora verificato.
David Thornley,

1

L'unico modo in cui non verrebbe derivato funzionerebbe, sarebbe se si riscrivesse da soli l'intero codice senza usare il codice originale. Il che è probabilmente impossibile.

Esistono modi molto più semplici per GPL:

  • in chiaro: renderlo in servizio, accedervi tramite un socket. Socket è un limite alla licenza GPL (a meno che non sia famigerato GPLv3 con clausola Affero );
  • nella zona grigia: collegalo dinamicamente. Vi sono molte controversie se il collegamento dinamico è o non è limite al lavoro derivato. Pochi punti di vista qui . Questo potrebbe anche dipendere dalla giurisdizione in cui ti trovi.

Si noti inoltre che GPL è una licenza di distribuzione , quindi è necessario concedere in licenza il proprio lavoro solo se si distribuiscono file binari a terzi. E sei solo obbligato a rilasciare la fonte a loro, nessun obbligo di rilasciarlo al grande pubblico, a meno che tu non rilasci binari al grande pubblico. Se stai utilizzando il tuo codice, ad esempio solo sui tuoi server, non hai l'obbligo di rilasciare alcun codice. Ecco come, ad esempio, Google lo fa con i suoi kernel Linux ottimizzati.


Sono tutt'altro che sicuro che la presa sia una barriera. Secondo i nostri avvocati, gli ingegneri sono troppo concentrati da misure tecniche mentre l'effetto globale è ciò che viene controllato dalla legge. Pubblicare un'interfaccia socket e dare un esempio di utilizzo in emacs lisp era OK per loro. Ma dare la possibilità di installare automaticamente emacs insieme al nostro programma non lo era. Hai ragione per la distribuzione. Ma nota che non puoi impedire a chi distribuisci di distribuirlo ulteriormente.
AProgrammer,

@AProgrammer: anche FSF afferma che se si tratta di un processo separato, questi sono programmi separati, quindi non derivano il lavoro. Domande frequenti sui plugin, ma la logica è ancora valida: gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins
vartec,

La domanda riguarda plug-in e plug-in per natura non è indispensabile. Non scommetterei che la mia azienda strutturerebbe un programma in due processi, uno con GPL perché utilizzava le librerie con GPL e non perché vogliamo mantenere la fonte privata è legale. Soprattutto quando entrambi sono distribuiti insieme. Ma questa è la tua chiamata.
Programmatore

1
@A: la distribuzione con altri programmi è "aggregazione" ed è esplicitamente consentita da GPL. E no, questa non è la mia chiamata. Personalmente, non toccherei la libreria GPL nemmeno con un bastone lungo 10 piedi.
Vartec,

1

IANAL e, in ogni caso, ciò potrebbe non significare nulla legalmente, ma, credo che nel libro "Hackers" di Steven Levy descriva come, ad un certo punto, RMS abbia scritto * codice nix per soldi durante il giorno e la notte ha scritto lo stesso roba a casa in modo che potesse far parte di ... GNU? ... questo era prima di Linux ... un sistema di tipo Unix gratuito. Credo che abbia dovuto rendere il codice home diverso dal codice giorno, ma fondamentalmente stava facendo esattamente quello che stai suggerendo.

Probabilmente questo non importa legalmente, ma ... Non sono sicuro che Apple e / o Microsoft abbiano ottenuto l'autorizzazione / licenza o qualcosa del genere, ma i laboratori non hanno inventato l'interfaccia desktop / icona / mouse, che è stata utilizzata per i Mac (o Lisa?) che è stato quindi utilizzato da Microsoft.


Quello sarebbe Xerox PARC, non Bell Labs.
Marnen Laibow-Koser,

E Jobs fece un accordo con Xerox che permise ad Apple di andare a vedere il laboratorio di Palo Alto. All'epoca nessuno alla Xerox si preoccupava di quella tecnologia.
aledalgrande,

0

Non vi è alcuna risposta a questo, tranne che per un processo dinanzi a un giudice nella propria giurisdizione specifica. Ma vuoi rischiare? Oppure vai allo sforzo di riscrivere la libreria GPL, i test ecc. Ecc. Sei sicuro che l'altra libreria sia incompatibile con la GPL? Questo è in realtà abbastanza insolito, a meno che tu non voglia distribuire entrambe le librerie secondo i termini delle librerie non GPL.


Puoi ottenere l'elenco delle licenze Gnu su gnu.org/licenses/license-list.html e noterai che è diviso in licenze compatibili GPL gratuite, licenze gratuite non compatibili GPL e licenze non libere. La GPL ha alcuni requisiti specifici a cui altre licenze spesso non sono conformi e uno degli obiettivi di GPLv3 era quello di rendere più semplice la compatibilità.
David Thornley,

0

Quanto devono essere estese le modifiche alla libreria per poter cambiare la licenza?

Nella maggior parte del mondo è necessario iniziare da zero e non tagliare e oltrepassare nulla. Sono necessari nuovi nomi per funzioni / classi / variabili ecc. Ecc. E la struttura dovrebbe essere diversa. Allora sei al sicuro.

D'altra parte, se uno strumento diff non riesce a trovare alcuna somiglianza, allora ...


2
Se uno strumento diff non riesce a trovare alcuna somiglianza, potrebbe comunque costituire una violazione del copyright. Guardalo da un punto di vista non programmatico: scrivo un libro, lo traduci in svedese e dalla legge statunitense sul copyright (e probabilmente svedese) hai realizzato un lavoro derivato.
David Thornley,

@David Thornley Sì, hai ragione sul lavoro derivato.
Johan
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.