Ship of Theseus applicato a GPL - Posso rilasciare il mio programma se sostituisco tutte le parti derivative?

98

I ha tradotto un GPLv2% con il% di programma in C , ma è stato difficile estenderlo come previsto e riscrivere parti significative di esso. Il programma ora è strutturalmente completamente diverso, ma ci sono diverse funzioni tradotte letteralmente in uso.

Il Ship of Theseus Paradox (come dichiarato da Wikipedia) "solleva la questione se un oggetto che ha avuto tutto i suoi componenti sostituiti rimangono fondamentalmente lo stesso oggetto. "

Se riuscissi a scrivere delle sostituzioni per le funzioni letterali, sarei in grado di rilasciare la licenza che preferisco?

Correlati, 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 "macchiato" della licenza GPL.

Followup : ho deciso di contattare il titolare del copyright e ho ricevuto permesso di relitto . A volte il modo migliore è interagire socialmente anziché programmaticamente!

    
posta Landon 19.10.2014 - 01:11
fonte

7 risposte

95

In primo luogo, la risposta è no (per una traduzione), non è possibile giuridicamente relazionarlo o fare qualcosa al di fuori della legalità della licenza originale. Potrebbe benissimo aver fatto 10 volte il lavoro dell'autore originale, ma non importa, è virale. Non solo perché è GPL, ma perché non è un design pulito o riscrivo.

Ho faticato brevemente con questo nel 1992, quando ho eseguito una riscrittura massiva di un vecchio codice MUD. Abbiamo avuto un gioco di successo, ma volevamo fare le nostre cose e le persone erano disposte a pagare per questo, eppure DikuMUD licenza ci proibisce severamente di fare soldi. Un concorrente, all'epoca, si era basato sulla stessa base di codice, e ha optato per ignorare palesemente il copyright, strapparne tutte le tracce e fondamentalmente mentire a tutti, compresi se stessi. La loro logica era "nessuno del codice originale esiste" e "abbiamo fatto enormi riscritture e miglioramenti" e generalmente ignorando il fatto che iniziarono con 20.000 righe di codice. Stavano caricando gli oggetti nel gioco e facendo troppi soldi per fermarsi.

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

Così ho deciso di mettere i miei soldi dove ero la mia bocca e scrivere da zero, con una copia di UNIX Network Programming di W. Richard Steven con me in ogni momento, ho iniziato. Scrivere da zero, a modo mio, mi ha insegnato molto più di quando ho riscritto DikuMUD, e mi ha anche insegnato che non capivo veramente cosa significasse stare sulle spalle di qualcun altro. Entro sei mesi ho avuto 50.000 linee di codice operativo che potrei chiamare mio. L'ho chiamato MUD ++ e l'ho rilasciato sotto BSD. Scritto male nel primo linguaggio C ++, era ancora il primo MUD C ++ gratuito e open source di cui sono a conoscenza. Fino ad oggi nessuno può portarmelo via. Avevo il miglior server TCP al momento, nessun altro poteva fare un "hot reboot" 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 come GPL possa dirottare BSD-ware ma non viceversa ). Alla fine, sono andato avanti, quindi non è stato come se la decisione fosse un trucco o una rottura per la mia fortuna, ma mentre gli altri ragazzi guadagnavano un sacco di soldi per un po ', l'ultima volta che guardavo si erano 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 assunto per scrivere un gioco multiplayer 3D in tempo reale per il centro Epcot, e sono stato in grado di usare il core TCP del MUD ++ come base per quel server di gioco! Se non avessi posseduto il mio codice personale, non avrei avuto il permesso di usarlo e mi ha onestamente risparmiato settimane di tempo di programmazione. Alla fine, sono orgoglioso delle scelte che ho fatto e ho una storia da raccontare ai miei figli.

La gente sottovaluta e sottovaluta il vantaggio di iniziare con il framework di qualcun altro su cui costruire.

Se pensi di "possederlo", mettiti alla prova. Ricomincia, con un libro 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 a ogni aspetto da solo, facendo la ricerca onesta. Sarai migliore per questo, e probabilmente avrai un prodotto migliore.

Prima di farlo, prova a contattare l'autore originale. Chiedi loro se sarebbero disposti a fare affidamento. Se prevedi di vendere binari, offri royalties. Molti autori che hanno pubblicato GPL negli anni '90 e '50, ora hanno 30, 40 e 50 anni e comprendono cosa significa guadagnarsi da vivere con il software. Ho visto più di una reliquia da GPL a MIT, Apache, Boost o BSD.

