PDF e Linux Copertina Trappola

Articolo


Linux e il software libero

Questo è il testo di un talk che ho fatto in luglio alla Festa di Rifondazione a Borgo S.Lorenzo, vicino Firenze. L'intervento era rivolto anche a persone che non avevano mai sentito parlare di Linux, quindi molto del contenuto di questo articolo vi sarà familiare, ma potete prenderlo come suggerimento per convincere qualche vostro amico : - )
Buona lettura

Eugenia

Licenza di...

Normalmente, quando pensiamo a una licenza di utilizzo per del software, ci vengono in mente clausole strettissime come quelle del "contratto di acquisto" del software Microsoft (che troviamo, ad esempio, nella Guida in linea di Windows95, sotto la voce "licenza"): il software non può essere installato su più di un computer contemporaneamente, non può essere duplicato su qualsiasi supporto, non può essere installato su un server di rete... addirittura si può fare solo una copia di backup del software. Non si può disassemblare, decompilare, decodificare. Non si può dividere in parti, non si può affittare, e può essere rivenduto solo se completo di tutte le sue parti. Ah, e la Microsoft o le sue filiali non forniscono alcun supporto tecnico, rivolgetevi a chi vi ha venduto il computer.

Più che una "licenza", che ha nella parola stessa il significato di "permesso", è un elenco di divieti, posti dalla grande azienda produttrice per tutelare i suoi interessi.

Da quando però Internet è diventata di uso comune, sono spuntate fuori una miriade di licenze, tutte diverse tra di loro, che riprendono alcuni dei divieti elencati sopra, e non ne considerano altri: in genere i prodotti sottoposti a queste sono considerati "minori" per qualità, e le licenze stesse possono essere divise in due grandi categorie: shareware e freeware.

Il software shareware può essere liberamente distribuibile, ed ha la caratteristica di essere dato "in prova" all'utente: se dopo il periodo di prova indicato nella licenza si vuole continuare ad usare il prodotto, bisogna pagare una certa cifra all'autore. Non si può chiedere denaro per la distribuzione delle copie del software, ed esso non può essere disassemblato. Un esempio di software soggetto a una licenza del genere è il noto archiviatore WinZip.

