Categoria | Scienza e Tecnologia

Open source e software libero – seconda parte

Pubblicato il 15 maggio 2013 da redazione

Premessa

Nel precedente articolo abbiamo visto il significato del termine open source limitandolo strettamente all’aspetto tecnico, nella realtà la definizione ha assunto un significato più completo, ma, al momento, conviene considerarlo in tale accezione.

Prima di procedere, invito i lettori a soffermarsi su tutti gli aspetti tecnico-concettuali esposti nell’articolo precedente e a tenerli sempre a mente.  Su tali aspetti, non ci devono essere dubbi ne tanto meno pareri personali: così è lo stato dell’arte, lo si voglia o no.

In pratica, parafrasando con qualche libertà l’avvertimento sull’architrave dell’entrata all’Accademia platonica, potremo dire:

ΑΚΥΒEΡNΗΤΗΣ ΜΗΑΕΙΣ ΕΙΣΙΤΩ

ovvero non proceda chi non sa di cibernetica [open source], l’assimilazione di quanto esposto nel primo articolo è condicio sine qua non per proseguire.

E’ prevedibile che in futuro cambi la natura intima del computer e relativo software, che so io, impiegando una logica non binaria?

Troppe volte le previsioni dei vari esperti sono state smentite nei fatti, ma sembrano poco probabili e forse cambiamenti così radicali non sono auspicabili.

Per altro, storicamente, i principi di base delle tecnologie tendono a rimanere gli stessi nel tempo, padre Barsanti non avrebbe sicuramente problemi a comprendere le basi fisiche di un moderno motore a scoppio, infatti il ciclo termodinamico Otto che lo caratterizza gli era già ben noto, probabilmente rimarrebbe invece stupito di tutte le diavolerie elettroniche di cui una moderna automobile è dotata, fra cui la, per lui, magica chiusura a distanza!

Scopo

Con questo articolo entreremo anche in un campo diverso, diciamo filosofico, etico-morale e anche politico, nel quale ognuno può avere le proprie legittime opinioni e convincimenti talvolta radicalmente contrastanti fra loro.

Di questo chi legge deve essere conscio e, per altro, non si pretende ne si vuole convincere qualcuno dei miei venticinque lettori di manzoniana memoria della bontà di quanto esposto, ma, più modestamente, esporre determinati principi in modo tale che ognuno possa, se vuole, compiere in maniera informata e consapevole le proprie eventuali scelte, qualsiasi esse siano.

Alcuni aspetti del software

Il software è un prodotto essenzialmente di giovane età, diciamo sulla cinquantina, è bene quindi soffermarsi su alcune caratteristiche peculiari, fra le quali:

  • Immaterialità
  • Riproducibilità
  • Disponibilità dei mezzi di produzione
  • Facilità di distribuzione
  • Facilità di sviluppo collaborativo e distribuito
  • Pervasività

Il primo aspetto, quello della sua immaterialità, è forse la quinta essenza del prodotto intellettuale.

Il supporto fisico ha un costo irrisorio quale quello di un CD, un DVD, una chiavetta usb o pochi giga su una nuvola (cloud, ora va di moda) situata chissà dove.

Il secondo, quello della sua perfetta riproducibilità, qui ha proprio il suo significato più stretto. Ciò è dovuto alla sua struttura digitale, essendo composto in pratica da sequenze di “0” e “1”, è infatti possibile non compiere nessun errore nella riproduzione anche ripetuta da copia a copia di copia etc..

Naturalmente il tutto al netto dei sistemi di protezione e di eventuali errori che talvolta possono ingenerarsi, dovuti spesso all’hardware del sistema di riproduzione, insomma, quando una copia di un software riesce è identica in tutto e per tutto all’originale, ne, quindi, è possibile distinguerla.

Non viene in mente nessun altro prodotto dell’uomo che abbia le stesse caratteristiche, anche le più sofisticate macchine utensili automatiche producono, in realtà, pezzi tutti diversi fra loro, in effetti tali sistemi, per quanto sofisticati, danno esemplari entro determinate tolleranze, magari molto strette, ma comunque esistenti.

Per altro pure la Natura non ha queste capacità, anche le proverbiali gocce d’acqua sono tutte diverse fra loro, posto di avere una bilancia di sufficiente precisione!

Il terzo riguarda i mezzi necessari per la sua realizzazione, ovvero altri software e gli stessi computer, sono alla portata di buona parte dell’umanità , seppure con le significative eccezioni dei paesi del cosiddetto terzo mondo, e, comunque, lo saranno sempre di più in futuro.

