prof. Nunzio Brugaletta

atapSO

EnneBi – Computer Science
AvantiIndietroInizio




Da Unix a Linux: lo sviluppo a bazar

Nel 1965 un gruppo di ricercatori dei Bell Laboratories (la compagnia telefonica degli Stati Uniti), della General Electric (grossa azienda che, fra l'altro, costruiva e commercializzava calcolatori) e del MIT si uniscono per realizzare Multics, un sistema operativo time-sharing. Fino ad allora, come si è già fatto notare in precedenza, il concetto esistente è quello della elaborazione batch.

Ritchie

Dennis Ritchie

Il progetto non andò a buon fine per motivi finanziari, ma si riuscì lo stesso a produrre versioni funzionanti di Multics. Il progetto venne chiuso nel 1969 ma un gruppo di persone, fra i quali Ritchie e Thompson continuò a lavorare producendo alla fine la prima versione di UNIX, chiamato così in contrapposizione, anche come struttura, a Multics. Laddove il primo era complesso, quest'ultimo era semplice: il kernel è il più semplice possibile includendo le funzionalità strettamente indispensabili, alle applicazioni si demanda il resto.

Thompson

Ken Thompson

La prima versione fu scritta in assembly ma c'era già l'intenzione di usare un linguaggio di alto livello e così fu scritto un linguaggio chiamato B che, modifica dopo modifica e grazie agli sforzi di Ritchie e Brian Kernighan, diventa nel 1972 il C. Il kernel fu riscritto in C avviando un processo rivoluzionario: fino a quel momento i sistemi operativi erano scritti in asssembly e quindi legati strettamente alla struttura hardware, ora, con l'utilizzo di un linguaggio ad alto livello viene introdotto il concetto di portabilità e il sistema operativo può governare hardware differenti.

Thompson andò, per un certo periodo di tempo, ad insegnare a Berkeley e quando andò via si posero le basi per quella che sarebbe diventata la BSD (Berkeley Software Distribuition), una delle distribuzioni di Unix.

Nel 1984 si stacca, dalla Bell, la AT&T Computer System che comincia a commercializzare il sistema operativo UNIX.

Stallman
Richard Stallman

È pure nel 1984 che Richard Stallman si dimette dal MIT e comincia a lavorare al progetto GNU. Inizialmente il lavoro al MIT era basato sulla condivisione del codice per consentire a chiunque di apportare miglioramenti al software che utilizzava. Era quella che da allora viene chiamata cultura hacker. Il termine, coniato all'interno del MIT, indica una persona in grado di scrivere un programma, compatto ed elegante, per risolvere un problema. Anche il nome scelto per il progetto fa riferimento ad una prassi diffusa nella cultura hacker: quella di usare nomi ricorsivi. Infatti la sigla sta per Gnu is Not Unix.

L'obiettivo, dichiarato già a cominciare dal nome scelto per il progetto, era quello di scrivere un sistema operativo che avesse le caratteristiche di potenza e versatilità di Unix, fosse in definitiva uno dei dialetti di Unix, ma non includesse codice usato in Unix e quindi proprietario. Si trattava di riscrivere da capo un nuovo sistema operativo.

Chiaramente non basta avere il kernel per poter disporre di un sistema operativo utilizzabile e, d'altra parte, anche per poter scrivere un minimo di codice occorre dotarsi degli strumenti di lavoro. Gli sforzi di Stallman e della società da lui fondata nel 1985, la Free Software Foundation, furono inizialmente quelli di scrivere gli attrezzi del mestiere: nascono così Emacs l'editor tuttofare che ebbe subito un grosso successo e una larga diffusione nella sua implementazione per Unix, GCC (Gnu C Compiler) un compilatore C, che diventa in seguito anche una suite di compilatori, la shell Bash, il debugger GDB.

Uno dei meriti principali attribuiti a Stallman è quello di aver ideato anche la licenza GPL (GNU Public License) con l'obiettivo di realizzare software libero ma, principalmente, di mantenerlo tale. Era la risposta ad uno dei problemi di sempre: gli sviluppatori scrivevano e diffondevano software freeware, poi qualche produttore se ne appropriava, lo includeva in qualche suo prodotto e applicava licenze più restrittive. Con l'applicazione della licenza GPL, una parte di codice nata libera resta libera. Un software con licenza commerciale può comprendere una parte rilasciata con licenza GPL, ma le libertà ricevute assieme alla componente GPL, devono essere mantenute (nella parte soggetta a GPL o ai suoi derivati. La libertà non pervade tutto il software) e trasmesse a quelli che la utilizzeranno successivamente. È questo quello che si vuole dire quando si afferma che la GPL è una licenza di tipo virale.

La scrittura del kernel, uno degli obiettivi del progetto GNU, tardava a venire alla luce, ma ci pensò nel 1991 un giovane finlandese.

Torvalds
Linus Torvalds

Linus Torvalds frequentava ad Helsinki un corso sui Sistemi Operativi. Il punto di riferimento universitario allora era il sistema Minix, una implementazione a scopo puramente didattico, che aveva molto seguito e a cui era dedicato un newsgroup molto frequentato. Anche Torvalds resta affascinato da Minix, compra un PC e comincia col creare due processi che funzionavano in multitasking, piano piano aggiunge un file system, la gestione dell'hard disk e si ritrova con un kernel. A questo punto decide di mettere a disposizione sul server FTP dell'università il lavoro fatto, mette in condizione il kernel di lavorare con gli altri strumenti del progetto GNU, adotta la licenza GPL e fa una cosa strana che non ha precedenti: annuncia nel newsgroup di Minix la disponibilità del software e invita chiunque a collaborare, compresi quelli frustrati da esperienze negative di software non funzionante su Minix.

La risposta fu eccezionale: tantissime persone risposero da tutto il mondo e crebbero ancora quando la rete Internet si diffuse sempre di più. La prima versione ufficiale del kernel, la 1.0, ebbe la luce, con il nome GNU/Linux, nel 1994 e da allora le versioni si succedono frutto di un modo di cooperare unico e che mette bene in evidenza E. Raymond, uno dei guru del software libero:

Linux stravolse gran parte di quel che credevo di sapere. Per anni avevo predicato il vangelo Unix degli strumenti agili, dei prototipi immediati e della programmazione evolutiva. Ma ero anche convinto che esistesse un punto critico di complessità al di sopra del quale si rendesse necessario un approccio centralizzato e a priori. Credevo che il software più importante (sistemi operativi e strumenti davvero ingombranti come Emacs) andasse realizzato come le cattedrali, attentamente lavorato a mano da singoli geni o piccole bande di maghi che lavoravano in splendido isolamento, senza che alcuna versione beta vedesse la luce prima del momento giusto.

Rimasi non poco sorpreso dallo stile di sviluppo proprio di Linus Torvalds: diffondere le release presto e spesso, delegare ad altri tutto il possibile, essere aperti fino alla promiscuità. Nessuna cattedrale da costruire in silenzio e reverenza. Piuttosto, la comunità Linux assomigliava a un grande e confusionario bazar, pullulante di progetti e approcci tra loro diversi. Un bazar dal quale soltanto una serie di miracoli avrebbe potuto far emergere un sistema stabile e coerente.

Il fatto che questo stile bazar sembrasse funzionare, e anche piuttosto bene, mi colpì come uno shock. Mentre imparavo a prenderne le misure, lavoravo sodo non soltanto sui singoli progetti, ma anche cercando di comprendere come mai il mondo Linux non soltanto non cadesse preda della confusione più totale, ma al contrario andasse rafforzandosi sempre più a una velocità a malapena immaginabile per quanti costruivano cattedrali. (Eric Raymond)




AvantiIndietro - Inizio

http://ennebi.solira.org

ennebi@solira.org