Lezioni di informatica libera

Introduzione

Penso che il motivo per cui le persone in genere trascurino l'importanza della libertà del software piuttosto che l'aspetto gratuito sia perchè in fondo per loro la parola libertà non ha un reale significato quando è accostata alla parola software. La libertà in fondo è il poter fare e quindi l'utente finale vive questa libertà principalmente quando può fare in modo semplice quello che vuole meglio ancora senza dover pagare.

Questa è una questione di cui bisogna tenere conto ma anche affrontare in modo specifico. L'importanza della libertà cioè della disponibilità del sorgente, standard aperti, etc. etc. emerge se le persone effettivamente riescono ad avere almeno un'informazione circa il significato di queste parole e della loro correlazione e importanza che hanno nel mondo reale. Inoltre occorre fare chiarezza circa le dinamiche, anche sociali, di Internet. Per questa ragione ho scritto Lezioni di informatica libera e le ho messe sotto CC-by-nc-sa-it-2.5. Sarei perciò felice che partecipaste alla loro miglioria e stesura.

Licenza

ccbyncsa.png

Quest'opera è pubblicata sotto licenza Creative Commons Attribution, Non-Commercial, Share-Alike, versione 2.5 in italiano

Autori

  • Roberto A. Foglietta <eman.atteilgof.otrebor|em#eman.atteilgof.otrebor|em>

Generica architettura

slide01.png

Il generico sistema informatico è costituito da tre elementi: l'utente, l'hardware e il software.

All'interno del software possiamo distinguere il diversi elementi: il sistema operativo, l'interfaccia utente e le applicazioni.

  1. L'utente interagisce con l'hardware generalmente attraverso il mouse e la tastiera.
  2. L'hardware interpreta questi segnali e li trasforma in dati digitali che vengono passati al sistema operativo.
  3. Il sistema operativo comunica questi dati all'interfaccia utente attiva e l'interfaccia utente li comunica, a sua volta, all'applicazione attiva.
  4. L'applicazione svolge un compito coerente con l'interazione ricevuta dall'utente e comunica il risultato all'interfaccia utente.
  5. L'interfaccia utente gestisce e aggiorna la visualizzazione e comunica nuovamente con il sistema operativo.
  6. Il sistema operativo comunica con le periferiche audio e video per ritornare all'utente l'interazione.

Affinché l'utente sperimenti un'interattività soddisfacente questo ciclo deve potersi ripetere decine di volte al secondo.

Le interfacce utente si dividono in due categorie: quelle grafiche e quelle a caratteri cioè solo testo.

  • Le interfacce grafiche sono importanti perchè attraverso di esse l'utente ha un approccio più intuitivo all'uso delle applicazioni e inoltre è in grado di elaborare contenuti multimediali.
  • Le interfacce a carattere sono importanti per amministrare un sistema da remoto e per configurare quelle impostazioni o risolvere quei problemi quando l'interfaccia grafica non è disponibile o non funziona correttamente. Inoltre attraverso l'interfaccia a caratteri è possibile dare una sequenza di comandi e automatizzare tali sequenze al fine di compiere moltissime operazioni al secondo che altrimenti risulterebbero inutilmente ripetitive e estremamente lunghe se comunicate attraverso il mouse.

Applicazioni

slide02.png

Il compito del sistema operativo è quello di permettere l'interazione fra l'utente e le applicazioni.

Esistono diversi sistemi operativi i più noti dei quali sono: Microsoft Windows, GNU/Linux, Apple MacOsX. Un personal computer può avere più sistemi operativi installati e mediante macchine virtuali farne girare più d'uno in contemporanea.