In modo particolare molti software sono addirittura gratis.

Inoltre la distribuzione, anche a livello mondiale, ha costi bassissimi, talvolta può essere anche gratuita come certi servizi di hosting (sarebbe ospitalità, ma qui è il caso di usare il termine inglese), i quali concedono magari i primi 5 Gb a costo zero, che sono più che sufficienti per un intero sistema operativo, termine del quale poi chiariremo il significato.

Un’altra peculiarità più nascosta è questa: nel caso, molto frequente, di un software realizzato in collaborazione da più sviluppatori, questi possono essere fisicamente molto distanti fra loro, ciò è ovviamente dovuto alla rete, ma anche a specifici software, spesso disponibili gratis.

Questi sono i programmi tipo CVS, concurrent version system (sistema concorrente di versione).

In pratica un qualsiasi gruppo di sviluppatori sparsi per il mondo è in grado di produrre software anche di alto livello e complessità, con un minimo di investimento hardware, diciamo un pc e un collegamento internet per ognuno.

Questo non vuole dire che le grandi realtà industriali non sostengano costi di investimento hardware, come per esempio quelli per disporre di enormi quantità di memoria sufficienti ad ospitare vastissimi database (raccolte di dati) o serie di server, residenti su più computer, sufficienti a rispondere rapidamente alle numerosissime richieste di accesso alle informazioni (a volte milioni), basti pensare ai servizi forniti da Google.

Significative sono comunque le cosiddette software-house start up, aziende nate dal nulla con investimenti veramente minimi.

In definitiva l’elemento umano è uno dei costi principali, assieme a quelli di commercializzazione e, ultimamente, a quelli più strettamente legali.

Da ultimo, non per importanza, citiamo la pervasività del software, presente, in modo conclamato o silente, in ogni aspetto della nostra vita quotidiana.

Solo i computer pervadono praticamente la gestione di  tutte le attività umane, ne cito solo alcune: banche, negozi, pubblica amministrazione, attività investigative, infrastrutture in generale come aerei, navi, treni, sicurezza, telefonia etc…

Ma la pervasività è molto più estesa. L’ubiquità delle tecnologie digitali ha, infatti, assunto dimensioni veramente impressionanti: il software, nella sua faccia di firmware, è presente ormai in quasi tutti gli elettrodomestici: lavatrici, frigoriferi, forni, televisori, impianti ad alta fedeltà e chi più ne ha più ne metta. Inoltre tutti gli apparecchi elettromedicali ne sono ormai dotati, dall’umile misuratore di pressione casalingo al più sofisticato impianto per tac, per arrivare ai peace maker fino ai sistemi di monitoraggio e controllo dei parametri vitali, e qui ci fermiamo.

Possiamo immaginare il firmware come software memorizzato in modo permanente su un qualche componente di una apparecchiatura, tipicamente un integrato o memoria flash, a volte si parla, in questi casi, di software embedded (incluso, incastrato), che viene fornito direttamente assieme all’apparecchiatura.

Approfondendo un minimo prendiamo ad esempio una moderna lavatrice: beh.. anche la famosa casalinga di Voghera dovrà accorgersi con stupore dell’esistenza di software nascosto nelle visceri, ovvero su un qualche chip della scheda elettronica della macchina, nel momento in cui la stessa si rifiuterà di partire perché il detersivo non è quello voluto dal costruttore, stabilito per chissà quale scelta tecnica o, più probabilmente, commerciale, magari perché l’azienda produttrice possiede un pacchetto di azioni di uno dei produttori di detersivo che lava più bianco che più bianco non si può.

Quello della lavatrice è un esempio un po’ scenografico, tecnicamente realizzabile, ma possiamo considerare esempi ben più pregnanti.

E’ in fondo un software che, constato l’appiattimento di determinati parametri vitali, stabilisce la morte di una persona come spesso si vede scenograficamente in molti film, nella inquadratura dei segnali che si appiattisco sullo schermo del monitor.

E che dire dei software che gestiscono attività proprie e peculiari della vita democratica ad esempio le votazioni nel nostro parlamento?

Ad esempio: che tipo di programma gestisce il voto elettronico senza registrazione?

E’ open source o proprietario?

Nel secondo caso chi può assicurare che non registri da qualche parte il voto espresso dai parlamentari?

E, in questo caso, che nessuno possa accedervi in un secondo tempo?