Il software freeware, intendendo "free" come "gratuito" (l'inglese purtroppo in questo ha un difetto: "free" può stare sia per "gratuito" che per "libero"), viene liberamente distribuito, e può essere utilizzato per tutto il tempo che si vuole, su quanti computer si vuole, senza dover pagare nessuno. In genere il software di questo tipo è il risultato di "esercizi" di studenti, o è una manovra commerciale di una qualche azienda che spera così di associare il suo nome a un prodotto largamente diffuso; ad esempio Adobe ha distribuito il suo Acrobat Reader gratuitamente. L'Acrobat Reader è un programma che permette di visualizzare un formato di file, il pdf, proprietario della Adobe; la diffusione dei lettori ha fatto sì che le vendite del programma corrispondente per creare file pdf siano aumentate notevolmente.

Naturalmente la divisione tra software shareware e freeware è molto approssimativa, dato che esistono innumerevoli variazioni sul tema, dal software gratuito per uso non commerciale, a quello "cardware", per cui l'utente, se soddisfatto del prodotto, deve scrivere una cartolina di ringraziamento all'autore, ma per i nostri scopi è sufficiente.

Software libero

Esiste un'ulteriore categoria di licenze software, che è quella di cui tratta questo intervento: le licenze freeware o, meglio, "open source". La caratteristica principale di questo tipo di licenza è che obbliga chi distribuisce il software ad allegarvi i sorgenti, cioè il codice scritto dall'autore. Tutte le altre licenze hanno una clausola in cui si vieta la decompilazione, cioè la ricerca di parti di codice a partire dai file eseguibili, mentre le licenze "open source" danno a tutti gli utenti la possibilità di vedere come è strutturato il software, a costo ovviamente di conoscere il linguaggio in cui è stato scritto il programma. Ma rendere disponibile il sorgente non basta: per essere veramente "open source", un programma deve soddisfare alla "Open source definition", una serie di condizioni scritte dai coordinatori di uno dei principali progetti open source di oggi, la distribuzione Debian Linux, ed ormai approvate da tutta la comunità dell'open source.

La "OPEN SOURCE DEFINITION"
  1. Il software deve essere liberamente distribuibile. Non possono essere poste restrizioni di qualsiasi tipo sulla distribuzione, come ad esempio vietare la distribuzione insieme ad altro software, o su cdrom, o in rete.
  2. Deve essere reso disponibile il codice sorgente del software. In questo modo chiunque può vedere come è costruito il programma, controllare che non comporti buchi di sicurezza per il sistema e che non contenga parti nascoste o illegali.
  3. Deve permettere la modifica del programma, purché il prodotto modificato resti sotto la stessa licenza dell'originale. In questo modo chiunque ne abbia la capacità può migliorare il programma, o adattarlo alle sue esigenze, e il prodotto va a vantaggio di tutta la comunità.
  4. Deve mantenere l'integrità del codice sorgente. La distribuzione delle copie modificate può essere limitata, ma in questo caso devono essere permesse le "patch", cioè delle modifiche al codice che permettono di applicare le modifiche in fase di compilazione. La licenza inoltre può richiedere che venga mantenuto il nome dell'autore originale nei credits del programma. In realtà la comunità dell'open source è molto schizzinosa da questo punto di vista, e anche se questa clausola non è contemplata apertamente nella licenza, i casi di violazione di essa sono molto pochi, e chi non la rispetta viene rimproverato severamente e il suo prodotto non viene distribuito.
  5. Non ci deve essere nessuna discriminazione per persone o gruppi di persone. Il software "cresce" se viene a contatto con il maggior numero di persone possibile.
  6. Non ci deve essere nessuna discriminazione per campi di applicazione. Ad esempio, non può essere "open source per uso non commerciale".
  7. I diritti associati al programma devono essere applicati a tutti coloro a cui viene distribuito nello stesso modo, senza bisogno di licenze aggiuntive, per evitare i "non disclosure agreements".
  8. La licenza non deve dipendere dal software con cui viene distribuito il prodotto. Se un certo programma open source viene distribuito insieme a un sistema operativo o da solo non ci devono essere differenze.
  9. Non deve contaminare altro software. La licenza non deve porre condizioni sul software con cui viene distribuito il prodotto a cui si riferisce. Ad esempio, non si può mettere come condizione che venga distribuito solo con altro software open source.

Questo tipo di licenze sono molto meno restrittive per quanto riguarda la distribuzione la modifica del software, ma al contempo tengono conto dei diritti degli autori. Il software open source non è "terra di nessuno", ma software soggetto a copyright degli autori, e ciascun punto della Open source definition è rivolto alla tutela dell'autore ed al miglioramento del software secondo un modello di tipo "bazaar".

La cattedrale ed il bazaar

La definizione di metodi "a cattedrale" e "a bazaar" è di Eric S. Raymond, nel suo famoso documento "The cathedral and the bazaar". Facciamo l'esempio di un prodotto software "usuale" e di un prodotto open source.
Nel primo caso lo sviluppo viene fatto da poche persone, i dipendenti dell'azienda. Il tempo che passa tra il rilascio di una versione e quello della successiva è lungo. Se un utente ha un problema, può solo comunicarlo alla ditta produttrice, e non risolverlo da solo. Lo sviluppo del software è quindi paragonabile a una cattedrale, dove tutti stanno in silenzio a meditare. Nel caso di un software open source, l'autore crea una base minima del programma, e lo rilascia al pubblico. Gli utenti, avendo il codice sorgente, non si devono limitare a constatare un problema, ma possono risolverlo e inviare la correzione all'autore, che quindi emanerà una nuova versione del software. Se il progetto è di una certa dimensione, l'autore (che diventerà coordinatore del progetto) può delegare quello che vuole ad altri. Lo sviluppo di questo tipo viene detto "a bazaar". Se voglio creare un prodotto non open source, devo cominciare da zero, perchè non ho disponibili i sorgenti di altri programmi simili.
Se voglio fare lo stesso per un programma open source, posso tranquillamente utilizzare il codice già scritto da altri e disponibile in rete. È chiaro dunque che, anche se un prodotto proprietario può contare sul supporto economico di un'azienda, i prodotti open source sono sostenuti da una rete di contributi che non solo rendono più veloce il loro sviluppo, ma riescono ad andare a coprire proprio le necessità degli utenti.

Chi ha familiarità con il mondo di internet sicuramente è venuto a contatto con degli esempi di software open source, anche se probabilmente non se ne è mai accorto: il DNS, che gestisce le corrispondenze tra indirizzi numerici (del tipo 192.168.1.2) e letterali (del tipo www.pluto.linux.it) è un software open source.
Apache, uno dei più diffusi Web Server, è open source. Perl, un linguaggio di programmazione molto usato anche per scrivere script CGI, è open source. Ma i due esempi più significativi sono il progetto GNU, una raccolta di programmi per UNIX, e Linux.

Linux

Cos'è Linux? Linux è un sistema operativo open source, reperibilein internet o acquistabile in cd-rom a cifre molto basse, che gira sui PC e su calcolatori di diverso tipo, quali Mac, Alpha ed altri. Contiene tutte le funzionalità più avanzate dei sistemi operativi moderni (uso della rete, ambiente grafico, ambienti di sviluppo... e persino giochi) e funziona decisamente meglio dei sistemi della monopolista Microsoft.
L'approccio di base è di tipo unix, ma ha al suo interno anche strumenti di compatibilità avanzati con gli altri tipi di sistema operativo, come ad esempio per la gestione dei protocolli di rete di Microsoft, per la condivisione di file e stampanti con le macchine windows, per la lettura e scrittura di dischi formattati Ms-DOS, Windows, Mac ed altro ancora.
Comprende anche dei programmi di emulazione per poter utilizzare programmi scritti per altri tipi di Unix, per DOS e per Windows.

Linux fu creato nei primi anni '90 da uno studente finlandese, Linus Torvalds, che, come esercizio, pensò di migliorare il sistema Unix con sorgenti disponibili allora allora più diffuso, Minix. L'intuizione di Linus lo portò a rendere disponibile la prima versione del nucleo del suo sistema operativo, la 0.02, e chiedere ai frequentatori della rete di dargli una mano a svilupparlo. Oggi il kernel di Linux è arrivato alla versione stabile 2.0.36 ed alla versione di sviluppo 2.1.131 e, pur essendo sempre coordinato da Linus, viene sviluppato cooperativamente da centinaia di programmatori di tutto il mondo e chiunque può contribuire.

Come ottenere il Linux

Linux può essere scaricato dalla rete senza nessun costo aggiuntivo, o se ne può acquistare un CD-ROM, di cui viene pagato solo il supporto fisico (il cofanetto Infomagic, uno dei più diffusi, contiene 6 cd-rom con le principali distribuzioni di Linux e viene commercializzato a circa 40mila lire).

Anche se Linux in sè è disponibile gratuitamente, diverse ditte hanno costruito delle "distribuzioni", che possono essere considerate delle versioni "impacchettate" di Linux. Le maggiori distribuzioni includono il kernel di Linux, il supporto di rete, centinaia di programmi, software di sviluppo, una o più interfacce grafiche e molto di più.
Oltre a tutto questo, le distribuzioni includono un qualche programma di installazione e molte anche l'assistenza.

Alcune di queste ditte distribuiscono gratuitamente la loro distribuzione, compreso il software di installazione, sulla rete; altre fanno pagare una piccola somma per il programma di installazione (normalmente la cifra è inferiore alle 150mila lire).

Il progetto GNU

Abbiamo dunque che il kernel di Linux viene distribuito insieme a molti altri programmi open source; la maggior parte di essi sono presi dal progetto GNU (una definizione ricorsiva per "GNU's Not Unix", un sistema Unix open source, migliore degli altri Unix); questo progetto, fondato dal padre del software libero, Richard Stallman, raccoglie sotto di sè innumerevoli programmi, tutti open source e soggetti a licenza GPL. Stallman fu il primo ad intuire che anche i programmatori che volevano lasciare "liberi" i loro programmi dovevano essere tutelati da un copyright... dato che questo tipo di copyright non pone restrizioni sull'utilizzo del software, ma cerca di tutelare la libertà del software stesso, in modo che nessuno possa appropriarsi di codice libero e utilizzarlo per scrivere software commerciale, viene anche chiamato "copyleft", con l'ironia tipica dei programmatori, che poverini, stando tutto il giorno davanti ad un monitor devono trovare qualcosa con cui divertirsi ;-)

