L'esecuzione di un eseguibile come processo figlio equivale al collegamento di una libreria?

5

Sto pianificando di eseguire un eseguibile come processo figlio nel mio programma (ad esempio utilizzando la famiglia di funzioni% di popen di Ruby o% di% di funzioni diexec()). Tuttavia, l'eseguibile che sto pianificando di eseguire è concesso in licenza tramite GPL.

La GPL , a quanto ho capito, richiede che anche tutto il codice collegato al codice con licenza GPL debba essere GPL.

Ma c'è anche un'eccezione di "lunghezza di braccio", discussa in Domande frequenti :

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.

Il runnning di un eseguibile come processo figlio farebbe parte di questa eccezione, o sarebbe comunque considerato "linking" ai fini della licenza?

Se è considerato "linking", come si differenzia dal programma in esecuzione, come Nmap, da una riga di comando?

    
posta Steven Williams 22.08.2011 - 09:53
fonte

4 risposte

9

Penso che questa citazione dalla sezione sui plugin possa portarti nella giusta direzione.

If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them. So you can use the GPL for a plug-in, and there are no special requirements.

    
risposta data 22.08.2011 - 21:24
fonte
4

Avrai difficoltà a trovare una buona risposta a questa domanda. Il problema è che la risposta corretta alla tua domanda si basa su una complicata domanda legale per la quale non esiste ancora una risposta.

Non sono un avvocato, ma ti dirò la mia posizione, per quello che vale. Il collegamento, poiché non implica un processo creativo, non può creare una nuova opera a fini di copyright. Il collegamento è legalmente simile alla graffatura. Il collegamento di due opere insieme è come pinzare insieme due DVD. L'output è, legalmente, lo stesso dell'input. Sono le due opere.

Quindi, se il tuo lavoro non è un lavoro derivato prima di collegarlo, non è un lavoro derivato dopo averlo collegato. La GPL richiede la distribuzione del codice sorgente delle opere distribuite. Quindi la domanda è se il lavoro il cui codice sorgente non vuoi distribuire sia un lavoro derivato. Poiché il collegamento non può cambiare questo, la domanda si riduce a se il lavoro è stato un lavoro derivativo prima di collegarlo.

Legalmente, con solo poche eccezioni per statuto che non si applicano qui, un'opera è un'opera derivata se contiene un'espressione significativa protettiva presa dall'altra opera. Nota che gli elementi funzionali non sono un'espressione protettiva, solo gli elementi creativi sono.

Quindi la risposta alla tua domanda è: Se il tuo codice contiene un'espressione protettiva sufficiente presa da un'opera coperta dalla GPL per renderla un'opera derivata di quel lavoro, allora sì. Altrimenti, no.

    
risposta data 22.08.2011 - 15:15
fonte
0

Questo è generalmente considerato accettabile, a condizione che il processo figlio sia un programma ragionevole di per sé.

In definitiva, la domanda è: il proprietario del codice GPL dovrebbe farti causa, e può convincere un giudice che i processi sono "combinati in un modo che li renderebbe effettivamente un unico programma". Se il processo figlio è uno strumento che può essere utilizzato da solo, e stai invocando quello strumento, dovresti stare bene.

    
risposta data 22.08.2011 - 21:53
fonte
0

Consente di confrontare le stringhe "eseguendo un eseguibile come processo figlio" e "collegando una libreria". Uno inizia con la lettera "r" l'altro con la lettera "l". Quindi non è lo stesso!

    
risposta data 23.08.2011 - 09:23
fonte

Leggi altre domande sui tag