Software libero e software open source

Tutto il software recensito in questo blog è ovviamente free (Libero & Open Source).

A questo punto è importante spiegare la differenza tra uno e l'altro.

Un software libero è un software rilasciato con una licenza che permette a chiunque di utilizzarlo e che ne incoraggia lo studio, le modifiche e la redistribuzione; per le sue caratteristiche, si contrappone al software proprietario.

Caratteristiche

La parola libero non implica la possibilità di utilizzare il software libero in maniera indiscriminata: un software libero è comunque soggetto ad una licenza d'uso, a differenza ad esempio del software di pubblico dominio.

Rispetto al software proprietario, la licenza d'uso del software libero permette di:

  • eseguire il programma per qualsiasi scopo;
  • accedere alla struttura interna del programma (codice sorgente), studiarla ed eventualmente modificarla;
  • ridistribuirlo in un numero di copie illimitato.

La licenza d'uso pone in genere i seguenti vincoli, di cui i principali sono:

  • gli autori precedenti del software devono essere menzionati anche nelle versioni modificate, lasciando intatto il loro copyright;
  • non è possibile applicare una licenza d'uso incompatibile con la licenza originaria o che vada contro le norme della licenza stessa. Per esempio chiunque può riemettere un software rilasciato sotto LGPL usando la licenza GPL (tale operazione è anche chiamata upgrade della licenza), mentre non è possibile fare il contrario (naturalmente se non si è il detentore unico del copyright);
  • normalmente, nella licenza, vi è una clausola che sancisce la non usabilità del software se non si rispetta la licenza d'uso o se una o più norme della stessa licenza non sono valide per termini di legge;
  • quando si distribuisce un binario occorre o distribuire insieme anche i sorgenti o garantire per iscritto la possibilità a tutti gli utenti di venirne in possesso dietro richiesta ed al solo costo del supporto

Le "quattro libertà"

Secondo Richard Stallman e la Free Software Foundation da lui fondata, un software per poter essere definito libero deve garantire quattro "libertà fondamentali":

  • Libertà di eseguire il programma per qualsiasi scopo (chiamata "libertà 0")
  • Libertà di studiare il programma e modificarlo ("libertà 1")
  • Libertà di copiare il programma in modo da aiutare il prossimo ("libertà 2")
  • Libertà di migliorare il programma e di distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio ("libertà 3")

Licenze d'uso libere

Per approfondire, vedi la voce Licenza libera.

Buona parte del software libero viene distribuito con la licenza GNU GPL (GNU General Public License), scritta da Richard Stallman e Eben Moglen per garantire legalmente a tutti gli utenti le quattro libertà fondamentali. Dal punto di vista dello sviluppo software, la licenza GPL viene considerata una delle più restrittive, poiché impone che necessariamente ogni prodotto software derivato - ovvero, che modifica o usa codice sotto GPL - venga a sua volta distribuito con la stessa licenza. Anche MediaWiki, il software usato per Wikipedia, è distribuito con licenza GPL.

Una licenza simile, ma meno restrittiva, è la GNU LGPL (GNU Lesser General Public License), che permette di utilizzare il codice anche in software proprietari e sotto altre licenze opensource, purché le parti coperte da LGPL - anche se modificate - vengano comunque distribuite sotto la medesima licenza. In genere è utilizzata per librerie software.

Non tutte le licenze ritenute libere sono compatibili tra di loro, cioè in alcuni casi non è possibile prendere due sorgenti con due licenze libere ed unirli per ottenere un prodotto unico. Questo avviene quando non esista e non sia possibile creare una licenza che possa soddisfare i requisiti delle licenze originali. Ad esempio la licenza BSD originale, pur essendo considerata licenza di software libero, è incompatibile con la GPL (per ulteriori dettagli vedere qui); per ovviare al problema è stato necessario creare una "licenza BSD modificata" compatibile con la GPL.

Un'altra licenza degna di nota è l'Apache License, prodotta dalla Apache Software Foundation, la cui compatibilità con la GPL è attualmente in fase di analisi (per maggiori dettagli [1]). L'Apache License considera un prodotto derivato alla stregua della LGPL, ma è più liberale nella concessione delle proprietà intellettuali.

Le varie licenze libero possono contenere ulteriori limitazioni per alcune situazioni particolari; per esempio la GPL prevede che si possa esplicitamente vietare l'uso del software nelle nazioni dove tale licenza non è valida o dove dei brevetti software impediscono la distribuzione di tale software.

