Dubbi su MySQL e licenza GPL.

Massimo Masson massimo@mail.studiomasson.it
Mar 20 Apr 2004 19:43:20 CEST


Marco Bisetto ha scritto:

[...]

>>Ma il fatto di utilizzare programmaticamente (si dice?) un dbms non 
>>implica l'utilizzo del suo query-language e delle sue specifiche 
>>interfacce e quindi, almeno indirettamente, delle sue librerie 
>>d'interfaccia?
> 
> Pero` il query language di MySQL e` SQL, un linguaggio standardizzato. 

Certo che si! Intendevo dire che se si vuole usare "da programma" il 
query language ci si deve "interfacciare" ad una libreria del podotto, 
ed a quel punto credo si stia entrando nella zona copyleft-protetta 
della GPL (ma prima di commentare quest'affermazione vedi il discorso 
che faccio qualche riga più sotto)... ammetto comunque di aver espresso 
in maniera eccessivamente confusa quel che avevo in mente. Rispetto alla 
mia frase, l'attenzione sarebbe da focalizzare sul discorso della 
libreria d'interfaccia!

[...]

> L'interpretazione secondo la quale l'unico modo per utilizzare MySQL
> licenziato GPL con un software proprietario, sia di scriversi in casa
> il software proprietario stesso mi pare troppo restrittiva. Questo

Però uno dei vincoli della GPL è proprio che i lavori derivati debbano 
essere rilasciati in un certo modo (copyleft). Ora piuttosto la 
questione è definire "lavoro derivato" con correttezza.

Io avevo in mente una cosa del tipo: scrivo un programmino, che fa le 
sue cose (e vede gente... ;) ). Come "archivio" decido di appoggiarmi a 
MySQL, e quindi da programma mi interfaccio verso le sue funzioni. Ad 
esempio, uno scheletro di codice come il seguente (esempio con Python 
perchè mi viene più facile):

<py>
import MySQLdb	# questa cosa rende il mio sw un lavoro derivato?

Con = MySQLdb.Connect(host="hostaddress", port=3306, user="username", 
passwd="password", db="dbname")
Cursor = Con.cursor()
Cursor.execute("codice-SQL")
Results = Cursor.fetchall()
print Results
Con.close()
</py>

per me è un lavoro derivato in quanto, nel momento in cui utilizzo 
"import MySQLdb", mi sono appoggiato alle librerie (che si appoggiano 
alle librerie per interfacciarsi a) MySQL. Il mio programma "funziona" 
con MySQL, e cado nella GPL, ovviamente se e quando "ridistribuisco".
Nulla questio sul fatto che l'ipotetica riga in cui è contenuto 
.execute("codice-SQL") nulla ha a che vedere con licenze, 
ridistribuzioni e quant'altro...

> perche' MySQL e` pur sempre un server che comunica tramite protocolli
> standardizzati: TCP/IP e SQL. Sarebbe come se l'utilizzo di Apache
> fosse condizionato dal modello di licenza dei contenuti (gli script
> php o python, per esempio) del server web di cui e` motore.

Bella osservazione. Io credo che si debba dire questo: un conto è il 
protocollo, un conto il software che lo "usa".
Intendo questo: nell'esempio, Apache risponde a chiunque richieda info 
con un protocollo ben formato. E su questo problemi di licenza non penso 
ce ne siano.
Il problema si potrebbe porre nel momento in cui io scrivessi un mio 
software, che interroga un web server (servito da Apache, o da qualsiasi 
altra cosa, ovviamente...).
Tale sw potrebbe appoggiarsi a delle librerie per eseguire 
l'interrogazione (lasciamo ora perdere il livello, non mi interessa 
http, piuttosto che TCP o IP). Per determinare le questioni inerenti le 
licenze, si dovrebbe capire come sono licenziate le librerie stesse. Se 
fossero GPL, di conseguenza il sw sarebbe obbligato ad essere GPL. In 
effetti, proprio per questo nasce la "LGPL", specificatamente utilizzata 
per le librerie, in quanto non vincola il rilascio di eventuale codice.
Se per ipotesi io mi scrivessi la mia libreria TCP/IP da zero, porei 
licenziarla ed utilizzarla come voglio. Se invece utilizzassi una 
libreria già pronta, dovrei sottostare alle specifiche della sua 
particolare licenza, qualunque esse fossero! (gpl o commerciali).
A maggior ragione, in quest'ottica riprendo la tua citazione delle faq 
di mysql stessa:

[...]

> http://www.mysql.com/products/licensing/faq.html

che mi pare confermino le osservazioni su esposte, nel senso che lo 
stesso MySQL, una volta licenziato con lgpl, legittimava chiunque a 
farne uso nei propri lavori senza il vincolo della gpl.

> Il punto fondamentale dell'interpretazione secondo me e` quel "tightly
> coupled". Ovvero: se sei un produttore di software, e scrivi del
> codice proprietario che funziona _esclusivamente_ se accoppiato a
> MySQL, utilizzandone le librerie, allora significa che stai producendo
> un derivato di mysql e devi pagare la licenza. Se invece il tuo codice