Solo lo sviluppatore stesso può rispondere a queste domande, ma, avete mai sentito un oste che denigra il vino che vi sta versando?

Sicuramente saranno state prese tutte le precauzioni, spero vivamente e penso che simili dubbi siano infondati: è solo un altro esempio di pervasività.

Comunque leggendo, certamente da non esperto, stralci del testo Diritto parlamentare di A. Mannino pg. 207 non abbiamo trovato alcun accenno o preoccupazione a riguardo, se non quella relativa ai cosiddetti pianisti (parlamentari votanti al posto di altri), problema che, con l’introduzione di un sistema di votazione elettronico mediante la registrazione (forse intende riconoscimento) delle impronte digitali (queste si registrate) dei singoli parlamentari, sembrerebbe risolto, almeno fino a quando qualcuno non riprodurrà finte dita in silicone con le impronte volute (dovrebbe essere possibile!).

E che dire dell’ubiquità del software nelle applicazioni militari?

Non solo nella guerra elettronica, a cui si pensa immediatamente, ma, per esempio, a come il software stia contribuendo a rendere il cecchinaggio un normale lavoro da scrivania:

un qualsiasi impiegato, dopo avere portato i figli a scuola, va in ufficio e, da una consolle, gestisce un drone (aereo telecomandato) e magari decide della vita di una persona a migliaia di chilometri dalla sua postazione, poi, alla sera, dopo l’eventuale straordinario, torna a casa e si preoccupa dei compiti dei figli: veramente agghiacciante!

Ma volendo rimanere nel campo della guerra elettronica, potrà succedere che un software interrogando un suo simile, deciderà se si trova di fronte a un amico o a un nemico. Questi sono i cosiddetti IFF, interrogator friend or fiend (interrogatore amico-nemico), codici installati su particolari scatole nere (black box) ricetrasmittenti ormai in dotazione a qualsiasi mezzo militare, aereo , nave, carro armato etc..

Una volta esistevano le parole d’ordine o le bandiere, ma, anche qui, i tempi cambiano!

Per altro un bersaglio (target) è visibile a schermo ben prima che otticamente, quando sarebbe ormai troppo tardi e, magari, già si è passati a miglior vita!

I due precedenti esempi sono forse un po’ sinistri, specie il primo, e preoccupanti per le implicazioni che possono avere ma, lo si voglia o no, così è lo stato dell’arte (si fa per dire).

Software libero?

Nell’articolo precedente abbiamo genericamente parlato di libertà tecnica per lo sviluppatore, ma ora, venendo al dunque: è corretto associare un termine come libertà a una cosa come il software e se sì come?

Abbiamo visto come sia ormai innegabile la pesante influenza che i sistemi software esercitano nelle moderne società civili. Difficile, quindi, non associare la parola libertà, nel senso più generale del termine, a una qualche libertà anche nel software.

Una prima comune obiezione è quella di legare il termine libertà a quello di gratuità. Questo è il cosiddetto freeware (free software), ma il termine free in Inglese è ambiguo, significa sia libero che gratis, come è in questo caso.

Un’altra obiezione è legata, invece, alla disponibilità del codice sorgente, impedendone però legalmente la modifica, o introducendo delle limitazioni alla possibilità di un suo utilizzo.

Infine un software può essere considerato libero solo perché è facilmente reperibile, magari a basso prezzo, oppure perché è gratis per uso personale etc… inutile continuare con altri esempi.

E’ chiaro che qui si stanno affacciando tutte le problematiche legate alla proprietà intellettuale, brevetti, licenze d’uso, copyright, etc. che, comunque, tratteremo in seguito.

Naturalmente c’è chi considera il software, o fa finta di farlo, alla stregua di un qualsiasi altro prodotto industriale, per il quale non sia proprio il caso di scomodare parole alte come libertà, bene comune, diffusione del sapere, etc..

Sembra veramente difficile assumere questo punto di vista, che, come è facile pensare, è quello dei produttori di software proprietario.

Per altro ci pare che la maggioranza delle persone, anche di un certo livello culturale, proprio non si ponga il problema, ma questa è una ragione di più per richiamare l’attenzione su certe idee e problematiche.

meditateSoftware libero

Arriviamo al fine alla sospirata definizione, scegliendo quella della Free Software Foundation, FSF, ente di cui parleremo ampiamente in seguito, la quale è, a nostro avviso, di gran lunga la più corretta e pregnante essendo, fra l’altro, probabilmente anche la prima.