Le licenze d'uso non vietano in genere di vendere software libero e di solito non stabiliscono minimamente il possibile prezzo di vendita.

Differenze rispetto all'open source

Essendo uno dei requisiti fondamentali la disponibilità del codice sorgente, comunemente si ritiene che il software open source sia sinonimo di software libero, ma in realtà questa affermazione non è vera.

Il software open source è un software che rispetta alcune convenzioni di distribuzione (per esempio il codice sorgente potrebbe essere disponibile, ma potrebbe esserne vietata la redistribuzione o la modifica e quindi un software distribuito sotto tale licenza non può essere software libero) e una licenza è "ufficialmente" open source a discrezione dell'Open Source Initiative (OSI): se una licenza segue le linee guida dell'OSI, allora tale licenza può essere dichiarata licenza open source, ma le direttive potrebbero cambiare nel tempo (nessuno garantisce che questo non possa accadere) e quindi è possibile che una licenza attualmente open source non lo sia nel futuro o viceversa; recentemente l'OSI ha posto un freno al proliferare delle licenze dichiarando che cercherà di limitare il numero di licenze che nel futuro saranno ritenute licenze open source, questo potrebbe, in linea teorica, far si che una licenza ritenuta libera non venga ritenuta open source.

Una licenza invece è libera (o meglio, una versione di una licenza è libera) se e solo se rispetta le quattro libertà fondamentali. Pertanto se una versione di una licenza è libera, allora lo sarà per sempre. Naturalmente è sempre complesso, almeno per un cittadino "normale" (non esperto di leggi), stabilire se una licenza è libera o meno perché entrano in gioco i termini legali utilizzati nella stessa. Il progetto GNU si occupa tra l'altro anche di indicare se una licenza è libera o meno e se è compatibile con le licenze GNU o meno (per maggiori dettagli: Elenco licenze).

Inoltre il software libero non deve essere confuso con il software freeware, che è distribuibile gratuitamente ma che non è né software libero né open source, e con il software di pubblico dominio, che non è soggetto a nessuna licenza d'uso e quindi può essere riemesso da chiunque sotto qualsiasi altra licenza.

Storia

L'idea di software libero nasce agli inizi degli anni '80, quando lo sviluppo del software cominciò a passare di mano dalle università alle aziende (software proprietario), ponendo un pesante freno alla collaborazione che caratterizzava il lavoro di gran parte dei programmatori e dei sistemisti dell'epoca, soprattutto con i patti di non divulgazione che le aziende facevano firmare ai programmatori che assumevano.

In realtà il software "commerciale" esisteva da sempre, ma i costi elevati dell'hardware facevano sì che il business delle aziende non fosse concentrato sul software, che era considerato una parte naturale del prodotto, ed i cui sorgenti erano in genere pubblici. Con il passare del tempo il software diventò sempre più complesso e difficile da realizzare e le aziende iniziarono a non distribuire i sorgenti e obbligare i propri dipendenti a non rivelare nulla per non avvantaggiare la concorrenza; inoltre con il crollo dei costi dell'hardware, lo sviluppo commerciale del software divenne un business notevole, ed il codice sorgente era divenuto un investimento prezioso che poteva da un lato far acquisire una fetta di tale mercato in rapida crescita e dall'altro legare i propri utenti al proprio software mantenendo il segreto sui metodi utilizzati per lo sviluppo di sistemi e applicazioni.

In questo modo le aziende cominciavano ad utilizzare la legge sul diritto d'autore per impedire ai concorrenti di leggere e modificare i loro prodotti, assicurandosi il controllo dei propri clienti che, senza più poter vedere e modificare il codice sorgente del software, non potevano più adattarlo alle loro esigenze ma dovevano chiedere alle aziende di farlo per loro.

Nel 1983 Stallman fondò il Progetto GNU con l'intenzione di creare un sistema operativo completamente libero. Grazie alla collaborazione di molti sviluppatori volontari, all'uso di Internet per la coordinazione del progetto e al kernel Linux di Linus Torvalds, nel 1991 nacque GNU/Linux, un clone di UNIX liberamente distribuibile e modificabile.