Le applicazioni possono essere arbitrariamente divise nelle seguenti categorie: native, multi-piattaforma e applicazioni web o remote.

  • Le applicazioni native sono specifiche di una versione di sistema operativo, se funzionano anche sulle versioni più vecchie dello stesso sistema operativo si dicono retro compatibili. La procedura di rendere un'applicazione abile a girare anche su un altro sistema operativo o una versione successiva dello stesso sistema operativo si dice porting. Tale operazione è può essere semplice o complessa a seconda della differenza fra sistema operativo, versioni successive, ma dipende grandemente anche dalla tecnologia utilizzata per sviluppare l'applicazione e dalla sua architettura.
  • Le applicazioni migliori sono quindi multi-piattaforma perchè sono state progettate e realizzate per essere in grado di girare su diversi sistemi operativi.
  • Poi ci sono gli emulatori i quali permettono di simulare un determinato ambiente che l'applicazione si aspetta di trovare. Questi emulatori sono applicazioni molto diverse fra loro e vanno dalla java virtual machine, a strati di compatibilità come wine oppure macchine virtuali che simulano un intero personal computer su cui si può installare un intero sistema operativo. Ognuna di queste tecnologie, ovviamente, ha dei vantaggi e degli svantaggi.
  • Infine ci sono le applicazioni web o remote: esse richiedono un browser o un client che sia in grado di girare sul sistema operativo ospite e tramite una connessione di rete comunicano con un altro computer, detto server, che si occupa di elaborare le informazioni ricevute e attraverso il browser o il client di riportare all'utente il risultato.

Rete client/server

slide03.png

Le applicazioni di rete sono molto importanti perchè di fatto rappresentano l'essenza di internet e anche il suo valore aggiunto. Perciò prima di parlare di Internet andremo a indagare come funziona una rete semplice. Gli utilizzatori di un applicazione remota si dicono client mentre coloro che forniscono il servizio si dicono server. Quando digitate un indirizzo web nel broser questo si connette a un server. E' il server a fornire al browser quelle informazioni che voi percepite come un sito web o un'applicazione remoto quale potrebbe essere youtube o gmail.

I dati viaggiano sulla rete raccolti in pacchetti ognuno dei quali contiene il destinatario e il mittente. Sulla loro strada si trovano altre macchine che sono chiamati router o gateway a seconda della loro funzione. A noi ci basti sapere che grazie al destinatario il router/gatway è in grado di indirizzare correttamente il pacchetto verso la sua destinazione inoltre poiché il pacchetto contiene anche il mittente il server potrà correttamente inviare la risposta.

La comunicazione fra client e server è bidirezionale ma è sempre il client il primo a iniziare la comunicazione mentre il server si limita a rispondere. Non è necessario che il client e il server abbiano lo stesso sistema operativo perchè esiste un protocollo di comunicazione standard per inviare e ricevere i dati. Perciò affinché tutto funzioni correttamente è essenziale che tutte le parti in causa conoscano e rispettino perfettamente gli standard di comunicazione.

Sorgente e formato dati

slide04.png

Non esistono soltanto diversi sistemi operativi ma esistono anche diversi modelli di sviluppo del software. Semplificando al massimo la questione potremmo chiamarli: open source e closed source, cioè a sorgente aperto e a sorgente chiuso.

Il sorgente di un programma è un testo scritto in un determinato linguaggio di programmazione che specifica esattamente il comportamento del programma stesso. Il sorgente è comprensibile agli esseri umani e serve loro per poter modificare e sviluppare i programmi però risulta "difficile" da comprendere ai computer perchè essi funzionano elaborando solo i numeri zero e uno, cioè in base binaria.

La base binaria è in assoluto l'alfabeto più semplice possibile ma è comunque possibile esprimere qualsiasi concetto attraverso di esso. La base binaria è adatta ai computer che sono velocissimi e stupidi mentre risulta estremamente innaturale per gli esseri umani che sono lenti ma intelligenti. Per questo esistono alcuni programmi, chiamati compilatori, i quali trasformano i sorgenti in sequenze ben determinati di uni e zeri che sono facili da interpretare per il computer. Poiché i compilatori sono programmi essi stessi, probabilmente, vi starete chiedendo chi ha compilato i compilatori? Compilatori più semplici che erano in grado di comprendere solo linguaggi più semplici come l'Assembler. Così a ritroso si può dire che il primo compilatore era il perforatore di schede, in pratica è come dire che il più semplice dei compilatori era meccanico e probabilmente il primo in assoluto era un pinza buca-tessere.