Linux, dunque, o meglio GNU/Linux, è uno dei principali esempi del fatto che il software open source è ormai una realtà dell'informatica dioggi. Linux viene usato come server di rete nelle università e da molti fornitori italiani (e non solo) di servizi internet.
Viene utilizzato nelle amministrazioni pubbliche (ad esempio per la rete di controllo dei trasporti pubblici in Trentino o per la rete della provincia di Pesaro), per la gestione di grandi quantità di dati, come nel caso dei principali esperimenti dell'Istituto Nazionale per la Fisica Nucleare, o addirittura per la creazione degli effetti speciali nel film "Titanic", e per molte altre cose.

Sviluppo sostenibile e supporto globale

Linux può girare efficacemente anche su computer "di scarto", come i 386 e i 486, permettendo una vita più lunga per l'hardware utilizzato (al contrario dei sistemi di tipo Windows che richedono un aggiornamento dell'hardware - e del software - continuo, comportando spese molto ingenti), e quindi può essere anche impiegato per lo sviluppo sostenibile di aree in via di sviluppo, e diminuisce l'inquinamento dovuto allo scarto di materiale scarsamente riciclabile come i vecchi computer.

Linux ha alle sue spalle un supporto tecnico estremamente efficace, formato da tutti i programmatori e gli appassionati del sistema operativo, che su Internet, a titolo volontario, forniscono aiuto a chi ne ha bisogno. È inoltre corredato da una grande mole di documentazione a tutti i livelli, per la maggior parte in inglese, ma che sta venendo tradotta anche in italiano, che permette a chiunque di accedere alle possibilità del sistema.