In Italia si riscontra una sempre maggiore attenzione per il software libero, vi sono associazioni che giornalmente dedicano molte attenzioni ed energie nella tutela e nel rispetto delle norme che regolano (o dovrebbero regolare) l'utilizzo dei software liberi nelle varie strutture pubbliche, come anche la Pubblica Amministrazione. Una delle più importanti sentenze registrate negli ultimi giorni riguarda l'Associazione per il Software Libero (Assoli (Software Libero)): con una sentenza a lungo attesa il Tribunale Amministrativo Regionale del Lazio riconosce ad Assoli il diritto di perseguire i suoi scopi statutari agendo anche in giudizio ove fosse necessario (il testo integrale della Sentenza 428/07 può essere visionato qui).

Aspetti filosofici e sociali

Nel software libero il significato della parola libero ha un'accezione particolare. Si è già sottolineato che la libertà del software libero non è incondizionata, perché è soggetta ai precisi vincoli della licenza d'uso, come qualsiasi altra licenza d'uso, solo che in questo caso l'autore si "espropria" di alcuni diritti per cederli agli utenti. Questi vincoli sono studiati in maniera tale da favorire il tipo di libertà cosiddetta copyleft, ovvero che ha come obiettivo la condivisione del sapere. Pertanto il software libero parte da considerazione sociali e per molti aspetti è una forma di filosofia.

Le implicazioni sociali del software libero sono notevoli. La condivisione del sapere non permette a un gruppo ristretto di persone di sfruttare la conoscenza (in questo caso tecnologica) per acquisire una posizione di potere. Inoltre, è promossa la cooperazione delle persone, che tendono naturalmente ad organizzarsi in comunità, cioè in gruppi animati da un interesse comune.

Il modello del software libero si è naturalmente esteso ad altri campi del sapere. Chi crede nel modello copyleft pensa che questo possa essere applicato ad esempio alla musica o alla divulgazione. L'esempio più riuscito di applicazione di questo modello ad un campo differente dal software è oggi Wikipedia, che promuove la condivisione del sapere e la formazione di una comunità.

Differenti correnti di pensiero

Tra i sostenitori del software libero, e più in generale del copyleft, vi sono diverse correnti di pensiero, che spaziano da una visione radicale ad una più moderata.

La visione più radicale tende ad un modello che si spinge molto oltre a quello del software libero, arrivando in alcuni casi ad auspicare una completa abolizione del software proprietario, considerato una limitazione inaccettabile della libertà e dei diritti dell'uomo. Questa ideologia è stata, erroneamente o almeno impropriamente, paragonata a correnti politiche quali il comunismo, sebbene solitamente i sostenitori del software libero non entrino in questioni politiche.

Chi è su posizioni più moderate considera il software libero un ideale a cui tendere, non negando la possibilità di esistere al software proprietario e più in generale allo sfruttamento commerciale del diritto d'autore, sfruttamento che può essere fatto anche usando software libero, come dimostrano vari casi di successo (es: MySQL).

La licenza LGPL è stata concepita per permettere una certa integrazione tra software libero e software non libero. C'è chi ritiene inopportuno un suo utilizzo perché permette l'integrazione, sotto determinate condizioni, di software libero da parte di software non libero (su questo argomento è possibile leggere questo articolo (EN) ); tuttavia ogni autore di software può decidere liberamente che licenza scegliere e quindi sotto quali condizioni permettere l'uso del proprio lavoro.

Vantaggi del software libero

A prescindere dalle implicazioni sociali, secondo i suoi sostenitori il software libero presenta numerosi vantaggi rispetto al software proprietario:

  • essendo possibile modificare liberamente il software, è possibile personalizzarlo ed adattarlo alla proprie esigenze
  • il codice sorgente è sottoposto ad una revisione da parte di moltissime persone, pertanto è più difficile che contenga bachi e malfunzionamenti. In ogni caso, è sempre possibile per chiunque tenere un indice pubblico dei problemi, in modo che gli utenti li conoscano
  • se viene scoperto un baco o una falla di sicurezza, la sua correzione di solito è molto rapida[2]
  • essendo il sorgente liberamente consultabile, è molto difficile inserire intenzionalmente nel software backdoor, cavalli di Troia o spyware senza che questi vengano prontamente scoperti ed eliminati, come invece è accaduto per alcuni software commerciali (ad esempio il caso del database Firebird della Borland che conteneva una backdoor scoperta quando di tale software sono stati rilasciati i sorgenti)
  • non esistendo standard proprietari, le cui specifiche sono normalmente segrete, è molto più facile costruire software interoperabile
  • permettere a chiunque di modificare i sorgenti garantisce che ogni nuova funzionalità o copertura di un baco possa essere proposta da chiunque e immediatamente applicata dagli sviluppatori. Questo permette di avere rapidamente a disposizione un software che rispetta le esigenze di chi ha richiesto le modifiche in caso di necessità[3]
  • la complessità e le dimensioni di alcuni software liberi (ad esempio, dei sistemi operativi) è tale che è necessario il supporto commerciale di un'azienda ; il software libero si presta a creare nuove opportunità di business nel campo della formazione e del supporto, oltre che della eventuale personalizzazione del software.
  • collaborando con sviluppatori volontari e utilizzando il lavoro della comunità, anche le piccole e medie imprese sono in grado di sviluppare e vendere prodotti di alta qualità, senza dover ampliare il loro organico.

