Nave di Teseo applicata a GPL - Posso sostituire il mio programma se sostituisco tutte le parti derivate?


99

Ho tradotto un Cprogramma GPLv2 in Python, ma ho trovato difficile estenderlo come progettato e riscriverne parti significative. Il programma è ora strutturalmente completamente diverso, ma ci sono diverse funzioni tradotte alla lettera in uso.

Il paradosso della nave di Teseo (come affermato da Wikipedia) "solleva la questione se un oggetto che ha sostituito tutti i suoi componenti rimanga fondamentalmente lo stesso oggetto".

Se riuscissi a scrivere sostituzioni per le funzioni testuali, sarei in grado di riconsegnare a una licenza che preferisco?

In relazione, sarei in grado di estrarre l'architettura evoluta e riutilizzarla con una licenza diversa? Penso che sarebbe molto utile da solo, ma non mi piace l'idea che ora sia "contaminato" con la licenza GPL.

Seguito : ho deciso di contattare il titolare del copyright e ho ricevuto l' autorizzazione a riconsegnare . A volte il modo migliore è interagire socialmente piuttosto che a livello di programmazione!


6
Confronta l' audit di ReactOS : c'era l'accusa che ReactOS (un sostituto di Windows gratuito) fosse contaminato dall'uso di codice MS Windows trapelato e decodificato (per il quale non avevano mai preso una licenza). Lo hanno risolto sostituendo sistematicamente tutto il codice di origine poco chiara con il codice legale "decodificato in camera bianca" - sostanzialmente un nuovo codice scritto da una specifica pulita.
jdm,

3
Il codice @jdm Chinese Wall / clean room deve anche essere scritto da persone che non sono state coinvolte nell'ingegneria inversa e hanno comunicazioni limitate (legalmente riviste) con loro. WRT per ignorare la licenza e semplicemente "violare il copyright" - equivarrebbe alla stessa cosa, dal momento che non avresti ancora il diritto di ridistribuire il materiale sul quale hai violato il copyright.
Riccioli d'oro

9
@jdm La GPL non è un contratto e non deve essere accettata da nessuno. La GPL è una licenza e devi rispettarla se approfitti della licenza. Non è una strada a doppio senso o una negoziazione o definizione di obblighi multipli come un contratto. Ciò che fa è dichiarare le uniche regole in base alle quali è consentito utilizzare il codice. IANAL ma me l'hanno spiegato da diversi avvocati specializzati in licenze.
Elin,

3
@CrazyCasta: ti sbagli sull'ambito della GPL. Dichiari che è l'unica ragione per avere diritti. Ciò è esplicitamente errato e totalmente negato dalla stessa GPL. GPL copre solo i diritti di distribuzione. Hai un diritto illimitato di usare e studiare il codice anche senza accettare la GPL.
Salterio,

1
@MSalters: GPL concede i diritti di distribuzione e modifica . Senza una licenza hai il diritto di utilizzare il software così com'è.
RemcoGerlich,

Risposte:


95

Innanzitutto, la risposta è no (per una traduzione), non è possibile legalmente ridicolizzarla o fare qualsiasi cosa al di fuori delle legittime licenze originali. Potresti aver fatto ben 10 volte il lavoro dell'autore originale, ma non importa, è virale. Non solo perché si tratta di GPL, ma perché non è design pulito o riscrittura.

Ho lottato brevemente con questo nel 1992, quando avevo fatto un'enorme riscrittura di un vecchio codice MUD. Avevamo un gioco di successo, ma volevamo fare le nostre cose e la gente era disposta a pagare per questo, eppure la licenza DikuMUD ci proibiva severamente di fare soldi. Un concorrente, all'epoca, aveva anche basato i propri sulla stessa base di codice, e hanno optato per ignorare palesemente il copyright, strapparne ogni traccia e fondamentalmente mentire a tutti, incluso se stessi. La loro logica era "nessuno del codice originale esiste" e "abbiamo fatto enormi riscritture e miglioramenti" e generalmente ignorando il fatto che hanno iniziato con 20.000 righe di codice. Stavano caricando oggetti nel gioco e stavano facendo troppi soldi per fermarsi.

Ero certamente invidioso. Ma ho studiato la legge sul copyright, ho consultato la mia coscienza e ho deciso che non potevo nemmeno usare il codice che avevo scritto perché onestamente non ho progettato il server di gioco da zero.