Infine, una licenza non ha la priorità sui diritti del codice che potresti avere. Oppure se hai scritto un add-on pulito in modo indipendente, ad esempio, se hai scritto un motore TCP come add-on per un gioco Tetris a giocatore singolo, e può stare in piedi da solo (specialmente se hai precedentemente rilasciato sotto un'altra licenza) allora puoi riutilizzare il tuo codice in altri progetti. Hai anche i diritti di autore.

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

    
risposta data 19.10.2014 - 02:47
fonte
31

Questo scenario è trattato in Domande frequenti sulla GPL :

What does the GPL say about translating some code to a different programming language?

Under copyright law, translation of a work is considered a kind of modification. Therefore, what the GPL says about modified versions applies also to translated versions.

    
risposta data 19.10.2014 - 09:04
fonte
8

È incerto, anche se hai riscritto l'intera libreria da zero, che avrebbe passato il controllo legale. Il codice sarebbe considerato "macchiato" perché hai visto il codice nella libreria con licenza GPL.

L'approccio standard a questo problema è chiamato "implementazione di clean room". Scrivi un documento dei requisiti e fallo implementare da qualcun altro (chi non ha visto il codice GPL).

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

Come qualcuno lo ha messo giustamente lì, una traduzione in cinese di Harry Potter è ancora un lavoro derivato, anche se tutte le informazioni sono state sostituite.

Ovviamente, le probabilità che tu venga denunciato per riscrivere una libreria con licenza GPL (e la moralità di fare affidamento su quella bassa probabilità) sono discussioni completamente diverse.

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

    
risposta data 19.10.2014 - 07:53
fonte
7

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

Osservazione: questo non è un sito di consulenza legale, quindi elimina tutti i FUD legali e applica il buon senso.

Opinione: La GPL, o qualsiasi licenza, non ha idee sul copyright , rivendica il codice sorgente, non importa quanto piccola sia la sua parte. Quindi, se, e solo se il tuo lavoro "derivativo" non può essere identificato come derivato dall'originale, perché hai cambiato la struttura del codice e reimplementato la funzionalità tutto , è per tutti gli scopi pratici non più derivati, perché, beh, sarebbe indistinguibile dall'implementazione di una camera bianca.

Questo è molto difficile (impossibile?) per raggiungere il risultato quando si ha una base di codice esistente che si modifica, invece di partire da zero.

    
risposta data 19.10.2014 - 21:28
fonte
5

Possiedi il copyright di qualsiasi codice che scrivi. Ciò che la GPL richiede è: qualsiasi codice che contribuisci o rilasci insieme al codice GPL, devi anche rilasciarlo con una licenza simile. Tuttavia, il copyright è sempre tuo.

Quindi, se rilasci il software a metà della riscrittura (quindi c'è un misto tra il tuo codice e il 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 in merito alle condizioni di licenza, quindi hai ancora il diritto di "duplicare" sostanzialmente quella parte del codice, incluso combinarlo con altro codice scritto e venduto / rilasciando, ecc.

Avvertenze:

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

(fonte: una sessione "copyright and open-source" organizzata dalla mia azienda alcune settimane fa)

    
risposta data 20.10.2014 - 14:05
fonte
3

Sì.

Le altre risposte usano troppo testo per spiegare le opinioni sul fatto che tu debba o meno, ma quelle opinioni non sono rilevanti per la domanda.

Il fatto è che avremo un nuovo lavoro una volta sostituite le ultime parti, che è stato sicuramente costruito guardando un lavoro 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'è abbondanza 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 ha ottenuto il copyright a livello di linea.

    
risposta data 20.10.2014 - 09:13
fonte
1

La risposta breve è che non puoi sapere.

Quando parli con Richard, scopri che è "pazzo come una volpe" in molte delle sue implementazioni. La GPL è scritta specificamente 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 IP. Intelligentemente, dà al tuo avvocato IP crescenti preoccupazioni mentre la compagnia diventa più grande. Una piccola impresa commerciale che fa la "ragionevole interpretazione" della GPL potrebbe essere un rischio accettabile, ma una grande azienda di software potrebbe trovare più prudente bruciare un'intera squadra che è riuscita a ottenere una macchia di GPL.

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

    
risposta data 26.09.2015 - 19:58
fonte

Leggi altre domande sui tag