






Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Cosa significhia software libero e open source, le licenze che regolano la loro distribuzione e commercializzazione, e i principi che li distinguono dal software proprietario. Verranno anche discusse le differenze tra software libero e open source, il ruolo di figure chiave come richard stallman e l'at&t, e i vantaggi etici e pratici di utilizzare software libero.
Tipologia: Appunti
1 / 12
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!







Le licenze, la diffusione, la distribuzione e la commercializzazione del software e i principi che le regolano In informatica, open source non significa gratis ma è un termine inglese che open source significa codice sorgente aperto. Indica un software i cui autori (più precisamente i detentori dei diritti) ne permettono, anzi ne favoriscono il libero studio e l’appor- to di modifiche da parte di altri programmatori indipendenti. Questo è realizzato mediante l’applicazione di apposite licenze d’uso. L’open source ha tratto gran- de beneficio da Internet, perché esso permette a programmatori geograficamente distanti di coordinarsi e lavorare allo stesso progetto. I software open source attualmente più diffusi sono Firefox, VLC, Gimp, 7- Zip, oltre ad un gran numero di progetti rivolti non all’utente finale ma ad altri programmatori. Sono inoltre degne di nota le famiglie di sistemi operativi BSD, GNU, Android e il kernel Linux i cui autori e fautori hanno contribuito in modo fondamentale alla nascita del movimento. La comunità open source è molto attiva, comprende decine di migliaia di progetti, numero tendenzialmente in crescita. Alla filosofia del movimento open source si ispira il movimento open content open content (contenuti aperti): in questo caso ad essere liberamente disponibile non è il codice sorgente di un software ma contenuti editoriali quali testi, immagini, video e musica. Wikipedia è un chiaro esempio dei frutti di questo movimento. Attualmente l’open source tende ad assumere rilievo filosofico, consistendo di una nuova concezione della vita, aperta e refrattaria ad ogni oscurantismo, che l’open source si propone di superare mediante la condivisione della conoscenza.
Il software è legalmente equiparato alle opere d’ingegno, che ricadono sotto la normativa del diritto d’autore, di proprietà dell’autore o, a seconda dei casi, del suo datore di lavoro; per questo motivo quando si acquista un programma non se ne ottiene la proprietà ma solo la possibilità di utilizzarlo secondo quanto previsto dalla legge relativa e dalla licenza: un contratto tra il titolare dei diritti sul software e l’utente che stabilisce diritti e doveri di entrambe le parti.
Dal punto di vista della licenza e delle libertà che essa garantisce il software si divide in numerose categorie; in questa sezione si descrivono le più importanti. Il Software Libero è quel software la cui licenza soddisfa le condizioni di libertà Software richieste dalla Free Software Foundation, ovvero:^ Libero 71
È importante notare come il metodo di distribuzione sia in generale indipendente dalle libertà offerte dalla licenza; in particolare queste sono le modalità più diffuse.
Il Software Libero e l’Open Source Il Software Si dice Software Libero quel software la cui licenza soddisfa i requisiti di libertà Libero (^) stabiliti nella Free Software Definition della Free Software Foundation, mentre si dice Software Open Source quello la cui licenza soddisfa i criteri stabiliti nell’Open Source definition della Open Source Initiative; tra le due definizioni ci sono delle differenze, ma non sostanziali, per cui in pratica la maggior parte delle licenze che soddisfano i requisiti dell’una soddisfano anche quelli dell’altra, tuttavia ciò che distingue nettamente le due definizioni sono il motivo per cui sono state scritte e gli scopi che si prefiggono. La definizione della FSF è in un contesto nel quale si vuole porre l’attenzione sulla libertà più che sugli aspetti pratici (ad esempio la definizione non richiede esplicitamente la disponibilità del codice sorgente, se non come prerequisito per alcune libertà); l’OSD è nata invece in una fase di coinvolgimento delle realtà aziendali nel mondo del software libero e contiene tutti quei dettagli necessari ad evitare scappatoie legali da parte di aziende in cattiva fede. I sostenitori della dizione “Software Libero” affermano che il termine “Open Source” sia da evitare, in quanto pone troppa importanza alla questione pratica della disponibilità dei sorgenti e trascura la questione, fondamentale ma scomoda, della libertà; per contro i sostenitori del termine “Open Source” ribattono che il termine “Free Software” è troppo ambiguo, a causa del doppio significato della parola free, (in inglese sia “libero” che “gratuito”) sicuramente non gradito a coloro che sviluppano software per vivere. In questa dispensa i due termini verranno usati più o meno indistintamente, con la prevalenza di “Open Source” quando si trattano argomenti “pratici” e di “Software Libero” altrimenti. le origini Il software libero ha le sue origini nel mondo universitario americano degli anni 60/70, nel quale erano disponibili computer per i quali le università stesse provvedevano a scrivere il sistema operativo ed i programmi necessari, rendendoli utilizzabili e modificabili da chiunque in forme abbastanza vicine a quelle del pubblico dominio. In questo ambiente è nata una comunità di utenti/sviluppatori2.1 che si fornivano aiuto a vicenda, scambiandosi anche le parti di codice scritte per le proprie esigenze. All’inizio degli anni 80, tuttavia, molte università cominciarono ad utilizzare si- stemi operativi proprietari, distribuiti sotto forma di codice sorgente, ma rilasciati sotto licenze comprendenti clausole di non disclosure, ovvero di non divulgazione del codice, per cui i programmi adattati potevano essere distribuiti solo ad altri licenziatari dello stesso sistema, cosa che limitava abbastanza le possibilità di col- laborazione tra le università. In questo contesto si sono situati i due “avvenimenti” chiave per la nascita effettiva del software libero come è conosciuto oggi: la cessio- ne del System V da parte dell’AT&T all’università di Berkley e le scelte di Richard Stallman. nascita di L’AT&T, allora monopolista del mercato telefonico, aveva sviluppato lo unix BSD (^) System V da utilizzare all’interno delle proprie centraline, tuttavia a causa della legge americana sui monopoli non poteva commercializzarlo; per motivi tuttora sconosciuti decise di regalarlo all’università di Berkley (California), dando così inizio
alla Berkley Software Distribution (BSD) che produrrà grandi quantità di software, tra cui numerosi programmi famosi nell’ambito delle reti. L’altro “evento” decisivo per la nascita del software libero è stato Richard Richard Stallman, o meglio la sua decisione di scrivere il programma EMACS e renderlo^ Stallman liberamente distribuibile e soprattutto quella di dare vita, nel 1984 al progetto GNU per la creazione di un sistema operativo interamente libero. Una volta definito, il software libero ha cominciato a diffondersi, dapprima nelle sviluppo università e tra gli appassionati, in seguito anche nel mondo aziedale. Nel 1991 uno studente finlandese, Linus Torvalds, decise di scrivere un sistema Linux operativo libero simile a Minix2.2: cominciò a scriverne il kernel e rilasciarlo sotto GPL, sfruttando i numerosi programmi del progetto GNU per ottenere un sistema operativo completo. Questo kernel ha raggiunto un sufficiente grado di stabilità ben prima del ker- nel originario del sistema GNU, HURD, tuttora in fase di sviluppo, completando finalmente il sistema. Sebbene con l’arrivo di linux fosse possibile avere un sistema libero completo, le distribuzioni (GNU- )Linux questo era composto da vari “pezzi” sviluppati e distribuiti in modo autonomo da fonti diverse, la cui installazione, sebbene possibile2.3 era laboriosa e sicuramente non praticabile da persone non esperte. Per ovviare a questi problemi e grazie alla libertà del sistema, sono nate le “distribuzioni” linux, ovvero delle raccolte dei programmi componenti il sistema, generalmente già in forma compilata, parzialmente configurati in modo da integrarsi meglio tra di loro e corredati da tool che semplificano notevolmente installazione, configurazione e gestione del sistema. Le prime distribuzioni, tra cui le prime versioni di Slackware ed altre ormai non più esistenti, avevano ancora kernel instabili, ed erano dirette ad un pubblico di “smanettoni”, per cui se rendevano più agevole l’installazione, richiedevano comun- que una certa competenza. Man mano che il sistema è diventato più stabile e si è diffuso sono nate distribuzioni sempre più orientate verso un’utenza meno esperta, come Red Hat, SuSE, Mandrake, favorendo cosìl’ulteriore diffusione. La maggior parte di queste distribuzioni sono realizzate e commercializzate da aziende che si occupano prevalentemente del loro sviluppo, distribuzione e soprat- tutto assistenza ed eventualmente fornitura di garanzie, mostrando come sia effet- tivamente possibile basare una strategia di mercato sul software Open Source. La principale eccezione è costituita da Debian GNU/Linux, una distribuzione intera- mente gestita da una comunità di volontari che realizzano quel sistema totalmente libero2.4 per realizzare il quale é nato il progetto GNU. Mentre Linux muoveva i suoi primi passi, permettendo al sistema GNU di BSD guadagnare popolarità, il sistema BSD viveva un momento di crisi per una causa legale tra AT&T e l’Università di Berkley a proposito di alcune parti di codice presenti nel sistema, ma appartenenti ad AT&T e non facenti parte degli accordi che avevano reso libere le altre parti. Tale causa si è protratta negli anni 1992-1994, nel corso dei quali gli sviluppatori si sono preoccupati di rimuovere e riscrivere le parti rimaste non libere; alla fine è rimasto un sistema libero quasi completo, ma mancante di alcune componenti per riscrivere le quali ci sono state alcune divergenze sulla direzione da intraprendere
dell’informatica come IBM. Negli ultimi tempi, inoltre, si è visto anche un notevole sviluppo sul ramo desktop. I numerosi vantaggi sia dal punto di vista della sicurezza che da quello economico Software Libero nella pubblica amministra- zione hanno spinto numerose nazioni in tutto il mondo a promuovere l’utilizzo di software libero nella pubblica amministrazione; in Italia è stata presentata una proposta di legge in tale senso e sono sempre più numerose le amministrazioni locali che hanno deciso di favorire soluzioni di questo tipo. Il prossimo passaggio nella diffusione del software libero sembrerebbe essere la Software Libero sul desktop sua diffusione tra gli utenti finali, sia sui computer usati come client all’interno di aziende, che nelle case di coloro che, pur dovendo o volendo usare un computer, non sono interessati alla sua conoscenza piu’ o meno tecnica. Per questi casi, attualmente si può dire che i programmi più importanti esistano e siano sufficientemente funzionanti, tuttavia l’introduzione di sistemi totalmente liberi in tali ambiti incontra ancora alcune obiezioni, più o meno fondate. Un grosso problema è la libertà di scelta, uno dei grossi vantaggi del software open source, che però diventa un ostacolo quando presentata a persone che non hanno né le competenze né l’interesse a compiere una scelta, ma sono ben disposti ad accettare passivamente ciò che la maggioranza usa. Un problema meno pressante, ma che viene spesso citato, invece è la presunta difficoltà di installazione e configurazione dei principali sistemi liberi: oggi come oggi esistono distribuzioni Linux facili come le principali alternative proprietarie, se non di più, e coloro che non sono in grado di farlo sono coloro che si sarebbero comunque rivolti ad altri con qualunque sistema. Al più si potrebbe lamentare una scarsità di supporto commerciale per gli utenti casalinghi, compensata però almeno in parte dalla disponibilità di una buona parte degli altri utenti di software libero. La sfida per una diffusione in tale senso comunque è attualmente aperta, e sta vedendo gli sforzi di un numero sempre maggiore di persone.
Il mondo del software libero è decisamente diverso da quello dei vari programmi freeware, adware e simili: nel secondo caso gli autori decidono di “regalare” il pro- prio prodotto o perché la sua commercializzazione non sarebbe conveniente, o per ottenerne un vantaggio economico tramite pubblicità, o motivi simili, comunque in un’ottica verticale nella quale il produttore del software concede il proprio program- ma alla massa degli utenti. Il Software Libero al contrario è pensato come scambio equo tra utenti. Il Software libero è nato come prodotto di una comunità (di utenti/sviluppatori) la comunità del Software Libero per la comunità stessa, in uno spirito di collaborazione e scambio tra pari. Questa comunità esiste tuttora, anche se la sua composizione è leggermente cambiata, infatti si può dire che ne facciano parte non solo coloro che scrivono software (libero), ma tutti coloro che ne sostengono attivamente lo sviluppo e la diffusione, quindi programmatori, ma anche coloro che scrivono documentazione, che insegnano ad usare programmi liberi o che semplicemente collaborano alla loro distribuzione. A livello locale esistono i LUG, Linux User Group - Gruppi di Utenti Linux - o più LUG e raramente i FSUG - Free Software User Group: gruppi più o meno formali di utenti^ FSUG
che si forniscono sostegno reciproco, effettuano promozione locale del sistema e dei suoi principi ed altre attività correlate. Tipicamente un LUG è relativo ad una provincia e può avere una sede nella quale avvengano degli incontri periodici con attività che vanno dal semplice ritrovarsi a chiaccherare di informatica all’organizzazione di lezioni o corsi su vari argomenti attinenti a Linux e all’informatica libera. Una gran parte delle attività di un LUG, però, avvengono tramite internet: la maggior parte dei LUG è dotata di un sito, ma soprattutto di una o più mailing list, sulle quale: vengono dati annunci sulle attività svolte man mano dal LUG; vengono orga- nizzate le attività del LUG; è possibile porre richieste d’aiuto, sia come principianti che a livelli più avanzati, ottenendone spesso risposte o quantomeno indicazioni sui luoghi dove è possibile trovarle; si chiacchera del più e del meno su argomenti vagamente correlati a quelli istituzionali del LUG. Alcuni LUG hanno anche un forum, con attività simili a quelle citate sopra, o usano altri strumenti, ma le mailing list sono la forma più comune. È importante notare però che un LUG non e’ un centro di assistenza gratuito: se da un lato è facile trovare persone disposte ad aiutare dei principianti in difficoltà, non è detto che quelle persone abbiano sempre tempo di rispondere tempestiva- mente, né che possano dare aiuto dettagliato piuttosto che semplicemente indicare qualche fonte dove altri hanno già dato una risposta. Similmente per argomenti più avanzati, chiedere sulla mailing list di un LUG può risparmiare molta fatica nel caso in cui ci sia già qualcuno che ha avuto problemi simili e li ha risolti, ma, soprattutto sulle mailing list più piccole, non è detto che ci sia qualcuno in una situazione simile, e in tale caso non resta che affidarsi alle soliti fonti, come motori di ricerca e simili. Un FSUG è simile ad un LUG, avendo però come argomento naturale il Software Libero in generale anziché i sistemi basati su Linux. Dato però che GNU/Linux é il sistema libero attualmente più diffuso, anche i FSUG tendono ad usarlo come piattaforma di scelta; del resto, specialmente quando in provincia non sia disponibile un FSUG, molti LUG si occupano anche di altri sistemi liberi o di programmi liberi su sistemi che non lo sono. La differenza fondamentale sta generalmente nel fatto che, mentre i LUG sono generalmente disponibili a trattare software non libero (o non del tutto libero) funzionante sotto Linux, specialmente quando non esistano alternative libere altrettanto funzionanti, questo tipo di programmi è tipicamente tralasciato dai FSUG. Per l’Italia esiste una mappa dei LUG e dei FSUG2.5 , comprendente anche le aree svizzere di lingua italiana, curata da ILS. motivazioni Vi sono alcuni specifici ambiti per i quali l’adozione di software libero può etiche (^) comportare vantaggi etici particolarmente forti, oltre a quelli pratici presentati oltre. scuole Uno di questi ambiti è sicuramente l’insegnamento a tutti i livelli, dove in alcuni casi può essere apprezzata la libertà 1 di studio del funzionamento dei programmi, ma soprattutto il software libero può contribuire alla diffusione di una cultura della legalità, con licenze che offrono diritti anziché toglierne e dunque più facilmente verrebbero lette o comunque considerate, anziché ignorate, accettate acriticamente e poi violate, come è malcostume diffuso.
cresce tipicamente al crescere delle funzionalità disponibili nel programma. Numeri di versione il cui primo numero è maggiore di 0 indicano programmi che hanno già raggiunto una versine stabile: a questo punto il primo numero viene incrementa- to per indicare modifiche sostanziali al programma, come una riscrittura totale o l’introduzione di grossi motivi di incompatibilità: in questo senso un programma in cui questo numero, chiamato major number sia basso non è necessariamente un programma immaturo e con poche capacità, ma al contrario spesso è un program- ma progettato abbastanza bene da non aver avuto bisogno di riscritture o grossi ripensamenti. Il secondo numero di versione, detto middle number, viene incre- mentato per indicare l’aggiunta di capacità o altre modifiche significative, ma non sostanziali, al programma. Molto frequentemente questo numero viene anche usato per mantenere la distinzione tra versioni di sviluppo e stabili del programma: le ver- sioni con determinati middle number vengono usate per l’aggunta di funzionalità, introducendo potenziali motivi di instabilità, mentre l’ultima versione stabile viene mantenuta come tale con il middle number precedente. Per il kernel linux, ad esempio, i middle number dispari vengono usati per indicare le versioni di sviluppo, mentre quelli pari vengono assegnati alle versioni stabili; così fino a poco tempo fa erano mantenute le versioni stabili 2.0, 2.2 e 2.4, mentre lo sviluppo avveniva nelle versioni 2.5, che all’inizio del 2004 è stata giudicata abbastanza stabile da dare vita alla 2.6. Il terzo numero di versione, infine, detto minor number indica le varie modifiche effettuate ad una determinata versione del programma: in un programma stabile queste saranno correzioni di eventuali ulteriori bug, mentre in un programma di sviluppo saranno aggiunte o sistemazioni di parti di codice ed eventualmente funzionalità. coordinamento Quando un programma è sviluppato da un numero elevato di persone, come è e fork (^) ad esempio il caso di molti progetti open source, è ovviamente necessario coordi- nare i loro sforzi, in modo tale da ottenere un prodotto omogeneo; frequentemente di questo compito si occupano coloro che hanno dato inizio al progetto e possono farlo prevalentemente in due modi: o tendono ad accettare qualsiasi contributo, controllando semplicemente che funzioni ed integrandolo il più possibile con il resto del progetto, rischiando però di perdere in omogeneità, oppure si possono compor- tare da “dittatori illuminati” facendo una rigida selezione dei contributi ricevuti ed aggiungendo solo ciò del quale sono effettivamente convinti; questo non è contrario allo spirito del software libero, in quanto chi non fosse soddisfatto della gesitione “ufficiale” può realizzare, distribuire e mantenere patch per aggiungere le proprie varianti al progetto. In casi estremi, è possibile che degli sviluppatori, insoddisfatti della gestione ufficiale del progetto, decidano di effettuare una fork, ovvero di far nascere un nuovo progetto basato sul codice originale al momento della fork, ma gestito in modo differente; tale rischio è insito nella natura stessa dell’open source e comporta sicuramente degli svantaggi dal punto di vista dell’“ottimizzazione delle risorse”, ma è necessario per preservare la libertà dei programmi e può offrire comunque delle opportunità dal punto di vista della specializzazione dei programmi e della loro varietà. la sicurezza Tra i non addetti ai lavori potrebbero sorgere dei legittimi dubbi sulla sicurezza del software open source e sulla possibilità che la conoscenza del codice sorgente
venga utilizzata per scopi maliziosi, ed in particolare per realizzare versioni modi- ficate dei programmi con comportamenti illeciti, per aggirare eventuali protezioni (autentificazioni e simili) presenti nei programmi conoscendone il funzionamento e per trovare e sfruttare eventuali errori. In realtà questi aspetti non costituiscono un serio problema per la sicurezza di un sistema, come mostrerò in seguito, e si può anzi dire che il modello di sviluppo open source offre degli strumenti per realizzare programmi più sicuri dei corrispettivi “closed”. Ovviamente ciò non significa che ogni programma open source sia sicuro, tuttavia questo modello di sviluppo, unito ad una consapevolezza del problema in fase di progettazone e sviluppo può aiutare notevolmente la riduzione dei problemi di sicurezza nei programmi. Questo è un rischio effettivamente presente: esistono numerose versioni mo- versioni modificate dei programmi dificate in modo malevolo di programmi open source, e soprattutto dei programmi piu’ importanti del sistema, tuttavia: Il fatto che chiunque possa leggere i sorgenti scoraggia i programmatori originali dall’inserimento di backdoor o altre funzionalità malevole (perché è probabile che prima o poi qualcuno se ne accorga. Scaricando programmi dal loro sito ufficiale (o da mirror elencati sul sito ufficiale) e controllando la correttezza dei pacchetti con gli hash md5sum o le firme pgp/gpg disponibili sugli stessi si può avere una ragionevole certezza che il programma sia effettivamente corrispondente ai sorgenti osservabili da chiunque. A meno di sistemi molto mal configurati, questi programmi possono essere installati solo dall’utente root, che si suppone a conoscenza delle norme di prudenza di cui sopra. Ci si potrebbe comunque chiedere se la conoscenza del sistema di comunicazione aggirare le tra client e server non possa comportare dei rischi, tuttavia bisogna ricordare che la^ protezioni maggior parte dei programmi, sia open che closed, fanno uso di protocolli standard, le cui specifiche sono liberamente disponibili sugli RFC, per cui la conoscenza di un’implementazione (a meno di bug) non rende più o meno semplice l’attacco al protocollo. Comunque per avere accesso da remoto ad un computer è necessario che sullo stesso ci sia un programma che ascolta richieste di connessione su una determinata porta e fornisce tale accesso: i programmi attualmente utilizzati (sempre a meno di bug o cattive configurazioni) o forniscono un accesso estremamente ridotto e quindi privo di pericoli, oppure prevedono l’ autentificazione di chi ha effettuato la richiesta di connessione (spesso ma non sempre un nome utente e password). Per poter avere accesso al computer aggirando tale controllo ci possono essere diversi modi: venire a conoscenza di una coppia nome utente - password valide, sfruttare un bug del programma, oppure, e questo è il caso in questione, sostituire il programma in questione con una versione modificata che permetta di aggirare i controlli, ma per poterlo fare è necessario o avere gia’ accesso (con sufficienti diritti) alla macchina, oppure “avere accesso all’amministratore” e convincerlo in qualche modo ad installare il programma (ma un amministratore accorto evita di cadere in simili trappole e si assicura che gli utenti non possano installare programmi potenzialmente pericolosi). In ogni caso se il server2.8 è sicuro non è (dovrebbe essere) possibile aggirarne le protezioni mediante un client2.9 modificato, e comunque in molti casi il client “normale” non serve neanche per effettuare l’attacco.