A GNU world is possible! Software Libero, Copyleft e altri antidoti all'economia della rendita permanente. [prima parte] Davide Lamanna Binario Etico
● Informatica questa conosciuta ● Free Software: free as in free speech! ● Lo gnu e il pinguino: due animali che non rischiano l'estinzione ● Copyleft e Creative Commons: i modelli di business del futuro Agenda
Informatica questa conosciuta "L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi." (Edsger Wybe Dijkstra)
Informatica ● Etimologia: inform(ation electronique ou autom)atique ● Philippe Dreyfus per primo utilizza nel 1962 il termine informatique (informatica): trattamento automatico dell'informazione mediante calcolatore ● L'elaboratore non fa altro che eseguire istruzioni preventivamente impartitegli. Caratterizzato da: – velocità di calcolo – flessibilità dell'architettura
La macchina di babbage (1822)
Algoritmo ● Procedimento che consente di ottenere un risultato atteso eseguendo, in un determinato ordine, un insieme di passi semplici corrispondenti ad azioni scelte solitamente da un insieme finito ● Esempi: calcolo del massimo comun divisore, una ricetta di cucina, una procedura di archiviazione documentale facente parte di un protocollo
La macchina di Turing (1936) ● Agisce sopra un nastro che si presenta come una sequenza di caselle nelle quali possono essere registrati simboli di un ben determinato alfabeto finito ● Testina di lettura e scrittura (I/O) operazioni su caselle del nastro. ● Evolve nel tempo e ad ogni istante si può trovare in uno stato interno ben determinato facente parte di un insieme finito di stati.
La macchina di Turing ● Inizialmente sul nastro viene posta una stringa che rappresenta i dati che caratterizzano il problema che viene sottoposto alla macchina. ● La macchina è dotata anche di un repertorio finito di istruzioni che determinano la sua evoluzione in conseguenza dei dati iniziali. ● L'evoluzione si sviluppa per passi successivi che corrispondono a una sequenza discreta di istanti successivi.
Hardware ● La parte fisica di un elaboratore (un computer, un telefono cellulare, un lettore MP3, ecc.) ● Parti magnetiche, ottiche, meccaniche ed elettroniche per trattare segnali digitali ● Segnale digitale: una variazione di corrente o di tensione che veicola un'informazione ● Codice binario: far passare o meno la corrente in un circuito, secondo un piano prestabilito ● Transistor: dispositivo a stato solido formato da semiconduttori usato per trattare segnali elettronici
La macchina di Von Neumann (1945)
I primi computer
L'eniac
Produzione di hardware ● Nuovi prodotti emergono costantemente: più veloci, più piccoli, più intelligenti ● Si introducono nuovi materiali, spesso scarsamente testati, nuovi processi e sostanze chimiche mai testati (non ce ne sarebbe il tempo) ● Si avviano i dispositivi dell'anno precedente alle discariche, dove diventano rapidamente rifiuti tossici da smaltire.
Ok. E il software? ● Programmi, procedure e documentazione per eseguire operazioni su un computer ● Esempi: software applicativi come gli elaboratori di testo che eseguono compiti produttivi per gli utenti, oppure sistemi software come i sistemi operativi che si interfacciano con l'hardware per fornire i servizi di base necessari ai software applicativi di cui sopra
Software ● Un programma o un insieme di programmi in grado di funzionare su un elaboratore (ad esempio, su un computer). ● Tramite il software è possibile impartire istruzioni all'hardware, in forma di segnali digitali. ● I segnali digitali che l'hardware è in grado di trattare sono codificati esclusivamente in forma binaria (“0” o “1”).
La compilazione del software ● Poiché per le persone è molto difficile esprimersi usando solo zeri e uni, i software vengono generalmente scritti tramite linguaggi di programmazione, che usano anche espressioni provenienti dal linguaggio naturale (quasi sempre in inglese) ● Dopo che un programma è stato scritto in un certo linguaggio di programmazione, esso viene “tradotto” in una sequenza di zeri e uni attraverso un procedimento noto col nome di “compilazione”.
Codice binario e codice sorgente ● Questa sequenza di zeri e uni viene comunemente chiamata “codice binario”, mentre il programma scritto in un qualunque linguaggio di programmazione viene detto “codice sorgente”. ● Dal codice sorgente è possibile generare il codice binario, attraverso la compilazione. Il procedimento inverso è invece impossibile (o quasi)
Esempio di creazione di un software ● Un software è scritto in un linguaggio, che è un codice in una sorta di inglese che include comandi imperativi (codice sorgente) ● Es.: for i=1..10 while (a!=100) do {a=a +1; print a;open f=portafuturo.txt; write (a,f); close f} ● Dopo averlo scritto, il software va compilato e diventa in modo che sia leggibile per un computer (codice binario) ● Es.: ● Questa trasformazione è quasi irreversibile
Schede perforate
Che cos'è il Software Libero? Il concetto di software libero discende naturalmente da quello di libertà di scambio di idee e di informazioni. “Cos'è il Software Libero?” di Francesco Potortì
Le 4 libertà del Software Libero ● 0 (o libertà fondamentale): La libertà di eseguire il programma per qualunque scopo, senza vincoli sul suo utilizzo ● 1: La libertà di studiare il funzionamento del programma e di adattarlo alle proprie esigenze ● 2: La libertà di redistribuire copie del programma ● 3: La libertà di migliorare il programma e di distribuirne i miglioramenti.
Ragionevole, no? E infatti all'inizio era così! E poi?
Software proprietario ● Un software sul quale il produttore pone restrizioni sull'uso, la modifica privata, la copia, la ripubblicazione. Può essere definito “a sorgente chiuso” o “software non libero” ● I proprietari possono imporre restrizioni tramite mezzi tecnici, come ad esempio la restrizione o soppressione dell'accesso al codice sorgente (es.: vendono il binario) e/o tramite mezzi legali, come il copyright e il brevetto
Il Software Libero come bene comune ● Bene comune: un'idea, un'entità o altro, che giova all'intera colletività ● Un bene che è condiviso da tutti i membri di una comunità ● Il Software Libero ha a che fare con libertà fondamentali, condivisione della conoscenza, miglioramento della qualità della vita ● E' un'opportunità per la ricerca, la creatività, l'innovazione ● E' una risorsa per il mercato, le PMI e le PA
La Fondazione Software Libero (FSF) ● Il software distribuito con una licenza che rispetti questi principi e le 4 libertà è detto Software Libero ● Nel 1984 Richard M. Stallman diede vita al progetto GNU, con lo scopo di tradurre in pratica il concetto di software libero, e creò la Free Software Foundation per dare supporto logistico, legale ed economico al progetto GNU.
Progetto GNU ● Lanciato nel 1984 per sviluppare un sistema operativo completo che fosse simile a Unix e che fosse Software Libero: il sistema GNU ● Il nome “GNU” è un acronimo ricorsivo che sta per “GNU's Not Unix”
Linux ● Linus Torvalds, studente 22-enne presso l'università di Helsinki, propose delle modifiche al sistema operativo MINIX ● MINIX aveva una licenza d'uso che non ne permetteva la modifica ● A.S. Tanenbaum, autore di MINIX e professore dell'università di Amsterdam, rifiutò le modifiche proposte da Linus.
Linux ● Linus, per dimostrare che si poteva fare qualcosa di molto meglio rispetto a MINIX, inizio a scrivere da zero un suo sistema operativo ● Il nome Linux fu attribuito a tale progetto solo in un secondo tempo, da parte dell'amministratore di sistema che permisse l'upload del file sorgente del kernel di Linus sul sistema ftp dell'università
Linux ● Il 5 ottobre del 1991, Linus inviò un celebre 'post' sul newsgroup comp.os.minix, in cui chiedeva commenti sul suo lavoro e proponeva alla comunità di lavorarci sopra ● La rivoluzione passa attraverso la Rete ● Linux viene sottoposto alla GPL
GNU/Linux ● Il kernel di GNU non era ancora finito quando fu rilasciato il kernel Linux (1991), che quindi viene integrato nel resto del software GNU già prodotto ● GNU/Linux diviene il sistema di base del progetto GNU e di tutte le sue applicazioni ● La combinazione di GNU e Linux è il sitema operativo GNU/Linux oggi usato da milioni di persone ● Talvolta questa combinazione viene erroneamente chiamata Linux
Distribuzioni GNU/Linux Debian Slackware Gentoo Ubuntu Mandrake/Mandriva Red Hat Suse
Copyright ● Una licenza di copyright è un documento legale generalmente distribuito assieme a ogni programma ● Facendo capo alle norme sul diritto d'autore, specifica diritti e doveri di chi riceve il programma.
La licenza pubblica generica GNU ● La licenza del progetto GNU, la Licenza Pubblica Generica GNU (GNU GPL) concede all'utente del programma tutte e quattro le libertà ● Chi modifichi un programma protetto da GPL e lo distribuisca con tali modifiche, deve distribuirlo sotto licenza GPL (licenza virale)
Copyleft ● Con un gioco di parole, il nome dato a questo tipo di protezione è permesso d'autore (copyleft) ● Le licenze proprietarie usano le norme sul diritto d'autore (copyright) per togliere libertà agli utenti di un programma; il permesso d'autore usa le stesse norme per garantire quelle libertà e per proteggerle.
La libertà nel software ● Il software da tempo ormai è avviato ad occupare un ruolo di primo piano nella nostra vita quotidiana ed è destinato a cambiare in maniera profonda la società ● È per queste ragioni che la nostra libertà futura dipenderà anche dall'uso di software libero.
E l'Open Source? ● Con software a codice sorgente aperto si indica semplicemente un software che viene sviluppato e distribuito tenendo pubblico il codice con cui è scritto ● Si tratta dunque esclusivamente di una modalità operativa, priva di implicazioni etiche e politiche ● E' un sottoinsieme del software libero ● Le differenze possono generare dissidi filosofici, ma non operativi tra gli sviluppatori.
Sviluppo di codice ● Cooperazione nello sviluppo di codice ● Le comunità di sviluppatori forniscono supporto e determinano le direzioni dello sviluppo in modo partecipato ● Versione dopo versione, il software diventa sempre più affidabile e rispondente ai bisogni degli utenti.