Dunque la FSF ha definito in modo chiaro e inequivocabile cosa si debba intendere per software libero, e, d’ora in poi, quando ci riferiremo a tale definizione, scriveremo Software Libero abbreviato in SL o Free Software (FS), tutti con le maiuscole iniziali, mentre useremo le minuscole per gli stessi termini, ma intesi in senso generico.

La definizione è questa:

Un software [cioè un programma] è libero se e solo se gli utenti dello stesso godono di tutte le seguenti quattro Libertà fondamentali:

Libertà 0 Libertà di eseguire il programma, per qualsiasi scopo.

Libertà 1 Libertà di studiare come funziona il programma e di modificarlo in modo da adattarlo alle proprie necessità.

Libertà 2 Libertà di ridistribuire copie in modo da aiutare il prossimo.

Libertà 3 Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti da voi apportati (e le vostre versioni modificate in genere), in modo tale che tutta la comunità ne tragga beneficio.

softwarewarNel sito del progetto GNU, di cui parleremo in seguito, si può trovare una disamina direttamente alla fonte, per ora si fanno notare solo alcune delle caratteristiche più importanti della definizione.

Gli aspetti economici, i soldi, per intenderci, non sono diretto argomento del SL, la Libertà è, nel sentimento comune, o almeno si spera, su un piano diverso e superiore.

E’ inevitabile che il SL abbia comunque aspetti e ricadute economici, ma questi non vengono preclusi, insomma, se qualcuno ottiene profitti con il Software Libero, o attività ad esso correlate, preservando le quattro Libertà, il software in oggetto è e rimane Libero.

E’ chiaro però che l’SL, in quanto tale, è tendenzialmente un prodotto a prezzi contenuti.

Le Libertà 1 e 3 implicano la disponibilità totale del codice sorgente, questo dovrebbe essere chiaro: non può quindi essere Libero un software che non sia open source, ma non è vero il contrario.

La Libertà che concede un SL non è solo per chi è in grado di capirlo e modificarlo, cioè gli sviluppatori, ma anche per un qualsiasi utente dal momento che può eseguirlo e ridistribuirlo liberamente.

Per altro è chiaro che solo uno sviluppatore è in grado di beneficiare completamente di tutte le quattro Libertà, in modo particolare della 1 e della 3.

Viene quindi spontaneo domandarsi perché mai ci si dovrebbe preoccupare di libertà che non sono per tutti, ma questa è una considerazione che si dimostra essere molto miope, infatti la disponibilità del sorgente implica che un programma può essere visionato da più persone, teoricamente da qualsiasi softwarista che conosca il linguaggio in cui è scritto, quindi, se non in casi particolari, da milioni di individui e ciò è una garanzia di trasparenza e rende difficile, ad esempio, l’occultamento di malware, (malicious software: qualsiasi tipo di software malevolo come virus, spie, etc.), in modo analogo, lo stesso dicasi per eventuali errori presenti nel programma (bugs, letteralmente bachi, cimici), che possono essere corretti da chiunque in grado di farlo.

Ma la risposta più pregnante a nostro avviso è questa: considerando l’importanza del software è chiaro che la sua Libertà deve essere estesa a più soggetti possibili e questo è una forma di garanzia indiretta anche per la libertà di un qualsiasi utente.

Fino a non molto tempo fa, prima del diffondersi della rete, la libertà di stampa era solo per giornalisti e scrittori, non certo per la persona qualunque, che difficilmente poteva accedervi attivamente, ma non per questo e, anzi, forse proprio per questo, tale libertà era, ed è ancora, considerata importante per una società libera, civile e democratica, e così deve essere per la Libertà del Software.

Anche la Libertà 0 non è scontata, basti pensare, per esempio, a certi programmi di ascolto musicale (music player) che si rifiutano di eseguire pezzi copiati. Bene, questo non è un player libero e non vuol dire nulla se la musica è illegalmente copiata, questo sarà un problema dell’utilizzatore, non certo del software!

L’uso di un coltello è libero, se poi lo stesso diventa un’arma per uccidere, non è certo responsabilità del coltello!

La Libertà 2 apre una porta sugli aspetti pedagogici del SL che, come vedremo, sono notevoli, per quanto pochissimo sfruttati, almeno nella scuola italiana.

Per esempio: quale migliore modo di imparare un linguaggio di programmazione se non quello di imparare a leggerne il sorgente?