Così ho deciso di mettere i miei soldi dove era la mia bocca e scrivere da zero, con una copia della programmazione di rete UNIX di W. Richard Steven con me in ogni momento, ho iniziato. Scrivere da zero, a modo mio, mi ha insegnato molto più di quando avevo riscritto DikuMUD, e mi ha anche insegnato che non capivo davvero cosa significasse stare sulle spalle di qualcun altro. In sei mesi avevo 50.000 righe di codice operativo che potevo chiamare il mio. L'ho chiamato MUD ++ e l'ho rilasciato sotto BSD. Scritto male nel primo stile C ++, era ancora il primo MUD C ++ gratuito e open source di cui sono a conoscenza. Ancora oggi nessuno può portarmelo via. Avevo il miglior server TCP al momento, nessun altro poteva fare un "riavvio a caldo" senza far cadere i giocatori e presto tutti stavano rubando la funzione (e ho notato che molti MUD GPL hanno frammenti del mio codice BSD - sempre interessante il modo in cui GPL può dirottare gli articoli BSD ma non viceversa ). Alla fine, sono andato avanti, quindi non era come se la decisione fosse stata presa o interrotta per la mia fortuna, ma mentre gli altri ragazzi hanno fatto un sacco di soldi per un po ', l'ultima volta che ho visto si sono ridotti, in un mondo di giochi grafici non c'è più molta richiesta di massa per il testo.

La storia non finisce ... alcuni anni dopo, stavo lavorando per IBM e Disney ci ha ingaggiato per scrivere un gioco multiplayer 3D in tempo reale per Epcot Center e sono stato in grado di utilizzare il core TCP di MUD ++ come base per quello server di gioco! Se non avessi posseduto il mio codice, non mi sarebbe stato permesso di usarlo, e mi ha onestamente risparmiato settimane di programmazione. Alla fine, sono orgoglioso delle scelte che ho fatto e ho una storia da raccontare ai miei figli.

Le persone sottovalutano e sottovalutano il vantaggio di iniziare con il framework di qualcun altro su cui basarsi.

Se pensi di "possederlo", mettiti alla prova. Ricomincia, con un libro di Python accanto a te. Guarda come ci si sente. Non imbrogliare e non guardare la vecchia base di codice. Guarda l'output. Sforzati di pensare attraverso ogni aspetto da solo, facendo la ricerca onesta. Sarai meglio per questo e probabilmente avrai un prodotto migliore.

Prima di farlo, però, prova a contattare l'autore originale. Chiedi loro se sarebbero disposti a ricambiare. Se hai intenzione di vendere binari, offri i diritti d'autore. Molti autori che hanno rilasciato cose GPL negli anni '90 e 2000, ora hanno 30, 40 e 50 anni e capiscono cosa significa vivere nel software. Ho visto più di una reliquia da GPL a MIT, Apache, Boost o BSD.

