venerdì 22 gennaio 2010

PostgreSQL, MySQL, Oracle, Sun e qualche opinione in libertà

In questi giorni si fa un gran parlare del via libera della Commissione Europea a Oracle, che si appresta a fagocitare Sun, la quale a sua volta aveva già inghiottito MySQL AB. Questo per me, membro di ITPug, porta nuovamente a fare qualche considerazione sulle differenze tecniche fra PostgreSQL e MySQL. E non voglio parlare di differenze tecniche o tecnologiche, ma di differenze ideologiche.
MySQL è un prodotto figlio di una azienda, MySQL AB, che lo distribuisce in varie versioni, alcune libere e alcune commerciali.
PostgreSQL è figlio di una comunità.
Attorno a MySQL, prodotto di una azienda (e quindi commerciale, che lo si voglia o no) è nata una comunità.
Attorno alla comunità PostgreSQL sono nate delle aziende che hanno fatto del prodotto il loro business.
Insomma, due modelli di business nettamente differenti: il primo, quello di MySQL, nato dall'alto di una azienda e donato ad una comunità che potesse gestirlo (in parte); il secondo, quello di PostgreSQL, nato dal basso di una comunità e usato da aziende a scopi commerciali. Ma se alla fine si giunge sempre a prodotti commerciali, che differenze c'è? Il controllo è la differenza! In PostgreSQL le aziende "sfruttano" (in senso buono) il lavoro della comunità, lo possono estendere, lo possono rendere proprietario, ma non possono forzare tutta la comunità a seguire le loro necessità; in MySQL, la comunità è costretta a seguire le necessità di un'azienda. Certo, la comunità ha sempre un'arma molto potente, che è il "forking" (creazione di un nuovo ramo di sviluppo), ma creare un fork di un progetto non è cosa semplice: occorre trovare gli sviluppatori, sincronizzarli, definire i nuovi obbiettivi, e, per dirla in breve, ricominciare tutta una serie di attività che si erano consolidate nel progetto precedente. Quindi mentre la comunità PostgreSQL continuerà a sviluppare il sistema avendo in mente il "bene" dell'intero progetto (e dei suoi utenti), un prodotto ormai commerciale come MySQL verrà sviluppato prevalentemente con lo scopo di conquistare posizioni di mercato.

Ma le differenze non si fermano solo ai modelli di business, ma alla cultura dietro ai due database. Mentre PostgreSQL nasce come sistema per DBA, e quindi richiede conoscenze tecniche approfondite per la sua corretta gestione, MySQL nasce come supporto per gli sviluppatori (non DBA) che devono testare le loro applicazioni in ambito database senza dover perdere tempo in tuning, configurazione, schemi e indici. Senza nulla togliere a MySQL, che si è evoluto fino a diventare un ottimo database, va sottolineato che esso rimane comunque un database con scopi piu' limitati rispetto a PostgreSQL. Ed ecco che con Oracle che controlla anche la fascia di mercato di MySQL gli sviluppatori saranno naturalmente portati a scrivere applicazioni Oracle-compatibili,e da lì il salto verso tale piattaforma sarà solo questione di tempo.

E infine mi appare ridicolo il messaggio di Monty per salvare MySQL dall'acquisizione di Oracle. A cosa pensava Monty quando ha ceduto MySQL a Sun? Forse ai $$ incassati piu' che alla sopravvivenza di MySQL! E se adesso Monty vuole che MySQL rimanda Open Source perché non si è affidato ad una singola licenza copyleft invece dello schema a due licenze? E perché adesso ci si preoccupa dei rapporti con la comunità, lo sviluppo OpenSource e il fatto che il codice resti disponibile in licenza OpenSource (ma InnoDB non è di Oracle?) ma gli stessi problemi non sono emersi con l'acquisizione di Sun? La mia maliziosa e personale interpretazione è che Sun poteva essere un trampolino di lancio per MySQL, essendo interessata ad usare tale database come suo principale livello in uno stack AMP, Ora Oracle invece, che ha già a disposizione un valido prodotto database, potrebbe voler polverizzare MySQL in favore del suo prodotto. E questo preoccupa il creatore di MySQL, che ha ben capito che un fork è al momento una soluzione di ripiego.

Infine una nota complementare, ma per me abbastanza importante: MySQL viene rilasciato anche con licenza GPLv2, mentre PostgreSQL con licenza BSD. Indipendentemente dal giudizio personale su una o l'altra licenza, la FSF spinge assolutamente in direzione di licenze CopyLeft (quindi GPL) e di conseguenza la FSF ritiene che per raggiungere il proprio scopo MySQL abbia licenza migliore di quella di PostgreSQL. Questo si riflette in un fattore pubblicitario a favore di MySQL. Perché è importante questo? Perché i sostenitori di MySQL hanno smosso anche la FSF (e Stallman in persona) per cercare di evitare che Oracle assorba Sun e quindi possa avere diritto di vita e di morte su MySQL.

Nessun commento: