[precedente] Novità Linux - Copertina - Prop. Calcolo [successivo]

Intervista


Intervista a Linus Torvalds (in italiano)

In questo numero ripubblichiamo l'intervista a Linus già pubblicata sull'ultimo numero, però tradotta in Italiano.

Ricordo che questa traduzione italiana è già apparsa sul numero di Giugno di "Computer Programming". Si ringrazia la casa editrice InfoMedia (www.infomedia.it) per aver permesso di riutilizzare il materiale sulle pagine Pluto.

Buona lettura.

di Alessandro Rubini


Ti trovi bene negli Stati Uniti? Personalmente preferivo avere un coordinatore finlandese che un altro condottiero americano... come ti senti da questo punto di vista?

Sono molto contento del trasferimento: stavo veramente bene all'università di Helsinky, ma ho deciso che valeva la pena di provare qualcosa di diverso, e finora l'esperienza è stata del tutto positiva.

Sono d'accordo che la Finlandia è molto più ``neutrale'' sotto vari punti di vista e che ciò ha avuto i suoi vantaggi per lo sviluppo di Linux: non credo che a qualcuno dispiaccia veramente la Finlandia, mentre molte persone manifestano antipatia per gli Stati Uniti o addirittura li disprezzano apertamente. Quindi in un certo senso il mio spostamento può essere stato negativo, ma ritengo che molte persone si fidino di me più come persona che come finlandese, per cui non sento questo come un problema rilevante.

Trasferirsi negli Stati Uniti ha significato avere un clima molto migliore (nonostante questo sia stato uno degli inverni più piovosi da molto tempo a questa parte qui nella zona di San Francisco), ed è anche stato molto interessante. Nonostante mi sia piaciuto molto il mio lavoro all'università di Helsinki, le nuove cose che sto facendo sono molto più coinvolgenti - più sulla cresta dell'onda, per così dire.

È noto che gli Stati Uniti hanno una legislazione molto restrittiva sull'esportazione di materiale crittografico, considerato di importanza militare [NdT: in pratica è proibita l'esportazione di software che implementi una algoritmo di crittografia abbastanza sicuro, solo gli algoritmi decifrabili possono essere esportati dagli USA]. Queste leggi avranno degli effetti sullo sviluppo di estensioni crittografiche per Linux?

