GPLv2 - Più motori di scacchi IA per bypassare GPL

1

Ho ricevuto una serie di domande relative alla GPL, la più recente è questa:

link

Sto provando a vedere come funzionerebbe, quindi abbi pazienza con me. Ho una semplice interfaccia grafica per un gioco di scacchi. In sostanza può inviare / ricevere comandi a / da un motore di scacchi esterno (es: Tong, Frutta, ecc.). L'applicazione / GUI è di natura simile a XBoard ( link ), ma è stata progettata in modo indipendente.

Dopo aver esaminato una serie di thread su questo argomento, sembra che la FSF consideri il collegamento dinamico a una libreria GPLv2 come un lavoro derivato, e che così facendo, la GPLv2 si estenda al mio codice proprietario, e devo rilasciare il fonte per il mio intero progetto. Altri precedenti legali indicano il contrario e che il collegamento dinamico non causa l'effetto "virale" della GPL di propagarsi al mio codice proprietario.

Poiché non esiste un consenso ufficiale che possa dare una risposta "dura e veloce" alla domanda di collegamento dinamico, questa sarebbe un'alternativa accettabile:

  1. Costruisco la mia GUI di scacchi in modo che invii / riceva la logica AI del motore di scacchi come comandi di testo da una libreria di interfacce esterne che scrivo
  2. La libreria di interfacce che ho scritto da sola viene quindi rilasciata sotto GPL
  3. La libreria di interfaccia viene utilizzata solo per comunicare tramite una pipe di testo generica a motori di scacchi esterni da riga di comando
  4. Il motore di scacchi stesso verrebbe creato come utilità da riga di comando anziché come una libreria di qualsiasi tipo e invia semplicemente stringhe nell'interfaccia di scacchi universale di Chess Engine Communication Protocol ( link ) formato.
  5. L'unico "trucco" è che la libreria di interfacce non dovrebbe essere specifica per un singolo motore di scacchi GPL, altrimenti l'intera GUI sarebbe "interamente dipendente" da esso. Quindi, faccio semplicemente la mia libreria di interfaccia in modo che sia in grado di connettersi a qualsiasi motore di scacchi da linea di comando che utilizza un formato specifico, piuttosto che un unico motore univoco. Potrei quindi includere versioni di app da riga di comando predefinite di qualsiasi motore di scacchi che sto utilizzando.

Questo tipo di approccio mi consentirà di fare quanto segue:

  1. NON rilascia il sorgente per la mia interfaccia utente
  2. Rilascia il sorgente della libreria di interfacce che ho creato (se necessario)
  3. Utilizzare uno o più motori di scacchi e raggrupparli come utilità di riga di comando esterna fornite con una versione binaria dell'interfaccia utente

Grazie.

Modifica: per quello che vale, è così che posso mantenere privato il mio codice, poiché potrei voler riutilizzare parte del mio codice di rendering in altri progetti indipendenti. Questo non è un tentativo commerciale di scrivere semplicemente un'interfaccia utente economica per "avvolgere" il motore di qualcun altro e trarre profitto dal loro duro lavoro. Alla fine, ho scritto il mio semplice motore di scacchi (in realtà poco più di un validatore di mosse legali) invece di usare un componente GPL.

    
posta DevNull 09.10.2012 - 22:31
fonte

2 risposte

5

Dai un'occhiata a questo .

By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.

In base a ciò, GNU non considera la comunicazione attraverso una pipe come un'opera derivata, il più delle volte comunque.

    
risposta data 09.10.2012 - 22:39
fonte
1

No, non penso che sia etico incorporare il software GPL nel tuo progetto di close-sourced. Qualsiasi azione che inizi con un tentativo di "bypassare" la GPL probabilmente sta violando lo spirito della GPL. Non lo trovo una soluzione accettabile.

Se il tuo software esegue codice GPL, il tuo software dovrebbe essere GPL. Questo è il tipo di rapporto di dare e avere che la FSF sta cercando di promuovere.

Modifica
Ma per attenuare la retorica, i progetti proprietari possono effettivamente utilizzare il software GPL purché siano "a portata di mano". Il tuo codice può essere eseguito su sistemi operativi GPL, il tuo codice può richiedere pagine Web servite da un server GPL e la tua interfaccia utente proprietaria può persino chiamare un programma di scacchi per scegliere la prossima mossa. Ma se includi il motore di scacchi di GPL, DEVI includere la licenza e rendere disponibile il codice sorgente del motore di scacchi. E puoi cambiare il motore di scacchi, ma se lo fai in modo specifico in modo che solo la tua interfaccia utente possa usarlo, stai violando la GPL.

E anche allora, se stai approfittando del codice GPL ... Dai, amico, contribuisci alla comunità.

    
risposta data 09.10.2012 - 23:49
fonte

Leggi altre domande sui tag