Infine, una licenza non ha la precedenza sui diritti precedenti di codifica che potresti avere. O se hai scritto un componente aggiuntivo pulito in modo indipendente, ad esempio, se hai scritto un motore TCP come componente aggiuntivo di un gioco Tetris per giocatore singolo, e può tranquillamente stare da solo (specialmente se precedentemente rilasciato con un'altra licenza) puoi riutilizzare il tuo codice in altri progetti. Hai anche i diritti di autore.

La mia convinzione è gratuita è GRATUITA. Se devi allegare stringhe, non chiamarlo gratis. Qualcuno mi ha spedito anni dopo e ha detto che aveva usato il mio gioco in un motore commerciale, principalmente il TCP e forse l'interprete bytecode. Stavano facendo soldi. Non mi importava un po '. Ero felice come lo sono ancora adesso, come un padre orgoglioso.


4
In realtà lo stavo per suggerire e mi sono perso nella mia storia. Sì, consulta l'autore originale, rendilo omaggio, per così dire, e probabilmente rimarrai sorpreso dalla frequenza con cui l'autore è contento di aver preso la briga di chiedere. E molti giovani ragazzi universitari che erano grandi su GPL negli anni 90 e 2000 si stanno ora rendendo conto che i programmatori devono guadagnarsi da vivere.
codenheim,

13
Mi piace questa risposta e vorrei votare, ma non posso, a causa di tutti gli effetti anti-GPL dell'ultimo paragrafo. La stringa che la GPL allega è che le stringhe potrebbero non essere collegate in futuro.
Michael Shaw,

9
Buona risposta, ed esp. per aver raccomandato di elaborare un accordo con l'autore originale. L'autosufficienza è spesso una strada per la povertà, e mentre riscrivere un'intera libreria / piattaforma / app può essere uno sforzo utile, non è sempre così.
Dan1701

16
@MichaelShaw: In realtà ho pensato che fosse la parte più brillante di questa risposta. Il tuo reclamo dall'altra parte è effettivamente errato . Se l'autore del codice GPLd decide di rilasciare nuove versioni del suo codice con una licenza diversa, hanno i loro diritti. Associano le stringhe non a se stesse, ma solo a coloro con cui "condividono" il loro codice. Il modo più bello di descriverlo è come una mancanza fondamentale di fiducia nell'umanità.
back2dos,

9
A mio modo di vedere è che le licenze in stile BSD rendono questo codice, proprio qui, gratuito, il che è semplice. Le licenze in stile GPL mirano a creare una comunità / ecosistema di software libero / qualunque cosa sia in concorrenza con software chiuso e altrimenti non libero. Per fare ciò, fanno una serie di mosse strategiche, la lunghezza e la varietà di licenze simili a GPL e GPL (e il loro sviluppo nel tempo) dimostrano che si tratta di un business complesso che coinvolge molti giudizi di valore. Se quelli che preferiscono l'uno percepiscono l'altro come non libero, o quelli che sostengono l'altro che ruotano contro di loro, entrambi perdono.
Steve Jessop,

31

Questo scenario è trattato nelle FAQ di GPL :

Cosa dice la GPL sulla traduzione di un codice in un diverso linguaggio di programmazione?

Secondo la legge sul copyright, la traduzione di un'opera è considerata una specie di modifica. Pertanto, ciò che la GPL dice sulle versioni modificate si applica anche alle versioni tradotte.


Questa parte in particolare è chiara, ma diventa confusa quando esplodo nel resto del programma (almeno nella mia mente.) Il programma originale era un piccolo gioco di maledizioni, ma il mio lavoro al di là della traduzione include l'aggiunta di reti in modo che i giocatori possano competere testa a testa, oltre a ricercarlo per renderlo più modulare / estensibile. In sostanza, il motore di gioco condivide poca somiglianza con l'originale, ma il gioco stesso deriva molto. Questo risale alla mia domanda correlata, è il motore ora GPL o sarei in grado di estrarlo e riutilizzarlo per un progetto di licenza MIT o BSD.
Landon,

7
@Landon Il tuo lavoro è ancora derivato da un lavoro GPL, quindi è legato ai termini del GPL.
Philipp,

1
@Landon: ciò che determina se la GPL si applica non ha nulla a che fare con la GPL, è se il risultato finale è un "lavoro derivato" o meno. L'aggiunta di più elementi non trasforma un'opera derivata in un'opera non derivata perché in legge non si tratta della proporzione dell'opera derivata, è la quantità grezza. Anche una conversione di routine in un'altra lingua è derivata, ed è ciò che le FAQ ti stanno informando / ricordando. La domanda che devi porre al tuo avvocato è: "date le mie procedure, un tribunale troverà che si tratta di un'opera derivata?".
Steve Jessop,

... tuttavia, questa risposta si concentra sulle "funzioni tradotte alla lettera" che presumibilmente sono derivate, ma che dici di voler rimuovere. In quanto tale, non penso che copra davvero il tuo scenario previsto. Copre il tuo attuale e copre lo scenario in cui ti troverai se commettessi un errore e non riesci ad accontentare tutto ciò di cui hai bisogno.
Steve Jessop,

8

È dubbio, anche se riscrivessi l'intera libreria da zero, che passerebbe il controllo legale. Il codice sarebbe considerato "contaminato" perché hai visto il codice nella libreria con licenza GPL.

L'approccio standard a questo problema si chiama "implementazione di clean room". Scrivi un documento di requisiti e qualcun altro lo implementa (che non ha visto il codice GPL).

Vedi anche questa domanda: riscrivere il codice GPL per cambiare la licenza

Come qualcuno ha giustamente messo lì, una traduzione cinese di Harry Potter è ancora un'opera derivata, anche se tutte le informazioni sono state sostituite.

Ovviamente, la probabilità che tu venga citato in giudizio per aver riscritto una biblioteca con licenza GPL (e la moralità di affidarti a quella bassa probabilità) sono discussioni completamente diverse.

Per quanto riguarda l'aggiunta di funzionalità al codice originale, questa è (parte di) la definizione stessa di lavori derivati: aggiunta al lavoro originale. Non importa quanto hai aggiunto o quanto piccolo sia stato il lavoro iniziale - è ancora derivato.


3
Non sono sicuro che mi piaccia la scelta dell'analogia: la domanda originale sembra più come se pensassero che stessero originariamente raggruppando le loro cose con Harry Potter, ma ora vogliono unirle al loro romanzo epico fantasy con magia e cattivi che si svolgono principalmente in una scuola in un castello.

1
@Hurkyl So 50 Shades of Grey?
Yamikuronue,

8
Avere visto il codice non significa che tu l'abbia copiato. L'implementazione di una camera bianca è utile se ti aspetti che al proprietario del codice originale non piaccia quello che fai e ti farà causa, quindi puoi dire in tribunale "non abbiamo copiato il codice; anche se avessimo voluto, noi could "che è una difesa forte. Dopo aver visto il codice puoi ancora dire "non abbiamo copiato il codice" purché sia ​​la verità.
gnasher729,

2
Accetto con @ gnasher729. GPL afferma specificamente che è consentito studiare il codice. La premessa è che l'autore l'ha rilasciato per insegnarti (tra le altre cose). Per questo motivo, non ho mai applicato l'argomento clean room al codice GPL. Non si può pubblicare un libro di cucina e quindi fare causa a persone che creano le proprie ricette, a meno che, ovviamente, il codice non sia brevettato, quindi la protezione brevettuale copre le tecniche e le invenzioni, ma non l'implementazione (AFAIK). Il copyright e il brevetto sono questioni diverse.
codenheim,

1
Direi che c'è una probabilità molto bassa di finire in un'aula di tribunale se si viola GPL perché con solo una o due eccezioni ogni volta che c'è stato un problema, uno degli avvocati delle persone che violano la GPL capiscono la GPL che dicono loro di o fermarsi o fare un accordo. Questa è stata sicuramente la mia esperienza ogni volta che ho dovuto scrivere una lettera su una violazione. E ci sono avvocati pro bono che difenderanno la GPL per lo sviluppatore originale. Davvero, il miglior consiglio è di parlare con il programmatore originale. Ho chiesto alle persone di usare il codice dual / relicense e quasi sempre hanno detto ok.
Elin,

7

Osservazione: la GPL è rilevante solo se rilasci il tuo lavoro. L'hai già rilasciato?

Osservazione: questo non è un sito web di consulenza legale, quindi buttate via tutto quel FUD legale e applicate il buon senso.

Opinione: La GPL, o qualsiasi licenza, non ha idee sul copyright , afferma il codice sorgente, non importa quanto piccola sia la sua parte. Quindi, se e solo se il tuo lavoro "derivato" non può essere identificato come derivato dall'originale, perché hai modificato la struttura del codice e reimplementato tutte le funzionalità, è per tutti gli scopi pratici non più derivato, perché, beh, sarebbe essere indistinguibili da un'implementazione in camera bianca.

Questo è molto difficile (impossibile?) Da realizzare anche se hai una base di codice che modifichi, invece di ricominciare da zero.


8
"Osservazione: questo non è un sito web di consulenza legale, quindi buttate via tutto quel FUD legale e applicate il buon senso." Ehm, poiché questa è chiaramente una domanda legale, la soluzione non è far finta che non esistano problemi legali, ma chiedere a un avvocato. La mia comprensione è che un'opera derivata non può smettere di essere un'opera derivata solo perché si fa più derivazione.
David Richerby,

1
@DavidRicherby: se si tratta di una domanda legale, la risposta è specifica della giurisdizione e la q deve essere chiusa in quanto troppo localizzata. :-)
Martin Ba

