2009-03-06 13 views
20

Per quanto ne so, quando costruisco un'applicazione desktop/server utilizzando qualsiasi codice GPL come MySQL dovrò rilasciare il codice sorgente del mio software sotto licenza GPL.Licenza MySQL e GPL

Se voglio sviluppare una web-app utilizzando MySQL, il mio codice si collegherà alle librerie MySQL. Devo rilasciare il codice sorgente della mia webapp in questa situazione per essere conforme alla GPL?

+2

Si potrebbe anche prendere in considerazione l'utilizzo di MariaDB che è concesso in licenza unter la LGPL e il protocollo è compatibile binario con MySQL. – MrTux

+4

Sto votando per chiudere questa domanda come off-topic perché riguarda le licenze o le questioni legali, non la programmazione o lo sviluppo del software. [Vedi qui] (http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964) per i dettagli e [aiuto] per ulteriori informazioni. – JasonMArcher

risposta

16

A condizione che si mantenga solo server (e quindi "privato"), non è necessario rilasciarlo come GPL. Ma non appena esso raggiunge i desktop pubblici, non può più essere considerato una build interna e pertanto è necessario il codice sorgente.

Così si può:

  • Rilasciare il codice come GPL
  • acquistare la versione commerciale di MySQL
  • Keep it solo server.
+0

Sfortunatamente, non è nemmeno così pulito: la GPL vieta la distribuzione ** senza dare la fonte di ogni "prodotto derivato". Questo riguarda quasi ogni app web ... vedi la mia risposta qui sotto. –

+0

@ TheodoreR.Smith In effetti, sospetto che quando aggiungiamo reti di distribuzione di contenuti, la cosa potrebbe diventare brutta. Mi chiedo se questo sia mai stato testato in tribunale. – luiscubal

+0

Oh non è mai stato testato in tribunale. Tutti i grandi giocatori verrebbero completamente fregati, dato che distribuiscono GPL sui loro server interni. Se mai fosse andato in tribunale e i cluster fossero contati come distribuzione, allora il mercato GPL si sarebbe impadronito e sarebbe morto quasi immediatamente. –

5

È necessario rilasciare la fonte (in GPL) o pagare una licenza proprietaria su MySQL in modo da ottenere il diritto di distribuire i file binari MySQL con una licenza più adatta a quella utilizzata dai prodotti proprietari. È meglio portare questo tipo di domande al tuo avvocato, però.

ETA: Giusto per chiarire un po '; se scrivi la tua libreria che parla con MySQL usando il suo protocollo wire-line, allora sarai sempre al 100% in chiaro. Allo stesso modo, se si utilizza una libreria che ha fatto proprio questo, ma è concessa in licenza BSD (ad esempio), allora si sarebbe anche in chiaro, perché si sta solo parlando con MySQL su una connessione socket, e in realtà non si sta chiamando nel codice GPL. Non sono immediatamente a conoscenza di alcuna interfaccia con licenza BSD per il protocollo MySQL, ma è certamente possibile che ce ne sia una da qualche parte.

1

A meno che non deriviate e/o distribuite il software GPL, dovreste essere al sicuro.

Il collegamento con la libreria client MySQL non è né un lavoro derivato, né una distribuzione.

AGGIORNAMENTO: Vieni a pensarci, il modo in cui si collega (dinamico o statico) alle librerie farà la differenza. Il collegamento statico è una distribuzione, ma se si collega dinamicamente e i client scaricano i connettori da soli, non si tratta di distribuzione e si dovrebbe essere sicuri.

Oh, e IANAL.

+0

GPL non è LGPL. C'è una differenza * maggiore *. LGPL può essere collegato con software proprietario, GPL no. –

+0

Conosco la differenza. Ma finché non modifichi e/o distribuisci il software GPL, c'è poca differenza. –

+0

Giusto, ma il punto chiave è la distribuzione, non se si tratti di un'opera derivata o meno. È tutto. –

1

MySQL utilizza la doppia licenza. Come dicono - se sei libero, siamo liberi.

Quindi, se si utilizza, per quanto ne so, solo il connettore JDBC di MySQL, si dovrebbe avere la licenza o il codice GPL.

2

Se si sta eseguendo l'applicazione Web autonomamente e non la si distribuisce come un'applicazione, non è necessario rilasciare il codice sorgente. L'accesso a un'applicazione Web non è considerato distribuzione.

Modifica: se interessati, è possibile consultare lo Affero General Public License, che richiede che tale origine sia resa disponibile agli utenti della rete del software AGPL (ad esempio, si applicherebbe alle applicazioni Web).

+0

