<- Claude E. Shannon - Indice Generale - Copertina - Indice -> |
Agorà
di Marco Scutari, Mauro
Malvestio
Dipartimento di Scienze Statistiche
Università degli studi di Padova
L'articolo...Dopo una panoramica introduttiva sulla storia del movimento socio-culturale che ha portato alla nascita del software libero, gli autori si soffermano su alcuni esempi delineando l'organizzazione dei progetti opensource. |
Negli ultimi anni l'interesse per il SL (Software Libero) si è notevolmente diffuso grazie alla rapida diffusione di alcuni programmi creati all'interno di questo movimento (primo fra tutti Apache - http://www.apache.org), ai notevoli investimenti stanziati da multinazionali del settore come IBM e Sun Microsystems, ed alla rapida crescita del numero di utenti dei SO (sistemi operativi) open source (come Linux, NetBSD, FreeBSD, ecc.). La natura collaborativa del movimento open source sembra contraddire i principi della natura economica dell'industria dell'informazione. Cosa spinge alcuni dei migliori programmatori al mondo a lavorare senza richiedere alcun compenso?
A partire dalla Seconda Guerra Mondiale la nascita dei primi calcolatori (tra cui il primo ENIAC progettato da Eckert E. Mauchly) creò una nuova cultura, che raccolse i primi programmatori. Soprannominati in seguito "The Real Progammers", erano prevalentemente fisici e ingegneri, che si dedicavano alla creazione di hardware e software per passione personale ed interesse intellettuale; la loro specialità era il "batch computing", ovvero le procedure non interattive di calcolo, per scopi scientifici. Con l'avvento dei primi sistemi interattivi all'inizio degli anni Sessanta, questa prima generazione di programmatori cedette il passo ai primi hacker, nati con l'avvento di ARPANET (madre di Internet, costruito dal Dipartimento della Difesa Statunitense) e maturati nei laboratori del MIT (Massachusset Institute of Technology), della Stanford University, della Carnegie-Mellon University e del Palo Alto Research Center della Xerox. Lavorando su calcolatori del calibro dei PDP della Digital Equipment Corporation (DEC) crearono i primi sistemi operativi (tra cui il famoso ITS), i primi linguaggi di programmazione (come il LISP), i protocolli di rete, e le prime applicazioni.
Per quanto innovative e ben progettate, tutte queste creazioni dovettero cedere il passo a sistemi operativi più moderni, dato che non erano portabili ad altre architetture (non funzionavano su calcolatori diversi da quelli su cui erano state create) perché scritti in linguaggio a basso livello (Assembler). Questo cambio generazionale portò alla ribalta UNIX, che essendo stato programmato in C (il famoso linguaggio di programmazione creato da Dennis Ritchie nel 1971) era portabile, e venne in effetti adattato a numerose architetture nel corso degli anni settanta. I principali vantaggi dell'accoppiata C/UNIX erano la semplicità, la flessibilità e l'uniformità di comportamento su calcolatori anche molto diversi oltre che la portabilità. All'inizio degli anni Ottanta esistevano quindi tre culture: gli "hacker" cresciuti con ARPANET ed i PDP, quelli passati a UNIX e C (che utilizzavano prevalentemente i VAX, successori dei PDP) ed infine i possessori dei primi personal computer, commercializzati nella seconda metà degli anni Sessanta. La prima morì quando la DEC smise di fornire assistenza per i PDP, mentre la terza non acquisì mai l'autocoscienza, dato che i membri non erano in grado di comunicare tra loro attraverso una rete. Questo lasciò campo aperto a UNIX, che venne commercializzato dall'AT&T nel 1984.
La commercializzazione di UNIX portò con sè un
nuovo problema: la gestione dei codici sorgenti, ora
proprietà dell'AT&T. Fino a quel momento i
programmatori, e specialmente gli hacker, erano soliti scambiarsi i
codici sorgenti dei programmi per analizzarli e migliorarli; dato
che ogni miglioramento era poi reso pubblico questo andava anche a
vantaggio delle industrie. Al contrario l'AT&T decise di non
divulgare il codice sorgente di UNIX e dei programmi correlati,
proteggendoli con i "nondisclosure agreement" ed i "copyright",
creando di fatto il primo software commerciale nell'attuale
accezione del termine.
Reagendo a quello che vedevano come un sopruso, alcuni hacker,
capeggiati da Richard Stallman, fondarono la Free Software
Foundation (FSF), con lo scopo di creare un intero sistema
operativo il cui codice sorgente fosse liberamente modificabile e
ridistribuibile. Questo progetto, nato sotto il nome di GNU (GNU:
GNU's Not UNIX), raccolse l'eredità ideologica della cultura
hacker, esaltandola in contrasto con la mentalità
commerciale dell'AT&T e diventando il primo nucleo del
movimento open source.
Nel corso degli anni Ottanta, mentre UNIX veniva praticamente
rimpiazzato dai sistemi operativi Microsoft (società fondata
da Bill Gates) a causa dell'inettitudine commerciale delle aziende
che lo distribuivano e delle differenze tra le varie versioni, la
Free Software Foundation creò molti programmi fondamentali
per il nuovo sistema operativo, ottenendo dei risultati di
qualità talmente buona da essere utilizzati ancora oggi. Lo
stesso Stallman sviluppò il GNU C Complier (GCC) in soli tre
anni, fornendo così uno strumento standard per la
programmazione; tuttavia il suo massimo contributo fu la General
Public Licence (GPL). Questa licenza, che è il fondamento di
buona parte dei software sviluppati all'interno del movimento open
source, fu la massima espressione degli ideali professati dalla
Free Software Foundation e pose la base per uno sviluppo unitario
del software libero, diventando uno standard de facto.
Proprio grazie all'impegno della Free Software Foundation, Linus Torvalds nel 1991 iniziò a sviluppare un kernel (il nucleo del sistema operativo) per personal computer 386, avvalendosi dell'aiuto di molti volontari per la programmazione e di Internet per la diffusione delle informazioni e la coordinazione del lavoro. Già a partire dal 1993 Linux (questo il nome del nuovo sistema operativo) è diventato il più grande progetto collaborativo mai realizzato, cominciando a competere con i suoi equivalenti commerciali e raccogliendo l'entusiastica adesione della maggior parte del movimento open source. Tra l'altro è proprio in questo periodo che viene coniato il termine open source, che rispetto alla denominazione free software desta minor confusione (free in inglese vuol dire gratuito oltre che libero). A partire dalla metà degli anni Novanta nascono anche varie imprese che vendono le cosiddette "Linux Distribution", ovvero delle suite contenenti il sistema operativo e vari programmi, fornendo assistenza in bundle; l'azione combinata della velocità di sviluppo di Linux, del bassissimo costo di distribuzione e dall'ottima qualità dei programmi portano ad una crescita annuale del 200% nel numero degli utenti. Grazie ad una fuga di informazioni si diffonde la notizia che anche Microsoft considera Linux una valida (e quindi pericolosa) alternativa al proprio sistema operativo.
Apache.
Apache è il più diffuso software per realizzare Web-Server attualmente disponibile sul mercato; infatti circa il 60% dei Web-Server attivi sul Web usa Apache (secondo indagini NetCraft 2000). Apache è stato inizialmente sviluppato nel 1994 da Brian Behlendorf, come alternativa al Web-Server NCSA. Quest'ultimo infatti, per problemi di gestione interna, diminuì gradualmente il supporto di assistenza, costringendo Behlendorf ed altri amministratori di rete a sviluppare un proprio Web-Server per soddisfare le proprie necessità sistemistiche. La prima release, Apache 0.8, fu rilasciata nell'agosto del 1995 ed ebbe un immediato successo per l'assenza di valide alternative commerciali. I concorrenti commerciali di Apache sono Microsoft IIS e Netscape Enterprise Software, che però controllano rispettivamente il 20.2% ed il 6.7% del mercato. A partire dal 1999 il progetto Apache viene gestito dalla Apache Software Foundation.
Linux
Creato nel 1991 dallo studente finlandese Linus Torvalds ed inizialmente basato sul sistema Minix venne subito distribuito dall'autore sotto una licenza che imponeva la distribuibilità. Nel corso degli anni questo sistema operativo si è evoluto a ritmi impressionanti sotto la guida del proprio creatore, diventando il principale competitore di Windows ed attraendo numerosi investimenti. Molte aziende inoltre si sono dedicate alla commercializzazione di prodotti complementari, come hardware appositamente ottimizzato, supporto tecnico e interfacce utente. Torvalds supervisiona tuttora lo sviluppo di Linux dal punto di vista organizzativo e, anche se non contribuisce più in modo determinante allo sviluppo, continua ad avere l'ultima parola sulle scelte strategiche.
Perl
Perl, (Practical Extraction and Reporting Language) è un linguaggio di programmazione creato da Larry Wall nel 1987 per rispondere all'esigenza di avere un linguaggio a metà strada tra il C ed il linguaggio Shell proprio di UNIX, per automatizzare l'amministrazione di sistema. Il suo sviluppo viene diretto a rotazione dai principali programmatori che ne curano attualmente il mantenimento; al contrario di Apache la creazione di una fondazione nel caso di Perl non ha avuto successo per ben due volte. I concorrenti commerciali di Perl sono attualmente Java della Sun Microsystems e ActiveX della Microsoft.
Sendmail
Sendmail è stato originariamente sviluppato nel 1970 da Eric Allman, all'epoca studente di informatica all'università di Berkeley. Sendmail è nato per risolvere le incongruenze derivanti dall'utilizzo di protocolli non perfettamente compatibili. È stato adottato come metodo per smistare e-mail all'interno della rete Arpanet. Nel periodo compreso tra gli anni ottanta e novanta furono rilasciate numerose versioni rivisitate di Sendmail da parte della comunità open source. Questo dimostra come sia possibile il "fork" di sviluppo anche in progetti di successo come Sendmail. Allman ritornò a lavorare per la Berkley Division nel 1993 e riscrisse lo completamente per adeguarlo alle nuove esigenze di sicurezza, riportando il programma in cima alle classifiche degli MTA più utilizzati. I concorrenti commerciali di Sendmail sono PostOffice, MS Exchange e Imail. Nel 1997 Allman fondò la Sendmail Inc. per dirigere il continuo sviluppo dell'applicazione.
Un programmatore che si dedica ad un progetto open source va
incontro a vari benefici ed alcuni svantaggi. Tra questi ultimi il
più rilevante è il costo di opportunità
derivante dal tempo che egli dedica allo sviluppo del progetto,
tempo che deve necessariamente sottrarre al proprio lavoro e alla
propria retribuzione. Tuttavia se il progetto in questione
appartiene allo stesso ambito in cui opera lo sviluppatore, il
tempo che egli dedica alla programmazione può trasformarsi
in un maggior rendimento lavorativo. Bisogna inoltre considerare,
oltre alla soddisfazione personale, anche altri vantaggi derivanti
dall'acquisizione di notorietà, come la possibilità
di nuove offerte di lavoro e di carriera ("career concern
incentive") e il riconoscimento della qualità del proprio
lavoro ("ego gratification incentive").
Questi incentivi sono collettivamente noti come "signaling
incentive". La potenza di questi incentivi dipende da:
la visibilità del contributo dato dal programmatore;
l'impatto del contributo sulla performance del software;
il talento che viene dimostrato.
Questo porta i programmatori ad associarsi a progetti ad alta visibilità, come ad esempio Debian; per quanto riguarda progetti di calibro minore il mancato raggiungimento della massa critica (intesa come numero complessivo tra programmatori e utenti) porta spesso alla dissoluzione del team di sviluppo. Lo stesso può accadere in caso di fork, in quanto il dividersi della leadership di sviluppo porta il progetto al di sotto della massa critica.
Per paragonare le motivazioni che portano i programmatori a scegliere l'open source rispetto al software proprietario bisogna tener conto delle differenze tra i due ambienti. I progetti commerciali sembrano avere un certo vantaggio in questo senso, perchè creano una prospettiva di profitto grazie all'uso di brevetti (per proteggere le innovazioni) e garantiscono un salario allo sviluppatore. Tuttavia i progetti open source possono risultare più convenienti perchè riducono molto i tempi di implementazione, sviluppo e debugging del software ("Alumni Effect"), dato che i tempi di apprendimento sono molto minori (per il fatto che il codice è accessibile a tutti) e sono gli utenti stessi a segnalare possibili soluzioni per risolvere gli errori. Per quanto riguarda i vantaggi a lungo termine, l'open source garantisce alcuni vantaggi irrealizzabili per il modello del software chiuso e proprietario.
Tutti gli utenti sono in grado di distinguere l'apporto di ciascun programmatore al progetto, e di valutare il suo talento in base alla qualità delle soluzioni proposte ed alla difficoltà del problema da implementare. Questo è impossibile nei progetti commerciali chiusi.
Ogni programmatore nell'open source è il capo di se stesso, dato che il successo del suo lavoro non viene limitato dalle interferenze di un supervisore.
Il metodo di lavoro del gruppo di sviluppo open source si dimostra più flessibile della realtà commerciale, per il fatto che il programmatore non è vincolato ad un singolo programma o ad una singola azienda, e può scegliere di sfruttare il suo know-how nell'ambito di progetti di suo specifico interesse.
Queste argomentazioni stanno ad indicare che gli sviluppatori open source sono generalmente più esperti, e tendono ad avere un forte interesse a dimostrare le proprie capacità. Una buona parte di software open source viene realizzata per un bacino di utenza particolarmente avanzato, che a sua volta sfrutta la libera diffusione del codice sorgente per personalizzare il software in base alle proprie esigenze, e non per l'utenza media (esempio i comuni utenti Windows).
Molti progetti open source sono realizzati in funzione dei possibili benefici per gli utenti; infatti in ben tre dei quattro esempi riportati i fondatori dei relativi progetti erano motivati da problemi incontrati nel lavoro di tutti i giorni.
Il riconoscimento che viene dato ai singoli sviluppatori per il loro contributo è il fondamento del movimento open source. Il feedback infatti appare molto importante per i programmatori; per questo motivo nel sito web del progetto Apache vengono citati tutti quelli che hanno contribuito, perfino utenti che hanno solo segnalato errori e malfunzionamenti.
Sembra anche che il lavoro svolto nell'ambito di progetti open source possa risultare utile per attirare capitale azionario (ad esempio come nei casi di Sun Microsystems, Netscape, e Red Hat).
Caratteristiche iniziali
Il successo di un progetto open source dipende dalla possibilità di dividerlo in componenti modulari (il che coincide con le più recenti tendenze del panorama IT "information technology" ). Inoltre il programmatore che da vita al progetto deve fornire una certa quantità di codice sorgente, per dimostrare che gli obiettivi che si prefigge sono raggiungibili e degni dell'impegno di tutti. Allo stesso tempo per coinvolgere nel progetto il maggior numero di programmatori lo sviluppo deve trovarsi in uno stadio iniziale, per far nascere un senso di competizione tra gli sviluppatori coinvolti e dar loro la possibilità di mettersi in evidenza. Per lo stesso motivo la prima release del progetto non deve essere per forza perfetta. Linux è un ottimo esempio di tutte queste caratteristiche.
Leadership
Vi sono molte possibili organizzazioni in un progetto open source; talvolta vi è un solo leader, mentre in altri casi viene realizzata un'assemblea dei principali sviluppatori che decide in modo collegiale. Nella maggior parte dei casi i leader sono anche coloro che hanno dato il via al progetto e che successivamente in molti casi abbandonano la programmazione per dedicarsi al management dello stesso. Anche se questi leader non hanno un autorità formalmente riconosciuta, possiedono una forte influenza sui programmatori coinvolti nel progetto. Nella maggior parte dei casi infatti le loro raccomandazioni vengono seguite fedelmente dal gruppo, in particolare per quanto riguarda la "vision" iniziale, l'aggiornamento degli obbiettivi, l'organizzazione interna e la qualità dello stato del progetto. La chiave per una leadership di successo è la fiducia che i programmatori e gli utenti ripongono nel loro leader, e nella capacità di quest'ultimo di adattare i suoi obiettivi alle loro necessità e alle loro proposte. Tutto questo limita la possibilità di un fork ai vertici del progetto.
Reazioni dell'industria del software proprietario
Assodato il successo del movimento open source, è possibile che le compagnie che realizzano software commerciale provino ad imitare alcune caratteristiche di questo modello di sviluppo, o ad avviare progetti misti. Tuttavia questo non può accadere per le seguenti ragioni:
Gli utenti non hanno la possibilità di leggere e modificare il codice.
I programmatori non hanno la possibilità di rendere note le loro capacità al di fuori dell'azienda; questo anche perchè l'azienda stessa non vuole che i propri sviluppatori ricevano offerte di lavoro da altre aziende.
La modularizzazione dei progetti è praticamente impossibile, perchè ogni team lavora in modo autonomo, senza condividere i propri progressi con gli altri e senza produrre una documentazione adeguata. Questo porta a programmi molto complessi poco standardizzati e interdipendenti, che rendono difficoltoso il passaggio ad uno sviluppo open source.
I possibili vantaggi per queste aziende vengono dalla fornitura di beni e servizi complementari che non vengono prodotti all'interno della comunità open source (esempi in questo caso sono: VA Linux e Red Hat). Un'altra possibile strategia è rappresentata da rilasciare parte del codice proprietario, specialmente quando l'azienda è troppo piccola per competere sul mercato o sull'orlo del fallimento, oppure quando vi sono prospettive di maggior profitto nel campo dei beni complementari. Le aziende non possono tuttavia garantire che lasceranno i propri codici sorgenti di pubblico dominio per sempre.
Optimal Licensing:
Non è ancora chiaro in che misura sia conveniente per il movimento open source incoraggiare le aziende che producono software proprietario a fornire programmi aggiuntivi, senza rischiare che queste ultime ne approfittino a discapito del movimento stesso. Proprio per questo la licenza GPL (General Public License) con la sua natura "virale" sembra l'unica delle licenze open source in grado di rassicurare il mercato.
Coesistenza di software commerciale e open source:
C'è sempre il pericolo, essendo in contatto con il software commerciale, che i programmatori con le idee migliori (specialmente quelle che possono portare un altissimo payoff commerciale) abbandonino i progetti open source a favore di un metodo di sviluppo associato al business.
Processo di sviluppo open source in altri settori:
Attualmente nessun altro settore industriale sembra intenzionato ad adottare metodi di produzione affini alla filosofia open source. Anche se alcuni aspetti di questa filosofia possono essere facilmente duplicati, la natura stessa di alcuni processi produttivi rende impossibili la modularità e la visibilità necessari.
Caratteristiche ambientali per lo sviluppo open source:
Ambiente competitivo :
L'unità del movimento open source in parte deriva dalla presenza di un forte leader sul mercato commerciale. Viene quindi a crearsi una "lotta di classe" tra gli utenti legati a Linux e al mondo opensource e gli utenti affiliati alla casa di Redmond, impedendo attriti all'interno della sfera open source.
Periodo di vita dei progetti:
La natura degli incentivi che spinge gli sviluppatori del movimento open source potrebbe causare un abbandono prematuro di progetti che sembrano diventare meno popolari, anche se il ciclo vitale del software non è ancora terminato.
Ruolo delle applicazioni:
Con il progressivo avvicinamento del software open source all'utenza del software commerciale, diventano sempre più importanti la sincronizzazione negli aggiornamenti, la "backward compatibility" e la presenza di interfacce amichevoli. Questo comporta un adattamento dell'attuale ottica di sviluppo alle esigenze dell'utente comune, che non possiede le conoscenze avanzate degli utenti open source.
Molteplici sono i parametri che concorrono alla diffusione del software open source. Non si possono stabilire metriche, o valori quantitativi in merito a questi parametri, a causa della natura aperta e non regolamentata delle attività di sviluppo open source.
Portabilità:
Compatibilità del prodotto con sistemi hardware e altri sistemi software;
Sicurezza:
Capacità di un prodotto di difendersi da possibili violazioni dell'integrità o da usi non appropriati;
Flessibilità:
Capacità di un prodotto di rispondere a varie e mutevoli esigenze degli utenti;
Libertà:
Il prodotto non è realizzato e distribuito da un singolo proprietario;
Affidabilità:
Capacità del prodotto di mantenere le proprie prestazioni nel tempo e nelle diverse situazioni che si possono presentare;
Performance:
Prestazioni del software con particolare riferimento a velocità e funzionalità;
Costo del possesso:
La composizione di costo di acquisto e costo di mantenimento.
Da questi criteri ne dipendono l'accettazione, la diffusione e, naturalmente, il vero successo dell'open source.
Gli autoriMarco Scutari, webmaster PLUTO e studente di Statistica e Informatica presso la Facoltà di Scienze Statistiche, Università di Padova. Mauro Malvestio, FOSS Specialist presso il Dipartimento di Scienze Statistiche, Università degli studi di Padova. |
<- Claude E. Shannon - Indice Generale - Copertina - Indice -> |