Porting di un'implementazione dell'algoritmo con licenza GNU GPL v3

0

Sto lavorando su una porta JavaScript di un'implementazione albero rosso-nero in Java dal libro Algorithms 4th Edition , di Sedgewick e Wayne. Credo che la mia porta JavaScript si qualifichi come un lavoro derivato. Non è quasi una copia line-for-line, ma la logica di base per la manipolazione RBT è abbastanza simile.

Nel sito del libro , si afferma che le librerie stdlib.jar e algs4.jar sono concesse in licenza GPLv3. L'implementazione dell'albero rosso-nero in Java fa parte della libreria algs4.jar . Idealmente mi piacerebbe rilasciare la porta con una licenza più permissiva, ma ciò non sembra possibile, per motivi comprensibili.

Tuttavia non sono chiaro su come gli utenti della mia porta saranno vincolati dalla licenza. Qualunque software che usi la mia porta ad albero red-black JavaScript, a prescindere dalle dimensioni complessive del progetto, deve rendere disponibile l'intera sorgente del progetto con gli stessi termini o solo la sorgente per la porta JavaScript stessa?

In altre parole, gli autori di alcuni progetti più grandi sono tenuti a pubblicare il loro intero progetto sotto GPLv3 solo perché usa una porta di un'implementazione di algoritmo rilasciata sotto quei termini in qualche parte del progetto?

    
posta t.888 11.12.2014 - 21:21
fonte

2 risposte

5

Il tuo codice deve essere rilasciato sotto GPLv3 poiché ritieni che sia un lavoro derivato dell'implementazione algs4.jar .

Probabilmente altri progetti che utilizzano il tuo codice dovranno essere rilasciati come GPLv3. Le applicazioni più grandi incorporano solo il codice di progetti più piccoli e trattano il codice più piccolo come parte del più grande. Ciò attiverà l'aspetto "virale" di GPLv3.

Se fornisci un modo per accedere al tuo codice in uno dei "meccanismi di fuga" accettati, il progetto più grande non sarà influenzato dall'aspetto virale di GPLv3. Questa sezione delle Domande frequenti sulla GPL spiega alcuni dei modi in cui il codice GPL può essere usato nel codice proprietario senza attivare l'aspetto virale della GPLv3.

However, in many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.

Potresti anche essere in grado di concedere in licenza il tuo progetto come LGPL, che può rendere più semplice per altri progetti collegarsi al tuo progetto senza essere influenzato dalla licenza GPL / LGPL.

    
risposta data 11.12.2014 - 21:32
fonte
4

Per allegare la tua licenza al codice, devi possedere il copyright. In generale, ciò significa che deve essere codice che hai scritto.

Ad esempio, ci sono già delle librerie che forniscono alcune funzionalità che voglio nel mio programma. Ho due scelte: posso vivere con la licenza fornita dalla libreria, o posso scrivere la mia libreria che esegue una funzione simile.

Il modo più sicuro per scrivere la mia libreria di cloni è farlo come implementazione di clean room: cioè, scrivo la mia libreria senza conoscere gli interni della libreria originale. In questo modo, posso essere accusato di non rubare il codice né gli algoritmi implementati dal codice, perché tutto il mio lavoro è un lavoro originale.

Le cose diventano un po 'più difficili se stai esaminando dettagliatamente il codice della libreria originale. Affinché un lavoro trasformativo (ovvero un lavoro che incorpori elementi di un'opera già coperta da copyright) possa beneficiare della protezione del copyright, il tuo lavoro deve essere nuovo in alcuni modo; cioè, deve contenere lavoro originale. Mi sembra che una biblioteca direttamente trascritta in un'altra lingua non sia abbastanza nuova per soddisfare questo criterio.

Ulteriori letture
link

    
risposta data 11.12.2014 - 21:46
fonte

Leggi altre domande sui tag