2
@MartinBa - il diritto internazionale è praticamente in accordo con il copyright. Esistono variazioni locali, ma non credo che le domande / risposte siano necessariamente troppo localizzate per essere utili.
cloudfeet

5

Possiedi il copyright per qualsiasi codice che scrivi. Qual è il mandato di GPL: qualsiasi codice fornito o rilasciato insieme al codice GPL, è necessario rilasciare anche con una licenza simile. Tuttavia, il copyright è ancora tuo.

Quindi, se rilasci il tuo software parzialmente durante la riscrittura (quindi c'è una combinazione del tuo codice e del vecchio codice), allora devi rilasciare quella parte del tuo codice come GPL, e questo non può essere revocato. Tuttavia, il detentore del copyright è colui che decide i termini della licenza, quindi hai ancora il diritto essenzialmente di "duplice licenza" quella parte del codice, incluso la combinazione con altro codice che hai solo scritto e venduto / rivendicato, ecc.

Avvertenze:

  • sebbene il copyright sul codice che scrivi sia tuo per impostazione predefinita, può essere modificato da un altro contratto / accordo, ad esempio un CLA che specifica il trasferimento del copyright o un contratto con un datore di lavoro che possiede tutto il lavoro che fai sul "loro tempo".
  • se la tua riscrittura costituisca abbastanza un "lavoro derivato" da farti condividere il copyright con l'autore originale è una questione di grado. Se traduci il codice riga per riga in un'altra lingua ( come indicato nella domanda ), tali parti potrebbero essere considerate come derivate. Se si implementa una sostituzione compatibile con API senza guardare i dettagli, probabilmente non lo farebbe.

(fonte: una sessione "copyright e open-source" organizzata dalla mia azienda qualche settimana fa)


Si consiglia di sostituire "documento" con "contratto" o "accordo". Non è sufficiente scrivere su un documento "DougM possiede il codice di cloudfeet". Dovremmo avere uno scambio legale che passerebbe la revisione del tribunale.
DougM

Dipende dalla giurisdizione - almeno dove sono, anche i contratti verbali sono vincolanti, semplicemente difficili da provare. Un post-it con un'adeguata calligrafia su avrebbe resistito abbastanza bene in teoria . : p
cloudfeet,

Tuttavia, il tuo punto è positivo e il contratto / accordo è una descrizione migliore - grazie :)
cloudfeet