Traspare infine nelle Libertà 2 e 3, uno spirito comunitario e solidale verso il prossimo, da questo qualcuno ha stigmatizzato il SL come comunista e anarchico, quasi i due significati non fossero antitetici, altri lo hanno visto come profondamente cristiano, tanto da suggerire che un moderno Gesù Cristo sarebbe senz’altro favorevole alla sua diffusione!

wikipediaMah… sinceramente non pensiamo sia il caso di addentraci in tali meandri ideologici, ma, se proprio vogliamo, direi che il SL affonda le sue radici nella cosiddetta etica hacker dei primi lustri della seconda metà del secolo scorso e forse ancora più indietro, fino agli scienziati illuministi, ma anche altri prima, che propugnavano la necessità della libera circolazione del sapere e delle idee.

No, hacker non è un termine negativo malgrado ora sia usato in senso anche dispregiativo, e questo, purtroppo, con la complicità attiva di praticamente tutti i mezzi d’informazione, o mass media che dir si voglia.

Sono di poco tempo fa le polemiche e discussioni suscitate dall’hackeraggio di mail di esponenti di un movimento politico, che, malgrado favorevoli all’open source e al software libero (minuscolo), usano tranquillamente tale discutibile neologismo assimilando de facto un hacker ad un ladro cibernetico.

Chi ha commesso tali azioni è semplicemente un delinquente che ha perpetrato un atto illegale, trafugando messaggi personali e violando forse più di una norma di legge anche penale, ma, se proprio vogliamo dirlo in Inglese, usiamo il termine cracker, che è sicuramente più adatto.

Dobbiamo inoltre ad hacker lungimiranti, se molto software è potuto giungere Libero fino a noi, evitandoci di essere completamente in balia delle solite ricchissime software house (aziende produttrici di software) della costa ovest degli USA.

Al termine di questo paragrafo, e a scanso di equivoci, è quindi meglio precisare ancora l’accezione con cui viene usato l’aggettivo Free Software, che non si deve intendere come:

free as in beer: libero come in [una] birra [gratis] ma:

free as in Freedom: libero come nella [parola] Libertà.

Conclusioni

Dopo aver dissertato sulla natura e peculiarità del software siamo giunti quindi a concludere che il termine libertà può avere senz’altro accostato al software e che un software (programma), seguendo la definizione della Free Software Foundation, si definisce libero quando sono garantite a un suo utente le seguenti quattro Libertà:

Libertà 0 Libertà di eseguire il programma, per qualsiasi scopo.

Libertà 1 Libertà di studiare come funziona il programma e di modificarlo in modo da adattarlo alle proprie necessità.

Libertà 2 Libertà di ridistribuire copie in modo da aiutare il prossimo.

Libertà 3 Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti da voi apportati (e le vostre versioni modificate in genere), in modo tale che tutta la comunità ne tragga beneficio.

Questa definizione non è rimasta solo a livello teorico, ma, nel tempo, ha avuto ricadute pratiche con la realizzazione di programmi per le più svariate applicazioni, fino a veri e propri sistemi operativi, che nulla hanno da invidiare al software proprietario e arrivando anche a fare nascere specifiche licenze per il SL.

In ogni caso tutti gli aspetti del SL già trattati, ed anche altri, saranno più chiari in seguito quando, nei prossimi articoli, se ne vedrà la storia e i personaggi che l’hanno fatta, personaggi dei quali, fino ad ora, non abbiamo volutamente ancora parlato.

di Tullio Bertinelli

Linkografia

Naturalmente sul web esistono moltissimi link ai vari argomenti trattati, il rischio è di avere troppe informazioni, qui sono riportati solamente quelli richiamati dal testo

http://books.google.it/booksid=6dJCaD8c6h0C&pg=PA207&lpg=PA207&dq=votazione+elettronica+di+nomi+senza+registrazione&source=bl&ots=wVT3Mk8c5u&sig=gQzso3LxKdKqFvspLURfGu2A31k&hl=it&sa=X&ei=ctR8UYT0BIeVtQbH1YH4Cg&ved=0CHoQ6AEwBg#v=onepage&q=votazvotazione%20

http://www.gnu.org/philosophy/free-sw.it.html

1 Comments For This Post

  1. Daniele Says:

    Grande Tullio!!! Sei il migliore!!! Veramente un articolo con i controfiocchi!!!

Lascia un commento

Advertise Here

Foto da Flickr

Guarda tutte le foto

Advertise Here

LINK