Tutto questo per dire che se di un software disponete del sorgente potete farne quello che vorrete e l'unico limite sarà determinato dalle vostre capacità. Mentre se avete solo il codice binario sarete impossibilitati di farne qualsiasi altra cosa che non sia metterlo in eseguzione e dal quel punto in poi il vostro computer non risponderà più direttamente a voi ma a quell'applicazione di cui non avete modo di sapere esattamente quello che fa. Ciò è vero per qualsiasi applicazione e sistema operativo proprietario: dovete fidarvi di chi ve l'ha fornita.

Volendo fare un'analogia ittica: se avete la licenza di pesca potete comunque comprare il pesce ma anche pescarlo, altrimenti siete solo costretti a comprarlo. Se non sapete pescare potrà sembrarvi una cosa di poco conto, per voi, avere la licenza di pesca oppure no… In effetti però la questione è se la licenza di pesca debba averla un uomo soltanto al mondo oppure tutti quelli che sono pescatori. L'open source garantisce che tutti abbiano la licenza di pesca anche se solamente i pescatori la useranno ma in questo modo sarà possibile comperare il pesce dal pescatore che lo vende a prezzo minore… altrimenti… dall'unico che ha la licenza di pesca!

Ma c'è un altro aspetto che l'analogia ittica non descrive opportunamente. Ogni applicazione salva in un suo formato dati, se il codice sorgente è disponibile allora da esso è possibile comprenderne anche il formato di salvataggio o comunicazione dati. Altrimenti anche il funzionamento del formato dati sarà ignoto così chiunque riceverà quel documento sarà costretto a procurarsi anche l'applicazione che lo ha generato. In questo modo si genera un'epidemia che procede a cascata perchè ogni nuovo utente salverà e diffonderà i suoi documenti in un formato proprietario. Questo è il motivo per cui oggigiorno è estremamente difficile comperare un computer portatile o di marca senza dover per forza anche pagare la licenza, inclusa nel prezzo d'acquisto, di un ben specifico sistema operativo.

Se si osserva il modello di replicazione virale ci si rende conto di quanto sia importante che l'utente sia informato dell'incidenza che la sua singola scelta ha in tale modello. Una scelta consapevole a favore dell'Open Source è il primo ma anche il passo necessario per invertire velocemente il processo a tutta convenienza dell'utente che se anche non può direttamente beneficiare del sorgente aperto può sicuramente godere della gratuità che viene dalla condivisione del sapere.

Internet e società

slide05.png

Il requisito essenziale affinchè Internet rimanga libera è l'utilizzo di formati di salvataggio dati e protocolli di comunicazione aperti. Senza questo pressuposto vienen a mancare l'interoperabilità fra le varie piattaforme e ci si indirizza verso un modello nel quale anche per comunicare e salvare i dati occorre pagare.

La libertà di Internet non è il solo requisito fondamentale da difendere ma anche la sua sicurezza. Anche per questo aspetto la scelta degli utenti non affatto trascurabile infatti esiste una forte correlazione fra sicurezza dei server e quella dei client cioè gli utenti che usano sistemi operativi insicuri creano problemi di sicurezza anche ai fornitori di servizi. Questo per due diverse ragioni:

  • un client insicuro diffonde dati in modo incontrollato che possono essere usati per accedere a servizi server in modo non autorizzato;
  • i virus che si replicano su Internet permettono di impadronirsi di milioni di macchine e di utilizzarle per attaccare i fornitori di servizi.

Generalmente i server sono molto più sicuri delle singole postazioni perchè essi sono amministrati da personale qualificato si noti però che è sufficiente che un solo server cada nelle mani di un attaccante male intenzionato che quel server:

  • diventi un potentissimo strumento di infezione per molti altri client che a loro volta diventerebbe uno strumento per attaccare altri server;
  • i dati e gli account di quel server rischino di essere violati e con essi la sicurezza e la privacy degli utenti che ne fanno uso.