3

Sì.

Le altre risposte usano troppo testo che spiega le opinioni sull'opportunità o meno, ma tali opinioni non sono così rilevanti per la domanda.

Il fatto è che avrai una nuova opera una volta sostituite le ultime parti, che è stato certamente costruito guardando un'opera GPL. Questa non è una delle maggiori preoccupazioni nella legge sul copyright (i brevetti sarebbero un altro problema). Tutto ciò che distribuisci sarà la tua creazione.

C'è un sacco di materiale a sostegno della teoria secondo cui il copyright in un programma software è la somma dei diritti d'autore parziali. Ad esempio, MPL riconosce esplicitamente questo modello. La causa Google / Oracle è arrivata al livello dei diritti d'autore.


3
Un'opera costruita "guardando" un'altra opera è un'opera derivata e sarebbe macchiata dallo stesso copyright dell'opera che "guardavi".
DougM,

1
@DougM: Mi dispiace, ma è un presupposto molto conservativo che non ho mai visto usato con successo in tribunale. Non dimenticare che se tale teoria avesse rilevanza giuridica, si applicherebbe anche ai libri: il codice del computer non ha leggi speciali per determinare cosa sia un'opera derivata. Nessuno sosterrà che il tuo libro è un derivato di Shakespeare semplicemente perché hai letto uno dei suoi spettacoli a scuola. Pertanto, il precedente stabilisce che la barra del "lavoro derivato" è molto più elevata di "aver letto un lavoro simile".
Salterio,

1
GPL afferma specificamente che è consentito studiare il codice. Questo non è un IP proprietario, è gratuito, open source. Non ho visto alcun supporto legale, nel corso della vita di GPL, per l'affermazione che guardare una ricetta pubblicata per creare la mia ricetta implica un derivato.
codenheim,

1
Ci si potrebbe chiedere fino a che punto Linux avrebbe potuto andare se la sostituzione del codice Unix con il codice originale non fosse sufficiente.
user2338816

3
@ user2338816 Linux non è iniziato con il codice Unix, ma è iniziato con MINIX. E tecnicamente, è possibile che MINIX avrebbe potuto avere un caso contro Linux. Ciò dipende da come Linux ha riscritto il loro codice e la licenza con cui il codice MINIX è stato condiviso con le università. Tuttavia, si tratta anche di politica e denaro, MINIX vuole davvero andare dopo Linux e Linux ha i soldi (attraverso società come Red Hat) per combatterli.
CrazyCasta,

1

La risposta breve è che non puoi saperlo.

Quando parli con Richard, scopri che è "pazzo come una volpe" in molte delle sue implementazioni. La GPL è scritta appositamente per avere ambiguità e frasi poco chiare. Questi sono generalmente espressi contro il beneficio dell'autore della licenza, ma danno anche preoccupazioni al tuo avvocato di proprietà intellettuale. Intelligentemente, dà al tuo avvocato di proprietà intellettuale preoccupazioni crescenti man mano che l'azienda si ingrandisce. Una piccola impresa commerciale che fa la "ragionevole interpretazione" della GPL potrebbe essere un rischio accettabile, ma una grande società di software potrebbe trovare più prudente bruciare un intero team che è riuscito a ottenere una contaminazione di GPL.

Non c'è risposta. Non ci sarà una risposta. Questa è la risposta

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.