Verso un'etica del software

Articolo per ``il giornale dell'ingegnere'', di Alessandro Rubini


In questi anni abbiamo assistito alla diffusione sempre più massiccia dello strumento "elaboratore elettronico", o "computer", che sta diventando un aiuto sempre più importante, quasi fondamentale, per svolgere la maggior parte delle professioni. Fin qui niente di nuovo; vorrei però incentrare l'attenzione su come la commercializzazione dei calcolatori e dei programmi che su di essi girano segua delle politiche molto differenti da quelle di qualunque altro prodotto, politiche che portano l'utente finale ad incontrare notevoli difficoltà.

Normalmente una persona che acquista un prodotto si rivolge ad una struttura che fornisce quello di cui ha bisogno; questa struttura commerciale e/o tecnica ha il compito di soddisfare le esigenze del cliente nel migliore dei modi, cercando di ottimizzare il bilanciamento tra costi, efficacia del prodotto e ``speranza di vita'' dello stesso. Quando il prodotto in questione, però, è materiale informatico, si nota una tendenza a dare all'utente quello che più lo vincola al mercato, offrendo prodotti più costosi del necessario, meno efficaci di quello che la tecnologia odierna permette e che non potranno svolgere il loro lavoro per più di un paio d'anni. Il cliente è spesso soddisfatto e crede di avere avuto il meglio perché il monopolio di fatto vigente nel settore presenta un solo modo di fare le cose, modo che non è affatto allineato con le potenzialità tecnologiche attuali. Alle grosse aziende che controllano il mercato non interessa soddisfare i bisogni dell'utente finale, quanto piuttosto far fruttare il più possibile la propria miniera d'oro.

Tutto ciò è profondamente contrario all'etica professionale di qualunque lavoratore, che deve offrire il meglio ai propri clienti; credo che un professionista dell'informatica debba percorrere altre strade e fornire ai propri clienti soluzioni alternative a quelle largamente pubblicizzate oggi. Pensiamo all'ingegneria civile: chi sviluppa un progetto lo consegna al suo cliente, permettendogli di farselo modificare da un altro professionista; inoltre, tutti possono vedere quello che hanno fatto gli altri, studiare il risultato e riutilizzare le idee che ogni progetto esprime.

Perché, allora, questo modo di lavorare, comune a tutte le scienze, non deve applicarsi anche all'informatica? Forse perché i programmi vengono ormai visti come cose diverse da quello che effettivamente sono. La chiave per parlare di software e di servizi informatici secondo me sta quindi in una corretta definizione di cosa sia un programma; le politiche di produzione e di commercializzazione dei programmi stessi dipendono principalmente da questo.

Cos'è, allora, un programma? Un programma è un'invenzione dell'uomo (ma mai di un uomo solo) che per sua natura si presta ad essere rappresentata in una forma che le permette di essere facilmente riprodotta e modificata. Possiamo pensare ai prodotti dell'uomo come costituiti da una parte concreta (il materiale che li compone) e una parte astratta (l'informazione contenuta nell'oggetto stesso); un programma da questo punto di vista è solo informazione, come una frase o una poesia. Solitamente il valore commerciale di un oggetto dipende principalmente dai costi di produzione di ciascun esemplare, mentre il contenuto informativo dell'oggetto stesso è noto a tutti (tutti cioè sanno come è fatto un quaderno o un trapano, il costo del quaderno e del trapano dipende dal materiale usato e dalle risorse necessarie per la costruzione fisica dell'oggetto). Un programma quindi ha la stessa natura di un brano letterario e come un brano letterario porta al suo interno tutta la storia letteraria (informatica) e culturale (tecnologica) che lo ha preceduto, come pure influssi profondi di altri autori (di software). Nessun programma, cioè, potrebbe essere come si presenta se non avesse acquisito informazione da altri programmi che sono esistiti prima di esso. Come conseguenza non dovrebbe essere permesso a nessuno, nemmeno agli autori stessi, di detenere i diritti esclusivi sull'uso di un programma e delle parti che lo compongono.

La protezione del diritto di autore su un volume va a toccare questioni differenti, perché chiunque può leggere e capire un libro senza infrangere il diritto d'autore, mentre un programma di cui non viene distribuito il sorgente non può essere letto né compreso e presenta quindi un approccio ``dogmatico'' nei confronti della conoscenza.

Questo discorso può apparire stravagante a chi non operi nel settore ma rispecchia una situazione che risulta chiara a chiunque abbia a che fare con la progettazione di software e hardware. La conseguenza diretta della natura astratta dei programmi è che il prodotto "programma" non dovrebbe essere commercializzato come il prodotto "quaderno" o il prodotto "trapano", che contengono molto materiale e relativamente poca informazione, ma dovrebbe essere liberamente accessibile per essere interpretato e modificato da altri. Come ciascuno può leggere quello che da altri è stato scritto e rielaborare le idee ivi contenute, come ciascuno può utilizzare le dimostrazioni di matematica e le teorie di fisica per i propri scopi, allo stesso modo ognuno dovrebbe essere autorizzato a leggere e rielaborare i programmi esistenti, perché il patrimonio ``culturale'' informatico possa accrescersi a beneficio di tutti gli utenti di calcolatori e, più in generale, per un utilizzo più proficuo della tecnologia attuale. In effetti, nei primi anni di sviluppo dell'informatica tutto il software era liberamente disponibile a tutti, cosa che ancora succede per molti prodotti della ricerca universitaria odierna.

Il discorso fatto fin qui è molto teorico, e tale resterebbe se non ci fosse una valida alternativa ai comportamenti che ho criticato. Tale alternativa si chiama "free software", dove il termine "free" significa "libero" (non solo "gratuito") e si riferisce alla libertà data a ciascuno di condividere il programma con altri e di modificarlo per adattarlo alle proprie necessità.

I vantaggi per chi sceglie di usare programmi liberi sono notevoli, perché l'utente non vincola la propria attività alle bizzarrie commerciali dei grandi produttori. Chi usa programmi liberi non sarà costretto a cambiare il calcolatore ogni due anni, non dovrà cambiare il sistema operativo entro un anno perché ``solo la prossima versione sarà compatibile con l'anno 2000'' e non dovrà nemmeno comprare venti volte lo stesso programma solo perché deve installarlo su venti postazioni di lavoro. Ma il vantaggio principale per chi usa programmi liberi sta proprio nella sua piena indipendenza da qualunque struttura esterna e dal mantenere il controllo sullo sviluppo del suo sistema informatico. Questo significa che ogni prodotto distribuito come free-software può essere personalizzato e adattato alle specifiche esigenze di ciascun utente senza che l'utente stesso debba fronteggiare spese esagerate. Ogni tecnico programmatore può intervenire su un programma libero e modificarlo perché si adatti nel migliore dei modi alle esigenze dell'utente.

Gli esempi di applicazione di questa politica di sviluppo non mancano. Si pensi per esempio alle reti di calcolatori: l'unico protocollo di comunicazione tra computer che ha avuto successo è il protocollo che costituisce Internet, chiamato ``TCP/IP''. Il successo di questa forma di comunicazione dipende principalmente dal fatto che tutte le specifiche di TCP/IP e i programmi che le realizzano sono liberamente disponibili; tutta la comunità informatica contribuisce alla definizione degli aspetti tecnici di Internet e tutti possono sfruttare il lavoro degli altri per realizzare nuovi sviluppi.

La libertà di fondo espressa dal free-software ha attirato migliaia di programmatori di tutto il mondo e ognuno di essi ha affrontato problematiche diverse, in base alle proprie esigenze personali. Il risultato di questo sforzo collettivo è un insieme di pacchetti software che tecnicamente si dimostrano superiori a tutti gli altri come prestazioni e come flessibilità.

Le statistiche attuali riportano che il sistema operativo più utilizzato nei server di Internet è ``Linux'' mentre il programma preferito per offrire i servizi WWW è ``Apache''. Sia Linux sia Apache sono programmi liberamente ridistribuibili e si possono scaricare gratuitamente dalla rete o comprare su CDROM a costi molto contenuti (il software del CDROM si può installare su quanti calcolatori si desidera, senza spesa aggiuntiva). Si noti anche che Linux è forse il sistema operativo che offre la maggior flessibilità rispetto alla scelta del computer perché non gira solo su calcolatori di tipo PC, ma anche su sei o sette altri tipi di computer.

L'eccellenza tecnica del free-software dipende proprio dal fatto che nessuno si arroga l'esclusiva sulla sua distribuzione; il vantaggio per l'utente è che qualunque tecnico può offrire assistenza qualificata, così come qualunque riparatore può aggiustare un trapano elettrico.

Nonostante alcuni applicativi non siano ancora disponibili in forma liberamente ridistribuibile, la mia esperienza personale come utente e sviluppatore di free-software è sempre stata completamente positiva. L'Italia è molto indietro rispetto ad altri paesi da questo punto di vista, ma credo che gli sviluppi futuri dell'informatica andranno sempre più nella direzione del free-software, per i motivi che ho elencato. Dal 1991, quando uno studente finlandese ha deciso di creare Linux, il numero di calcolatori che utilizzavano tale sistema operativo si è decuplicato ogni anno, fino ad arrivare ai circa dieci milioni di calcolatori Linux oggi presenti nel mondo. Credo che anche in Italia sia giunto il momento di dare più spazio a programmi e sistemi operativi liberamente ridistribuibili, per non dover dipendere nel proprio lavoro dalle politiche delle grosse aziende di software e per migliorare la propria produttività.