Se si collega a una lib di GPL e si distribuisce, lo si fa. Se lo tieni interno, non lo fai. Ci sono linee sottili (codice di spedizione sul lato client per l'esecuzione, ecc.) Che gli avvocati devono discutere, però. –

+0

@Michael Trausch Rimosso quella linea in base al tuo input, grazie. – Boden

0

In primo luogo, non sono un avvocato. Parla con uno prima di prendere qualsiasi consiglio qui.

Oltre a ciò, se non si distribuisce l'app Web, probabilmente non è necessario rilasciare le modifiche. Puoi comunque rendere la tua app Web disponibile per essere utilizzata da altri se si ospita l'app Web.

0

Se la distribuzione include e installa MySql nello stesso pacchetto, richiede una licenza commerciale.

Ma se si distribuisce il proprio codice, con una semplice notifica "richiede MySql" e uno script di installazione (per creare/popolare le tabelle), non ci dovrebbero essere problemi, AFAIK.

IANAL, ovviamente.

1

Se voglio sviluppare un'app Web utilizzando MySQL, il mio codice si collegherà alle librerie MySQL. Devo rilasciare il codice sorgente della mia webapp in questa situazione per essere conforme alla GPL?

  1. Come altri hanno detto, se non stai distribuendo l'applicazione per gli altri non c'è problema a tutti.

  2. Normalmente, si svilupperebbe contro un'API di database standard e si consente all'utente di decidere quale database collegare all'app. In questo caso non ci sono problemi. "Il tuo codice" non si collegherebbe a libmysqlclient, ma potrebbe potenzialmente essere combinato con un modulo di accesso al database che collega a libmysqlclient.

  3. Se si desidera distribuire un programma di installazione che configura l'applicazione e libmysqlclient insieme, questo probabilmente non conterà come "semplice aggregazione", quindi richiederebbe la distribuzione dell'app sotto una licenza open source. Tuttavia, questo non deve necessariamente essere GPL: vedere lo MySQL FOSS License Exception.

  4. Se si desidera distribuire un programma di installazione che configura l'applicazione e il server MySQL stesso, l'eccezione non si applica, quindi si è limitati solo a GPL.

Naturalmente IANAL, e non v'è certamente ancora qualche incertezza su ciò che conta come derivazione soprattutto per quanto riguarda il collegamento dinamico. Tuttavia, quanto sopra è la mia comprensione della posizione tradizionale di MySQL AB in materia di licenze e non ho sentito alcun cambiamento dopo l'acquisizione da parte di Sun.

+0

@bobience puoi, per favore, fornire un riferimento al tuo chiarimento sopra menzionato sulla licenza di MySQL per GPL. MySQL non ha spiegato chiaramente i loro collegamenti web per le licenze –

1

Sfortunatamente, non è nemmeno così pulito: la GPL proibisce la distribuzione senza fornire l'origine di ogni "prodotto derivato". La distribuzione è legalmente definita come l'atto di trasferire la fonte da un computer a uno o più computer per uso ufficiale.

Purtroppo, che può includere anche utilizzare su cluster di server, scatole QA, scatole dev, ecc Nel moderno negozio dev, basta rilasciare il codice a più caselle di frontend/backend è tecnicamente distribuzione (agli occhi del legge).

Non importa ciò che pensa la Free Software Foundation, è importante quello che pensano alcuni giudici dopo che una persona/una società è stata citata in giudizio per aver fatto esattamente questo.

Questo è solo un altro motivo per cui i principali clienti della GPL in questi giorni sono aziende che desiderano mantenere i concorrenti dal biforcarsi codice. Tutti gli altri dovrebbero prendere in considerazione licenze meno ingombranti come le licenze MIT o Creative Commons Attribution.

+1

Devi fornire il codice sorgente a chi vuoi distribuire con GPL. Ciò non significa necessariamente che devi renderlo pubblicamente disponibile a tutti. Non è un problema se lo stai distribuendo sui tuoi server. –

2

Non è necessario eseguire il collegamento alle librerie MySQL per utilizzare MySQL nella propria applicazione. Tutto quello che devi fare è "parlare" a un server MySQL usando il protocollo MySQL; in tal caso, ci si connette al server MySQL come client, cioè come utente, e quindi non è necessario rilasciare il software sotto la licenza GNU GPL.

La domanda è, come può il tuo programma parlare il protocollo MySQL? Una possibilità è l'utilizzo della libreria client MySQL ufficiale (connettore), che è GPL. Se lo fai, stai collegando staticamente il tuo programma a una libreria GPL, e quindi devi rilasciare il tuo software sotto la GPL.

In alternativa, è possibile eseguire il collegamento a una libreria client di terzi, con una licenza diversa. Ad esempio, è possibile utilizzare lo MariaDB Client Library, che è LGPL'd (ed è quindi compatibile con il software proprietario) e fornisce la stessa API della libreria client MySQL originale. Vedi lo MariaDB licensing FAQ, che si applica anche a MySQL, per maggiori dettagli e consigli.

Può essere complicato distribuire il server MySQL insieme al software: si potrebbe semplicemente richiedere ai propri clienti di scaricare e installare MySQL da soli o sviluppare un semplice downloader da distribuire con il software.

+1

Grazie: MariaDB sta lavorando per me. Stranamente, 'DatabaseMetaData # getColumns (" "," ", tableName," ")' non ha restituito colonne, ma è stato facilmente ricodificato utilizzando una query normale con 'SHOW COLUMNS'. –