Sono sostanzialmente d'accordo con questa affermazione.

> funziona altrettanto bene con altri motori SQL, allora il tuo cliente
> non e` legato a mysql dalla tua applicazione (ovvero non e`
> _obbligato_ a procurarselo, non ricadi nella clausola "copy, modify or
> distribute MySQL" citata all'inizio) e quindi puo` usarlo rimanendo
> nei termini della GPL; purche' tu non distribuisca MySQL assieme alla

d'accordo se per interfacciarmi a mysql non ho bisogno di nulla che non 
sia gpl. Ma, mi domando, per interfacciarsi via software a mysql credo 
che, bene o male, tutti i moduli d'interfaccia sfruttino le api di 
mysql. Per "uscirne" bisognerebbe scriversi un modulo d'interfaccia 
apposito, che non utilizzi _una_ riga di codice gpl-ed, e il "problema" 
penso sarebbe superato. D'altronde il codice e le specifiche di mysql 
sono "pubbliche", quindi tecnicamente la "missione" dovrebbe essere 
fattibile.
Queste considerazioni peraltro fanno meglio capire per quale motivo 
certi sistemi (leggi *BSD) siano in una fase di riscrittura di una serie 
di utilities gpl-ed con diversa e meno restrittiva licenza (leggi di 
nuovo bsd).

Qui forse sono carenti le mie conoscenze, ma i moduli d'interfaccia che 
ho visto per mysql sono tutti gpl. Nel caso tuttavia fosse possibile 
utilizzarlo esclusivamente via tcp/ip senza altro codice, ovviamente, le 
considerazioni che ho fin qui esposto non si applicherebbero.

> Comunque sia, personalmente mi pare che alcune restrizioni vadano
> oltre la GPL e siano pericolose. Allora per lo stesso motivo Microsoft
> avrebbe ragione di chiedere una licenza per l'uso di Linux, o Samba,
> considerato che in essi ci sono parti di codice capaci di leggere e
> scrivere i filesystem FAT e NTFS o di integrarsi, tramite il
> protocollo SMB, con altri computer basati su sistemi operativi
> Microsoft. Con un'interpretazione cosi` vasta di "lavoro derivato",

Non credo sia così, se questo si capiva dal mio intervento precedente 
dev'essere solo perchè probabilmente mi sono espresso male nella frase 
"incriminata" di cui sopra (vedi il discorso di cui sopra sulla 
distinzione tra codice/libreria e protocollo/linguaggio).

> molti programmi liberi potrebbero essere considerati derivati di altri
> prodotti commerciali (fatto che alcune ditte detentrici di brevetti
> vogliono forzare all'estremo). Ma il principio che un prodotto A sia
> derivato dal prodotto B solo perche' A si interfaccia con B, pur non
> contenendone una sola riga di codice, mi pare sia decisamente nefasto.

Condivido anche questa tua affermazione, non credo di aver detto ciò, e 
spero di aver meglio chiarito la mia interpretazione con questo post...

...ciò nonostante resta una mia interpretazione, ed ovviamente in quanto 
tale non è detto che sia nè vera, nè quella corretta!

Ad ogni modo, esulando dal tema originario, uno dei problemi legati al 
tema dei brevetti software è proprio che io non potrei più disengare, ad 
esempio, una progress-bar perchè qualcun'altro ne ha i diritti ed io 
dovrei chiedergli il permesso... (cosa su cui ovviamente non sono 
d'accordo...)

Ciao,
Max.

p.s. da questa discussione è nato un thread molto interessante, imho...



Maggiori informazioni sulla lista blug