La metodologia di sviluppo di Linux permette anche un adattamento velocissimo agli eventuali problemi di sicurezza che si vengono a creare: essendo disponibili i sorgenti, chiunque può apportare le modifiche per chiudere un buco di sicurezza, ed è provato dall'esperienza che la diffusione di tali modifiche è molto più rapida che nel caso dei sistemi commerciali, dove questi aggiornamenti "fuori programma" sono molto lenti, se anche vengono fatti.

La domanda che mi sento fare a questo punto è "se è tutto così bello perché non avevo mai sentito nominare Linux?".
Da un lato perché l'uomo più ricco del mondo può autocelebrarsi ed essere celebrato mentre noi possiamo solo fare passa-parola. Dall'altro perché in effetti dei problemi ci sono, e nemmeno io a volte mi sento di proporre una macchina Linux.

Linux, pregi e... difetti

Il nostro sistema è certamente più difficile da usare di un sistema Windows, anche se molto è semplicemente una questione di abitudine: il sistema di tutti è noto, il sistema diverso rompe con le nostre abitudini. In parte la difficoltà maggiore è una realtà, perché trattandosi di un sistema multi-utente talvolta bisogna scontrarsi con problematiche di amministrazione di sistema (ma, allo stesso modo, NT richiede competenze da amministratore di sistema: questo è tanto più inevitabile quanto più il sistema è potente).

Un grosso vantaggio che ha Linux da questo punto di vista è che tutta la documentazione necessaria è disponibile sulla macchina, e ci sono potenti strumenti per la ricerca delle informazioni, che però bisogna imparare ad usare.

Per fare i classici lavori da ufficio occorre comprare il programma apposito. Purtroppo non esistono ancora programmi gratuiti che assomiglino a word o excel: abbiamo dei potentissimi strumenti, ma la maggior parte di questi non lavorano in ambiente grafico (il solo fatto di non richiedere la grafica li rende molto più veloci e potenti, ma questo in molti casi non interessa).

Questo fatto è dovuto non ad uno scarso aggiornamento dei programmatori Linux, ma al fatto che in una comunità di "tecnici" si sente meno la necessità di strumenti di office automation rispetto che in una realtà commerciale: i programmatori preferiscono scrivere programmi che poi utilizzeranno, ed è difficile che ad un programmatore servirà un foglio di calcolo.
Da questo punto di vista le cose stanno però cambiando, sia perché il numero sempre maggiore di utenti che possiamo vantare spinge sempre più persone a collaborare, dando una spinta motivazionale anche a progetti finora trascurati ma necessari, sia perché la sempre maggiore diffusione di Linux sta portando molte ditte produttrici di software a considerarlo come terreno fertile per applicazioni che nel mondo Microsoft hanno poca diffusione.