Critiche al software libero

Secondo alcuni il software libero avrebbe delle limitazioni e degli svantaggi rispetto al software proprietario:

  • essendo un lavoro volontario, lo sviluppo del software libero sarebbe più lento rispetto al software proprietario; Tesi espressa da Bill Gates nella sua lettera aperta ai programmatori dilettanti [4] . Bill Gates ha inoltre particolarmente criticato la GPL in quanto licenza virale e non economicamente sostenibile [5]
  • alcune tipologie di software, soprattutto di nicchia, non sarebbero disponibili come software libero; infatti i software di nicchia non avrebbero abbastanza utenti per la creazione di una comunità che supporti lo sviluppo del software .
  • lo sviluppo del software libero avrebbe una struttura anarchica, che porta a risultati incoerenti e ad una mancanza di uniformità e consistenza [6];
  • nonostante il codice sorgente sia liberamente disponibile, non tutti sono in grado di apportarvi modifiche, inoltre l'usabilità spesso non è ottimale per un utente inesperto;[7]
  • anche se spesso è disponibile molta documentazione, è sovente incompleta o non aggiornata.

Alcune di queste critiche sono talvolta frutto di un'errata comprensione del software libero. Molte persone tendono infatti a considerare il software libero come prodotto esclusivamente da volontari, mentre sono molti i casi in cui è semplicemente un modello di sviluppo adottato a livello aziendale.

Applicazioni commerciali del software libero

Un software libero non deve necessariamente essere sviluppato a titolo gratuito o a fondo perduto. Purché si rispettino i vincoli della licenza d'uso, è possibile vendere un software libero; all'interno dei documenti del progetto GNU, Stallman incoraggia la vendita di software libero.

Vi sono inoltre alcune aziende che adottano il modello di sviluppo del software libero per i propri prodotti commerciali. Il ritorno economico in questo caso può derivare dalla fornitura di assistenza e di know-how.

Un caso diverso è quello di alcuni software che vengono rilasciati con un sistema di "licenze multiple". In pratica lo stesso software viene licenziato sia come proprietario, sia come software libero. La versione libera talvolta dispone di meno funzionalità, o è limitata ad un numero ristretto di piattaforme. Esempi celebri di software a doppia licenza sono il database MySQL, di cui esiste una versione "Pro Certified Server" a pagamento e una versione "Community Edition" rilasciata con licenza GPL, e la libreria Qt (vedi questa pagina).

Vi sono poi aziende che sono strutturate integralmente per la vendita e l'assistenza di un determinato software libero: esempi classici sono alcune distribuzioni di Linux, come Red Hat o SUSE. Queste aziende utilizzano come base il software sviluppato dalla comunità, aggiungendo una serie di tool di configurazione o sviluppo, curando gli aspetti più tecnici e dando agli utenti finali un'assistenza mirata.

Sfruttando le caratteristiche della licenza BSD, alcune aziende preferiscono invece partire da un software libero per sviluppare un prodotto non libero. Per esempio il sistema operativo proprietario Microsoft Windows implementava, fino alla versione NT 4.0, lo stack di rete utilizzando codice sotto licenza BSD

Voci correlate

Altri progetti

Commenti

Post popolari in questo blog

Rilasciano BlenderBot v3, un chatbot che utilizza il loro modello OPT e aprono la demo per testarlo

Componenti aggiuntivi di Google Workspace

Come rimuovere il virus che trasforma le cartelle in collegamenti nella tua pendrive.