Una delle domande che mi vengono fatte piu' di frequente è "MySQL si paga per uso commerciale?". La risposta non è delle piu' semplici.
Leggendo direttamente il sito web di MySQL, si possono trovare due pagine dedicate alle licenze: una per chi fa sviluppo di software opensource ed una per chi sviluppa software commerciale.
Dopo una lettura superficiale delle due pagine, potremmo essere tratti in inganno e pensare che sviluppando un'applicazione commerciale, si debba per forza acquistare una licenza commerciale di MySQL. Questo non è vero.
Tutto dipende dal tipo di librerie di interfacciamento che vogliamo utilizzare. MySQL mette a disposizione due modi per interfacciarsi al database: una propria API scritta in linguaggio C ed un socket in ascolto che riceve comandi tramite una normale connessione TCP/IP.
E' chiaro che scrivendo un'applicazione che va a fare l'include di (faccio un esempio) mysql.h poi io debba rilasciarne i sorgenti. La licenza GPL con il quale è stato rilasciato MySQL (ed anche le sue librerie client) dice chiaramente che quando si "linka" codice GPL ad altro codice, il risultato deve essere per forza rilasciato sotto licenza GPL.
La licenza GPL però non impone vincoli di utilizzo dell'applicazione stessa. Utilizzare quindi una libreria client che al posto delle API, usa il socket TCP/IP, ci permette di utilizzare MySQL anche da un'applicazione closed-source, senza bisogno di ottenere una licenza commerciale.
E' esattamente quello che fa la libreria di interfacciamento di Python oppure di PHP. Esse utilizzando il metodo di connessione al socket, senza fare l'include del codice di MySQL.
Riassumendo: se ci troviamo a scrivere un'applicazione commerciale che sappiamo non verrà distribuita insieme al codice sorgente, dobbiamo preoccuparci solo di utilizzare una libreria client che utilizzi il metodo di connessione tramite socket al database.
C'è infine da aggiungere una cosa: se si utilizza codice opensource per uso personale oppure interno alla propria azienda, senza distribuirlo in giro, la GPL non ci impone di rilasciare le modifiche che abbiamo fatto ai sorgenti GPL che stiamo utilizzando.
Il caso piu' lampante è quello di Google: essi utilizzano tonnellate di codice GPL, però non distribuiscono un programma, offrono un servizio. Questo gli permette di non dover rendere pubbliche le modifiche fatte al codice originale.
Credits: questo articolo è stato possibile in gran parte grazie all'aiuto ed ai consigli di Giovanni Bajo (che pur chiedendomi di specificare che non è un avvocato e che quindi potrebbe anche sbagliarsi, ha senz'altro fatto un ottimo lavoro) .












April 11th, 2008 at 2:40 pm
Uhm…scusa una domanda.
Quindi se io uso Java per creare la mia applicazione commerciale e uso la connessione jdbc per connettermi al database, la licenza la devo avere o no, calcolando che poi il database mysql lo devo installare sulla macchina su cui sarà installato anche la mia applicazione commerciale?
saluti
April 11th, 2008 at 3:07 pm
Supponendo che la JDBC utilizzi il metodo di connessione tramite socket (essendo scritta in Java non penso che linki codice C), non hai bisogno di alcuna licenza MySQL commerciale.
September 9th, 2008 at 9:35 am
Sto scrivendo un web software in php che si collega a MySql ma che in effetti non usa il server completo Mysql ma solo un derivato dal Pacchetto EasyPHP
Come stringa di connessione uso mysqlconntect, quindi se non ho capito male, devo avere la licenza (io o tutti i clienti ?)
September 9th, 2008 at 10:30 am
Paolo: come già detto, PHP non ha alcun tipo di problema. EasyPHP (se non sbaglio) è solo una raccolta di pacchetti per PHP che ne semplificano l’installazione. Quindi lei non ha bisogno di alcuna licenza.
September 9th, 2008 at 11:26 am
Il mio dubbio nasce dalla uso della libreria di php, che si connette a mysql. Non vorrei rilasciare software protetto, che poi per violazione dei termini della gpl diventi gpl per “induzione”
March 17th, 2009 at 9:55 pm
Riprendo questo vecchio post.. chissà se potete aiutarmi.
Ho una web application sviluppata in .net, a scopo commerciale. Che connessione si può usare per poter usare gratuitamente mysql?
l’oggeto mysqlconnection? oledb? odbc?
Dato che per mysqlconnection è necessario referenziare la corrispettiva dll lo escluderei a priori… e le altre due?
Saluti.
March 23rd, 2009 at 4:59 pm
ciao, sto sviluppando un sito da distribuire su cd utilizzando un AMP, pampa, che include anche mysql, in questo caso avrei bisogno della licenza?
March 27th, 2010 at 9:15 am
Se sviluppo in delphi e uso le librerie client ZEOSLIB (free per uso commerciale) che utilizzano la dll libmySQL.dll per connettermi tramite socket o se uso la MyOdbc sempre per lo stesso motivo devo acquistare una versione commerciale di mysql (uso la 4.1) ?
May 17th, 2010 at 4:35 pm
salve a tutti, ci sono alcuni punti a me oscuri per quanto riguarda l’acquisto o meno della licenza per uso commerciale di mysql.
allora vorrei sapere se io che dovrò gestire all’interno di un’azienda un database in mysql, dove i dati raccolti in questo database verrano utilizzati, per visualizzare andamenti di prezzi, ect…, dovrò acquistare o meno la licenza di mysql enterprise server e, se si, vorrei capire se l’acquisto delle licenze viene fatto secondo un numero base (tipo, minimo acquisto di 4 licenze) oppure in altra maniera.
spero di essere stato chiaro
grazie