Non più solo per pochi eletti...

In effetti, stanno nascendo ambienti grafici molto interessanti e probabilmente arriveranno a breve anche i programmi da ufficio open source. Nel frattempo, l'unica possibilità di avere programmi di quel tipo è comprarli: esistono due "suite" di programmi abbastanza noti: Applixware e StarOffice (quest'ultimo disponibile gratuitamente per uso non commerciale). Il problema di questi pacchetti è che per essere accettati devono essere compatibili con gli standard imposti dalla Microsoft; di conseguenza questi prodotti si rivelano piuttosto pesanti per la macchina se paragonati ai normali programmi Linux, anche se sono comunque più veloci degli equivalenti su Windows.

Un altro problema non risolto ancora in modo soddisfacente è quello dello scambio dei dati tra i sistemi Microsoft e i sistemi free. Purtroppo quando si lavora nel campo dell'informatica occorre spesso fronteggiare dati generati dal monopolista del settore; il monopolista copre la sua posizione, come si è visto, evitando di documentare il formato dei suoi dati e dei suoi protocolli di comunicazione di rete. Mentre il protocollo di rete è stato decodificato e le reti eterogenee funzionano egregiamente, ci sono ancora dei problemi con i formati dei dati (e ci saranno sempre finchè ci sarà il monopolio, visto che cambia il suo formato ogni anno o due). Sia StarOffice che Applixware sono in grado di leggere e scrivere dei file in formato word-6, ed è in preparazione una versione di StarOffice che faccia la stessa cosa per Word97.
In ogni caso, mancano ancora i programmi liberi per effettuare questa conversione perché Microsoft chiede una royalty a chiunque sviluppi programmi che utilizzano i loro standard.

È interessante notare che, al contrario, tutti i protocolli Internet sonodocumentati con precisione, cosa che ha permesso a Microsoft di saltare sul treno di internet.

Mercato e Software libero

Fino a questo punto il discorso si è basato principalmente sul lato etico della questione; vediamo ora il lato economico.

L'eventuale commercializzazione del software open source può venire svolta da altre persone, che sono comunque tenute e lasciare all'acquirente completa libertà d'uso e di rivendita del prodotto che essi vendono. Il programmatore non deve essere costretto a diventare un commerciante se vuole continuare a lavorare. Allo stesso modo, non deve essere costretto a fare assistenza all'infinito ai programmi che ha scritto.

Esistono molte società che si occupano della distribuzione dei programmi liberi: producono i cd-rom, stampano i manuali, e pubblicizzano il prodotto. Si vedano per esempio www.redhat.com e www.suse.de.
Altre società vendono contratti di assistenza, perché un tecnico specializzato può risolvere qualsiasi problema su qualsiasi macchina, se i programmi installati sono distribuiti insieme al codice sorgente.
Questo tipo di approccio è completamente diverso da quello delle grandi aziende di informatica, perché chi compra un programma non può minimamente modificare la sua funzionalità, e se anche fosse tecnicamente possibile questo è espressamente vietato.

Si ha dunque una trasformazione dello scambio economico: dal pagamento per acquistare un oggetto (la licenza d'uso del software) si passa a pagare le competenze delle persone.
Il programmatore deve essere pagato per il proprio lavoro, ma una volta che il lavoro è stato svolto non sussiste alcun motivo per tenere nascosto il lavoro svolto, e tanto meno per essere pagati un'altra volta se lo stesso programma serve ad un'altra persona, visto che l'unico lavoro aggiuntivo è la copia del programma sul dischetto.
Al contrario il programmatore può essere pagato per la sua competenza sulprogramma sviluppato se c'è necessità di modificare il programma per un'esigenza diversa. È da notare che queste modifiche possono essere fatte da chiunque, e non solo dal programmatore che ha sviluppato il programma. In questo modo chi abbia bisogno di una modifica ad un programma sviluppato negli Stati Uniti non ha bisogno di contattare il programmatore originario ma, avendo a disposizione i sorgenti, può rivolgersi ad un qualsiasi programmatore della sua zona di provenienza.

di Eugenia Franzoni


PDF e Linux Copertina Trappola