Non mi sembra un vero problema. L'idiozia delle leggi USA sull'esportazione di crittografia era un problema già prima che io venissi qui: principalmente perché se e quando aggiungeremo la crittografia ``forte'' al kernel dovremo comunque renderla modulare [NdT: un modulo del kernel è codice compilato che si può caricare nel sistema durante il funzionamento dello stesso. Se una funzionalità è disponibile in forma di modulo è possibile distribuirla separatamente dal nucleo del sistema, e può quindi essere rimossa quando prodotti americani siano destinati all'esportazione.]. Questo per consentire ai produttori di CD Linux, molti dei quali si trovano negli Stati Uniti, di escludere il software crittografico per poter vendere nel resto del mondo. Quindi il fatto che io mi trovi in America non ha in pratica cambiato la situazione -- ha solo reso evidente che io non posso essere la persona che lavorerà sulla crittografia, la qual cosa era comunque già abbastanza ovvia in quanto non sono un vero esperto in quest'area.

Ad ogni modo, indipendentemente da quanto ho detto prima, spero sinceramente che le leggi USA sulla crittografia vengano cambiate in un futuro non lontano. Queste leggi hanno reso molte situazioni più difficili di quanto avrebbero dovuto essere (in tutta sincerità, gli Stati Uniti non sono la sola nazione ad avere questi problemi: i francesi hanno problemi anche maggiori in questo campo e stanno cercando di indurre altri stati europei sulla stessa strada [NdT: le leggi francesi proibiscono ai cittadini l'uso di materiale crittografico]; fortunatamente i francesi sono una piccola frangia isolata in questo campo mentre gli Stati Uniti sono sempre stati un problema serio, a causa del loro essre così centrali riguardo alla tecnologia dell'informazione).

Hai mai pensato di abbandonare il tuo ruolo come coordinatore di Linux o è ancora divertente come lo era all'inizio?

Non ho mai considerato seriamente di abbandonare il mio posto -- le uniche volte in cui ho preso in considerazione la questione è stato quando qualcuno mi ha chiesto chi sarebbe stato il successore nel caso io non fossi più stato interessato. Linux è stato sempre così divertente da coordinare che nonostante questo lavoro occupi, ovviamente, molto del mio tempo, ho sempre ritenuto che ne valesse ampiamente la pena.

Una curiosità: per quanto tempo al giorno scrivi codice, e qual'è la tua principale attività adesso?

Normalmente non occupo più molto tempo scrivendo codice per Linux: ogni tanto mi trovo con una serie di cose da fare e in quel caso programmo tutto il giorno per qualche settimana o giù di lì, ma questo capita abbastanza raramente; accade principalmente quando ci sono dei cambiamenti fondamentali nel kernel che voglio veder completati. Durante l'ultimo anno questo è successo quattro o cinque volte, principalmente a proposito del supporto SMP [NdT: Simmetric Multi Processor, sono i calcolatori con più di un processore a bordo] o alla bufferizzazione del disco chiamata ``dentry'' [NdT: si tratta di una modifica strutturale in come è gestita la buffer-cache in memoria, implementata nell'estate 1997].

La maggior parte del tempo la passo a leggere e a rispondere alla posta elettronica -- coordinando altri che lavorano sul codice, commentando sulle idee proposte, e preparando le patch [NdT: si chiama ``patch'' (pezza) l'insieme delle modifiche da apportare ad una versione di un programma per aggiornarlo alla versione successiva]. Questo è di gran lunga la maggior parte del mio impegno: potrei dire che programmare è il 10% mentre coordinare è il 90% del lavoro.

Come hai fatto a scrivere il nucleo di un sistema operativo gratuito e riuscire in ogni caso a guadagnarti da vivere?

Inizialmente ero uno studente universitario all'università di Helsinki. In Finlandia ciò significa essere finaziati dal governo per alcuni anni per poter finire gli studi, inoltre c'è la possibilità di ottenere prestiti speciali per studenti. Immagino che in Italia ci sia qualcosa di simile, anche se non completo come il sistema finlandese.

Dopo un anno o due sono stato assunto dall'università, prima come assistente e poi come ricercatore; l'università mi ha anche attivamente incoraggiato ad occuparmi nel contempo di Linux.

Adesso lavoro per una ditta che, naturalmente, è commerciale, ma anche qui mi trovo a fare un sacco di lavoro su Linux, anche durante le ore di lavoro: nonostante Transmeta non venda Linux né niente di simile, Linux viene molto usato all'interno della società, per cui il fatto che io continui a lavorarci sopra è chiaramente un aiuto per l'azienda.

Quindi sono sempre stato in grado di occuparmi di Linux mentre mi occupavo del mio ``vero'' lavoro, sia che stessi studiando o lavorando per l'università o lavorando per una entità commerciale. Non c'è mai stata una vera incompatibilità, anche se ovviamente il mio orario di lavoro non è esattamente di otto ore al giorno.

Alcune ditte, come la Cygnus Solutions, offrono supporto commerciale per il free software [NdT: tali ditte vendono contratti di assistenza per il free software, oppure vengono pagate per sviluppare delle estensioni ai programmi free, e tali estensioni rimangono a disposizione di tutti come free software]. Perché non hai fatto qualcosa del genere?

Semplicemente, non ho mai provato interesse a trasformare una qualche parte di Linux in un'attività commerciale: ciò mi avrebbe sottratto molto tempo per gestire la ditta o per attività simili, e questo non è mai stato ciò che mi interessava.

Una scelta del genere avrebbe anche voluto dire considerare Linux dal punto di vista economico: non sarei mai stato libero di fare ciò che volevo dal lato tecnico, perché sarei stato limitato da vincoli derivanti dalla necessità di mantenere me e la mia famiglia. Al contrario, lavorando all'università o qui in Transmeta mi guadagno da vivere senza dover coinvolgere in questo alcuna decisione relativa a Linux; quindi sono libero di fare ciò che preferisco riguardo a Linux senza dovermi preoccupare di pagare l'affitto ogni mese.

Mi sento molto più felice non avendo questo tipo di pressioni su Linux; penso anche che molti altri sviluppatori la pensino allo stesso modo, perché non si devono preeoccupare che il mio giudizio tecnico possa essere viziato da questioni economiche.

Pensi di aver cambiato il mondo o di aver soltanto dato fuoco alla paglia?

Io ho cominciato, e mi sento molto fiero di questo. Non penso di ``aver cambiato il mondo'', ma mi sento privilegiato nell'essere stato uno strumento nel cambiarre molte vite; è bello sapere che quello che fai è veramente importante per molte altre persone.

Non arriverei al punto di dire ``dà significato alla mia vita'', ma Linux è decisamente una parte della mia vita, se capisci cosa voglio dire.

Qual'è la tua opinione del lavoro e della filosofia di Richard Stallman? [NdT: Richard Stallmann (detto RMS dalle sue iniziali) è in qualche modo l'ideatore e il ``profeta'' del concetto di Free Software e ha creato la Free Software Foundation, il cui progetto GNU ha fornito gran parte dei programmi che fanno parte di un sistema Linux; ``Linux'' è infatti solo il kernel del sistema operativo completo]

Personalmente non amo mescolare questioni politiche e tecniche, inoltre su molte cose non sempre sono d'accordo con RMS. Per lui ci sono molte questioni quasi dogmatiche a proposito di software, mentre io sono molto più pragmatico su molte cose. Il risultato è che sappiamo di non essere d'accordo su alcuni aspetti e facciamo in modo di non lavorare troppo vicini, perché sappiamo che non funzionerebbe molto bene.

Da quanto detto potrebbe suonare come se non apprezzassi RMS, e allo stesso tempo che ciò non sia del tutto vero. Naturalmente RMS è stato la forza che ha guidato la maggior parte del movimento del ``free software'', o ``sorgente aperto'' , e senza di lui il mondo sarebbe meno ricco [NdT: la definizione ``open source'' è stata introdotta ultimamente perché il termine ``free'' in inglese vuol dire ``gratuito'', oltre a ``libero'', per cui veniva spesso interpretato erroneamente. L'espressione ``free software'' non si riferisce al valore economico del prodotto ma alla libertà di copia per gli utenti e alla libertà di modifica per i programmatori]. RMS ha veramente bisogno di essere dogmatico riguardo al software per poter essere così motivato.

Quindi, credo che il modo migliore di esprimermi sia dire che ammiro realmente RMS, ma che non vorrei essere lui, perché abbiamo modi diversi di vedere il mondo.

Sul lato pratico, quando si prevede che uscirà Linux 2.2? E quali sono le principali differenze tra Linux 2.0 e il prossimo 2.2 [NdT: Le versioni del kernel con numero pari sono quelle stabili, destinate all'uso da parte di chiunque, mentre le versioni dispari rispecchiano lo stato attuale dello sviluppo, per cui possono contenere dei bachi. Attualmente la versione stabile e' la 2.0 e si sta lavorando sulla 2.1, che porterà ad una distribuzione stabile chiamata 2.2. Si noti che ogni pacchetto di Linux ha un numero di versione diverso; qui si parla solo del nucleo]?

Adesso sembra che la versione 2.2 dovrebbe essere pronta per l'inizio dell'estate o giù di lì, ma è difficile da dire: ci sono alcune cose che devono essere sicuramente sistemate, e prima che questo succeda non ha alcun senso pensare alla nuova versione. Adesso c'è un brutto problema di prestazioni per TCP che sta bloccandoci; ogni cosa funziona correttamente, ma il problema è abbastanza serio da non poter immaginare una versione 2.2 prima che venga corretto.

Le modifiche che ci saranno nella 2.2 sono principalmente un supporto molto più maturo per le novità introdotte nella versione 2.0, cioè SMP e il supporto per più di una architettura. Sono state inserite molte altre cose (il nuovo codice per ``dentry'' nominato prima, la completa riscrittura di NFS e altro) ma l'SMP e la maturità architetturale sono le caratteristiche più fondamentali che ci saranno in Linux 2.2.

Bruce Perens, il coordinatore della distribuzione Debian, afferma ``dominazione del mondo: 2003'' [NdT: Linus dice scherzosamente che il suo obiettivo è il dominio del mondo; Bruce Perens si riferisce quindi alla possibile imposizione di Linux come sistema operativo predominante]. Credi che sia una previsione realistica? Secondo te il concetto di software libero diventerà popolare nel mercato di massa? A questo riguardo, cosa pensi della mossa di Netscape? [NdT: La Netscape ha annunciato che distribuirà la prossima versione del suo Navigator insieme al codice sorgente, come software libero].

Naturalmente il discorso sulla ``dominazione del mondo'' è sempre un'sagerazione ma io credo che, sì, non mi sembra affatto irrealistico che nello spazio di cinque anni il movimento del free software e Linux abbiano un impatto significativo. La scelta di Netscape di passare ad un sistema ``open source'' è un primo segnale di questo cambiamento, e credo che vedremo altri fare cose simili.

Secondo te, come coesisteranno i vari sistemi operativi free?

Credo che probabilmente le cose continueranno a funzionare come adesso: i vari gruppi sono a conoscenza gli uni degli altri ma non c'è alcuna cooperazione organizzata o ufficiale. Il punto principale portato avanti da Linux è che c'è sicuramente spazio per più di un unico sistema operativo (specialmente se il sistema operativo in questione è uno malfunzionante prodotto da Microsoft ;) e personalmente non credo che questo cambierà; i vari FreeBSD e gli altri sistemi operativi saranno ancora utilizzati. Forse le cose non avranno la stessa forma di adesso (potrebbe esserci più specializzazione tra i vari sistemi o altre differenze), ma non vedo grosse questioni su questo punto...

Non credi piuttosto che lo sviluppo di Wine [NdT: si tratta dell'emulatore di Windows che gira sotto Linux e altri sistemi free] e altri strumenti possa portare alla coesistenza di due sistemi di simile valore tecnico, uno dei quali sia libero e l'altro proprietario, e che tali sistemi possano far girare gli stessi programmi applicativi?

No, penso che lo sviluppo di Wine sarà un passo importante nel campo dei sistemi operativi per il PC, ma che quel passo sia piuttosto orientato ad appianare il campo di gioco; quando più o meno tutti potranno far girare gli applicativi Windows più comuni come MS Office e altri, i sistemi operativi potranno competere davvero sulle loro capacità in altri settori.

Quindi, più che avere due sistemi di simile valore tecnico penso che avremo molti sistemi capaci di eseguire gli stessi applicativi fondamentali, l'enfasi sarà piuttosto su altri aspetti. Microsoft, per esempio, ha sempre enfatizzato la mediocrità e il grosso volume di mercato, mentre Linux ha sempre puntato su questioni più tecniche, e continuerà a farlo.

Al momento non abbiamo applicativi da ufficio (elaboratori di testi, fogli elettronici, ...) che siano ``liberi''. Si tratta solo di aspettare o credi che questi programmi saranno resi disponibili solo da società commerciali?

Credo che ci sarà sempre una nicchia per i programmi commerciali; mentre io credo che vedremo proliferare gli applicativi da ufficio ``liberi'', non penso che abbiamo necessariamente bisogno che tali applicativi esistano.

Il motivo per cui personalmente desidero avere un sistema operativo free con le sue applicazioni fondamentali è che sono convinto che se la base non fosse stabile e l'utente non potesse modificarla per adattarla ai propri bisogni, ci sarebbero grossi problemi nel fare le cose. Ma quando si parla di altre aree, queste questioni non sono più problemi fondamentali; a quel punto non è così importante avere libero accesso ai sorgenti.

Talvolta si sente parlare di cosiddetti ``standard'' le cui specifiche rimangono però proprietarie, come I2O. Si tratta dell'ultimo rantolo di aziende che stanno morendo o è il free software che si trova a rischio [NdT: Normalmente, perché uno standard sia accettato la sua documentazione deve essere liberamente disponibile; talvolta però succede che grosse aziende si avvalgano della loro posizione dominante e pubblicizzino dei protocolli che non sono affatto documentati, definendoli come ``standard''. Uno di questi, I2O (un bus di input/output) ha fatto molto scalpore perché le specifiche costavano migliaia di dollari ed era esplicitamente vietato distribuire codice sorgente per i driver di periferiche I2O]?

Non mi preoccupo molto per I2O e altri standard proprietari. L'idea di uno standard che rimanga proprietario ha sempre fallito -- tutti gli standard di successo al giorno d'oggi sono abbastanza aperti. A volte essi sono proprietari perché chi li ha creati ha abbastanza influenza da imporre questa scelta da solo; non credo però che questo tipo di influenza esista più tranne che per Intel e Microsoft, e anche loro adesso vengono erosi dalla concorrenza.

Qual'è la tua posizione a proposito della disponibilità di moduli per Linux in forma solo compilata? [NdT: i device driver per Linux possono essere distribuiti come ``moduli'', come spiegato prima. La licenza con cui è distribuito il kernel permette di distribuire tali moduli senza rendere disponibile il sorgente; attualmente quasi tutti i moduli sono distribuiti in forma sorgente, in C, ma le opinioni sulla possibilità di una distribuzione binaria sono controverse]

Personalmente accetto tali moduli, ma non li supporto mai e non li apprezzo.

Il motivo per cui non rifiuto i moduli in forma binaria è che in molti casi si può avere un driver che non è stato scritto per Linux, ma per esempio funziona sotto SCO Unix o altri sistemi; può capitare che il costruttore della periferica all'improvviso si svegli e si accorga che Linux ha un'audience maggiore di altri gruppi. Il risultato è che voglia far girare il driver sotto Linux.

Però, siccome chiaramente il driver non è derivato da lavoro fatto su Linux (ha avuto una vita propria, indipendente da qualunque lavoro sotto Linux), non sento di avere il diritto morale di richiedere che sia posto sotto la GPL [NdT: la GPL è la licenza pubblica con cui viene distribuito il kernel di Linux, la sua traduzione italiana si può trovare su ftp://ftp.systemy.it/pub/develop/GPL.txt]. Perciò, l'interfaccia binaria per il caricamento dei moduli permette a questo tipo di moduli di esistere e di funzionare anche sotto Linux.

Questo non vuol dire che accetterei qualsiasi genere di modulo distribuito solo in forma compilata: ci sono casi in cui il codice è così chiaramente specifico per Linux che non avrebbe alcun senso senza il kernel Linux. In questo caso si tratta chiaramente di lavoro derivato dal kernel e come tale le scusanti espresse sopra non si applicano, per cui il driver cade automaticamente sotto la licenza GPL.

Cosa pensi della questione KDE-Qt? Credi che Gnome riuscirà ad emergere [NdT: Questa è una questione ``calda'' nel mondo Linux; KDE è un ambiente grafico integrato che sta acquisendo popolarità. È free e molto ben fatto, ma si basa su librerie (Qt) che sono gratuite ma non sono free software. Gnome è un progetto di ambiente grafico completamente libero, il cui sviluppo è però abbastanza arretrato rispetto a KDE]?

Personalmente apprezzo le librerie Qt [NdT: da un punto vista tecnico], e KDE sembra procedere molto bene. Preferisco restare in attesa e guardare cosa succede, per vedere se Gnome può riuscire altrettanto bene.

Una sfida interessante è la ``riservazione di banda'' nel sottosistema di rete; credi che Linux potrà gestirla in un prossimo futuro [NdT: alcune applicazioni, come le teleconferenze, funzionano molto meglio se possono richiedere alla rete di prenotare una certa performance di trasmissione dati. Questa funzionalità risulta difficile da integrare in TCP/IP, che è un protocollo ``best effort'', in cui i vari applicativi si dividono la capacità di rete senza prenotazioni; le modifiche richieste al kernel per implementare la riservazione di banda sono sostanziali.]?

Su questa domanda devo passare la mano. Non è una delle aree in cui sono coinvolto personalmente o a cui sia interessato, per cui non è una cosa in cui sarò coinvolto con sforzi personali. Questo è il modo in cui funziona Linux: le cose sono fatte dalla gente che ne ha bisogno o che le desidera, se poi i risultati hanno senso in un contesto più ampio vengono integrati nel sistema...

Cosa pensi del fenomeno Java? Hai mai considerato la possibilità di integrare una macchina virtuale Java, come Kaffe [NdT: Kaffe è una macchina virtuale Java distribuita come free software], all'interno del kernel?

Ho sempre pensato che Java avesse troppo carico associato al linguaggio, e questo è ancora vero. Sinceramente spero che Java riesca ad emergere, ma personalmente sono molto pragmatico, e non salterò prematuramente sul carrozzone di Java.

Linux permette già di eseguire applicazioni Java senza alcun problema, e il fatto che il kernel si occupi solo di predisporre le cose e passarle ad un applicativo esterno invece che far girare direttamente la macchina virtuale lo considero solo un vantaggio [NdT: in Linux si possono eseguire direttamente i programmi Java, ma l'implementazione interna rispecchia il modo in cui vengono eseguiti gli script (chiamati ``batch'' su dos). Il programma, cioè, non viene eseguito direttamente ma viene passato ad un interprete esterno].

In molti si chiedono come mai il kernel è scritto in C e non in C++. Quai sono i motivi contrari all'uso del C++ nel kernel?

Il C++ avrebbe permesso di usare alcune funzionalità del compilatore che mi sarebbero piaciute, in effetti il C++ è stato usato per un breve lasso di tempo, poco prima di distribuire Linux-1.0, ma non si è rivelata una scelta molto utile e non credo che ci proveremo ancora in futuro, per svariate ragioni.

Un motivo è semplicemente che il C++ è molto più complesso del C, e il compilatore spesso fà cose di nascosto dal programmatore che non sono affatto ovvie quando si guarda il codice localmente. Sì, si possono evitare cose come le classi virtuali e quindi semplificare la situazione, ma la questione è semplicemente che il C++ permette molte cose che il C non permette, e questo può rendere più difficile successivamente trovare le cause dei problemi.

Un altro motivo della scelta è collegato al precedente, e si tratta della velocità e della stabilità dei compilatori. Il C++, essendo un linguaggio molto più coplesso, ha una propensione per avere compilatori con molti più errori, inoltre la compilazione è solitamente più lenta. Questa può essere considerata una questione di implementazione del compilatore, ma la complessità di fondo del linguaggio è certamente un cosa che può essere considerata oggettivamente dannosa per lo sviluppo del kernel.

Linus


[precedente] Novità Linux - Copertina - Prop. Calcolo [successivo]