Alla fine del giro è sempre l'utente, l'ultimo anello di questa catena alimentare, a pagare il prezzo per l'utilizzo di sistemi operativi insicuri che nel migliore dei casi è costretto a pagare licenze per gli antivirus senza comunque l'assoluta garanzia di mantenere in sicurezza il suo computer.

Nessun sistema operativo è completamente e totalmente sicuro ma mettetevi nei panni di un attaccante: se per prendere un sistema sicuro occorrono 100 ore di lavoro mentre nello stesso tempo si può tranquillamente accedere a migliaia se non milioni di postazioni insicure, voi come scegliereste di impiegare il vostro tempo? Presto detto e presto fatto.

Ognuno nelle proprie scelte coltiva i suoi interessi. Anche da questo punto di vista il modello di sviluppo Open Source ha a suo favore delle carte vincenti. I fornitori di servizi contribuiscono tutti insieme a mantenere sicuri e aggiornati gli strumenti che sono comuni e necessari alla loro attività. In questo modo i sono liberi di occuparsi in maniera efficiente principalmente di quello che realmente interessa a loro: specializzarsi nella fornitura di un servizio. Mentre gli utenti accedono in maniera pressochè gratuita a migliaia di applicazioni e a un sistema operativo sicuro. Il tutto si traduce in società in cui ognuno ha una sua opportunità.

C'è solo un piccolo ostacolo che ha rallentato questo processo di miglioramento: quel numerino giallo indicato nella progressione numerica sotto al grafico della replicazione virale. Quel numero significa che in 30 anni i sistemi operativi proprietari si sono diffusi su praticamente tutti i personal computer rendendo straricchi chi li ha inventati. Questo significa anche che ognuno di noi dovrebbe fare un piccolo sforzo per cambiare sistema operativo ma è noto che la natura umana sia fatta non solo di buone intenzioni ma anche di pigrizia…

Mente & Linux

slide06.png

Riprendiamo lo schema iniziale: qualcuno probabilmente si è stupito che l'utente interagisca con l'hardware quando invece ci pare naturale interagire con le applicazioni. In effetti il nostro corpo interagisce con le l'hardware mentre la mente elabora il modello di ciò che vede e sente. In soldoni noi ci immaginiamo interagire con le applicazioni perchè trascuriamo l'interazione corpo-computer. Trascurando questo passaggio però ci limitiamo alla conoscenza solo di ciò che possiamo accedere con il mouse.

In questo schema si esemplifica come la migrazione da un sistema proprietario a uno Open Source ampli il modello mentale dell'utente a tutte le componenti cosa che era impossibile da ottenere con un sistema operativo ideato per nascondere sotto la sua interfaccia grafica il suo funzionamento. In soldoni con Linux l'utente acquisisce progressivamente coscienza di sé e nella vita di tutti giorni anche un utente che prima era costretto a pagare la licenza dell'antivirus perchè non sapeva nemmeno installarne uno gratuito passando a Linux, in sei mesi, è in grado di diventare il riferimento tecnico di quelli che sono rimasti indietro. Non è magia è semplicemente il potere della mente che si manifesta una volta che si è liberata dal paradigma del software proprietario. Un altro esempio eclatante, ma piuttosto raro, sono quelle persone che non hanno mai usato un computer: se messe di fronte a Linux imparano a usarlo molto prima di chi ha avuto esperienze devianti.

Questo è il motivo per cui i geni del computer sono chiamati in gergo anche GURU perchè la conoscenza portata oltre il limite del comune viene percepito come qualcosa persino di spirituale. Ovviamente non ci si aspetta che tutti diventino dei guru del computer e attraverso Linux ma se si ha la curiosità e un pochino di buona volontà liberarsi dal software proprietario è un obbiettivo alla portata, se non di tutti, davvero di molti.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.