L' Open source ed il Progetto GNUtella.
ATTENZIONE: GRAN PARTE DEI TESTI RIPORTATI IN QUESTA PAGINA SONO STATI ESTRAPOLATI DAL SITO DI APOGEONLINE PER UN ARTICOLATO STUDIO BIBLIOGRAFICO RIVOLTO AGLI STUDENTI CHE INTENDONO APPROFONDIRE L'ARGOMENTO.
Open Sources Voci dalla rivoluzione Open Source Fonte: Apogeonline - http://www.apogeonline.com/openpress/cose_op.html
The Open Source Definition di Bruce Perens Fonte: Apogeonline - http://www.apogeonline.com/openpress/cose_op.html
Proprietà e open source
da ml cyberight
L'utente tipico di computer possiede una discreta quantità di software che ha
comprato nel tempo e che ormai non adopera più. Magari ha aggiornato il
computer, o ha cambiato marca, e i vecchi programmi hanno smesso di
funzionare. Magari il software è diventato obsoleto. O semplicemente il
programma non lo soddisfa. Forse ha comprato due o più computer e non vuole
pagare per una seconda copia del software. Quale che sia la ragione, il software
per cui ha pagato anni fa non è più adeguato. Tutto questo è inevitabile?
Non sarebbe bello avere diritto a un aggiornamento gratuito ogni volta che il
software lo richiede? Se, passando da un Mac a un PC, si potesse cambiare la
versione del software gratis? Se, quando il software non funziona o non è
abbastanza potente, si potesse migliorarlo o perfino ripararlo da soli? Se il
software continuasse a essere supportato anche quando l'azienda produttrice
abbia cessato l'attività? Non sarebbe bello usare il software sulla stazione di
lavoro, sul computer di casa e sul portatile, anziché su un solo computer? È
probabile che, in quel caso, si starebbe ancora usando il software pagato anni
prima. Questi sono alcuni dei diritti che l'Open Source riconosce.
La Open Source Definition è una carta dei diritti dell'utente di computer.
Definisce certi diritti che una licenza software deve garantire per poter essere
certificata come Open Source. I produttori che non rendono Open Source il loro
programmi trovano difficile competere con chi lo fa, dal momento che gli utenti
imparano ad apprezzare quei diritti che avrebbero dovuto sempre essere loro.
Programmi come il sistema operativo Linux e il browser Web Netscape sono
diventati popolarissimi, scalzando altro software sottoposto a licenze più
restrittive. Aziende che usano software Open Source godono il vantaggio del suo
rapidissimo sviluppo, spesso a opera cooperativa di numerose aziende, e in gran
parte fornito da soggetti individuali che operano migliorie sulla base di proprie
necessità.
I volontari che hanno reso possibili prodotti come Linux ci sono, e le aziende
possono cooperare, solo grazie ai diritti che vengono con l'Open Source. Il
programmatore medio si sentirebbe stupido nel riversare tanto lavoro in un
programma per vedere poi le sue migliorie vendute dal proprietario senza che lui
ne riceva alcun ritorno. Quegli stessi programmatori contribuiscono volentieri
all'Open Source perché esso assicura loro questi diritti:
il diritto di fare copie del programma e di distribuirle;
il diritto d'accesso al codice sorgente del software, condizione necessaria
per poterlo modificare;
il diritto di apportare migliorie al programma.
Questi diritti sono importanti per coloro che collaborano a un software perché li
mantengono tutti al medesimo livello. Chiunque lo voglia è libero di vendere un
programma Open Source, così i prezzi rimarranno bassi e sarà rapido lo
sviluppo per raggiungere nuovi mercati. Chiunque investa il suo tempo a
costruire conoscenza in un programma Open Source lo può supportare, e
questo permette agli utenti l'opzione di fornire a loro volta il loro supporto, o
l'economia dovuta a un gran numero di fornitori di supporto concorrenti.
Qualunque programmatore può adattare un programma Open Source a misura di
mercati specifici per raggiungere clienti nuovi. Chi lo fa non è costretto a pagare
diritti o concessioni di licenza.
La ragione per il successo di una strategia che può suonare alquanto comunista
proprio nel momento in cui il fallimento del comunismo stesso è visibile
ovunque, è nel fatto che l'economia dell'informazione è sostanzialmente diversa
da quella degli altri prodotti. I costi della copia di un'informazione come un
programma software è infinitesimo. L'elettricità non costa quasi nulla, l'uso
dell'attrezzatura poco di più. È come, per fare un paragone, se si duplicasse una
pagnotta usando un solo etto di farina.
La storia
Il concetto di free software non è nuovo. Quando le università cominciarono ad
adottare i computer, essi erano strumenti per la ricerca. Il software veniva
scambiato liberamente e i programmatori venivano pagati per l'atto della
programmazione, non per i programmi in sé. Solo più tardi, quando il mondo
degli affari e del commercio adottò i computer, i programmatori cominciarono a
mantenersi limitando i diritti d'uso del loro software e facendosi pagare per ogni
copia. Il free software come idea politica è stato reso popolare da Richard
Stallman dal 1984, allorché formò la Free Software Foundation e il progetto GNU
a essa collegato. La premessa di Stallman è che la gente dovrebbe avere più
libertà e dovrebbe imparare ad apprezzarla. Egli progettò un insieme di diritti che
sentiva necessari a ogni utente e li codificò nella GNU Public License o GPL.
Stallman battezzò scherzosamente la sua licenza copyleft in quanto lasciava
intatto il diritto alla copia. Stallman stesso sviluppò lavori fondamentali di free
software quali il compilatore C GNU e GNU Emacs, un editor di testo che alcuni
hanno trovato così seducente da concepirne quasi un culto. Il suo lavoro ispirò
molti altri a fornire free software sotto la GPL. Per quanto non promossa con il
medesimo fervore libertario, la Open Source Definition include molte delle idee di
Stallman, e può ben considerarsi un derivato della sua opera.
La Open Source Definition cominciò la sua vita come un documento di linea di
condotta della distribuzione Debian GNU/Linux. Debian, uno dei primi sistemi
Linux, tuttora popolare, fu costruito interamente con free software. Tuttavia, dal
momento che c'erano altre licenze oltre al copyleft che comportavano la gratuità,
Debian ebbe qualche problema nel definire che cosa fosse gratis, e i produttori
non resero mai chiara la loro politica di free software al resto del mondo.
All'epoca, trovandomi a capo del progetto Debian, affrontai questi problemi
proponendo un Contratto Sociale Debian e la Guida Debian del Free Software,
nel luglio del 1997. Molti sviluppatori Debian inviarono critiche e miglioramenti
che io incorporai nei documenti. Il Contratto Sociale documentava l'intenzione di
Debian di costituire il proprio sistema interamente con free software, e la Guida
rendeva facilmente possibile la classificazione del software come free software o
meno, confrontando la licenza software con la guida stessa.
La Guida Debian fu oggetto di molte lodi nella comunità del free software,
specialmente fra gli sviluppatori Linux, che a quel tempo stavano preparando la
loro propria rivoluzione software sviluppando il primo vero sistema operativo
gratuito. Quando Netscape decise di rendere libero il suo browser Web, contattò
Eric Raymond. Raymond, la Margaret Mead del free software, è autore di
numerosi articoli di taglio antropologico che illustrano il fenomeno del free
software e la cultura che vi è cresciuta intorno: scritti che furono i primi di un
genere e che hanno messo sotto la luce dei riflettori questo fenomeno fino ad
allora oscuro. La dirigenza di Netscape rimase suggestionata in particolare dal
saggio di Raymond "La cattedrale e il bazaar", la cronaca di uno sviluppo free
software coronato da successo con volontari non pagati, e gli chiese una
consulenza, sotto patto di riservatezza, mentre sviluppavano una licenza per il
loro free software. Raymond insisté che la licenza di Netscape dovesse
adeguarsi alla guida Debian per poter essere presa sul serio come free software.
Raymond e io ci eravamo incontrati qualche volta all'Hacker Conference, una
raduno su invito di programmatori creativi e non convenzionali. Avevamo
corrisposto via email su vari argomenti. Mi contattò nel febbraio del 1997 con
l'idea per l'Open Source. Raymond temeva che la mentalità conservatrice
dell'ambiente degli affari venisse scoraggiata dal grado di libertà di Stallman, che
era al contrario popolarissimo fra i programmatori di mentalità più liberale. Era
impressione di Raymond che ciò stesse sclerotizzando lo sviluppo di Linux nel
mondo business laddove esso fioriva invece nell'ambiente della ricerca.
Raymond ebbe incontri con uomini d'affari nell'industria Linux che stava
muovendo solo allora i primi passi; insieme, essi concepirono un programma di
marketing del free software indirizzato ai colletti bianchi. Furono coinvolti Larry
Augustin di VA Research e Sam Ockman (che abbandonò più tardi VA per
formare Penguin Computing), nonché altri non di mia conoscenza.
Alcuni mesi prima dell'Open Source, avevo elaborato l'idea dell'Open Hardware,
concetto simile rivolto agli strumenti hardware e alle loro interfacce anziché ai
programmi software. A tutt'oggi l'Open Hardware non ha avuto il successo
dell'Open Source, ma il progetto è ancora attivo; se ne può sapere di più a
http://www.openhardware.org.
Secondo Raymond, la Guida Debian era il documento più adatto a definire
l'Open Source, ma serviva una denominazione più generale e la rimozione dei
riferimenti specifici a Debian. Modificai la Guida Debian fino a ricavarne la Open
Source Definition. Avevo formato per Debian un ente chiamato Software in the
Public Interest, e mi offrii di registrare un marchio per Open Source in modo da
poter associare il suo uso alla definizione. Raymond acconsentì, e io registrai
una certificazione (una forma speciale di marchio che potesse applicarsi
secondo i termini ai prodotti altrui). Circa un mese dopo la registrazione del
marchio, apparve chiaro che Software in the Public Interest avrebbe potuto non
essere la dimora migliore per il marchio Open Source, e trasferii dunque la
proprietà del marchio a Raymond. Raymond e io abbiamo da allora formato la
Open Source Initiative, un'organizzazione esclusivamente destinata alla gestione
della campagna Open Source e della sua certificazione di marchio. Mentre
scrivo, l'iniziativa Open Source è retta da un comitato di sei componenti scelti
fra fornitori di free software di chiara fama, e sta cercando di espandere il suo
comitato fino a una decina di persone.
Al momento del suo concepimento, la campagna Open Source fu oggetto di
molte critiche perfino da parte del contingente Linux che già aveva approvato il
concetto di free software. Molti rilevarono che il termine Open Source era già in
uso nel ramo della raccolta di dati per le campagne politiche. Altri pensarono
che il termine Open fosse già usurato. Per altri ancora era preferibile il nome
Free Software, già consolidato. Io opinai che l'abuso del termine Open sarebbe
stato sempre meglio dell'ambiguità di free nella lingua inglese, in cui sta a
significare tanto libero quanto gratuito, la seconda accezione essendo di gran
lunga la più comune nel mondo del commercio di computer e di software. Più
tardi, Richard Stallman obiettò alla mancanza di enfasi sulla libertà che secondo
lui la campagna dimostrava, e al fatto che, mentre l'Open Source acquistava
popolarità, il suo ruolo nella genesi del free software, e quello della sua Free
Software Foundation, venivano ignorati: si lamentò di essere stato "cassato dalla
storia". Peggiorò la situazione la tendenza degli operatori del settore di
contrapporre Raymond a Stallman, quasi essi proponessero filosofie concorrenti
anziché, sia pur con metodi diversi, propagandare lo stesso concetto. Io stesso
contribuii probabilmente a esacerbare gli animi mettendo Stallman e Raymond
l'uno contro l'altro in dibattiti pubblici alla Linux Expo e alla Open Source Expo.
Caratterizzare i due come avversari diventò un'attività tanto consueta che una
discussione via email, non destinata alla pubblicazione, apparve sul periodico
on-line Salon. A quel punto, chiesi a Raymond di moderare i toni di un dialogo in
cui, per la verità, egli non aveva mai inteso entrare.
Quando la Open Source Definition fu scritta, esisteva già un gran numero di
prodotti che potevano rientrare nella categoria. Il problema erano quei programmi
che non vi rientravano, e che pure gli utenti trovavano irresistibili.
KDE, Qt e Troll Tech
Il caso di KDE, Qt e Troll Tech è pertinente a questo saggio perché il gruppo
KDE e Troll Tech cercarono di porre un prodotto non-Open Source entro
l'infrastruttura di Linux, incontrando una resistenza inattesa. Le grida di pubblico
scandalo e la minaccia che il loro prodotto venisse rimpiazzato da un altro,
completamente Open Source, convinse alla fine Troll Tech a convertirsi a una
licenza pienamente Open Source. È un segno interessante dell'accoglienza
entusiastica riservata dalla comunità alla Open Source Definition il fatto che Troll
dovette adeguare la propria licenza, pena l'insuccesso del suo prodotto.
KDE fu il primo esperimento di un desktop grafico gratuito per Linux. Le
applicazioni KDE erano esse stesse sotto GPL, ma dipendevano da una libreria
grafica proprietaria nota come Qt, di Troll Tech. I termini della licenza di Qt ne
proibivano la modifica o l'uso con qualunque display software che non fosse il
senescente X Window System. Ogni uso diverso richiedeva allo sviluppatore una
licenza del costo di 1500 dollari. Troll Tech fornì versioni di Qt per Windows di
Microsoft e per Macintosh, e questa fu la sua principale fonte d'entrate. La
licenza pseudo-gratuita per i sistemi X intendeva indirizzare i contributi degli
sviluppatori Linux verso demo, esempi e accessori per i loro costosi prodotti
Windows e Mac.
Per quanto i problemi della licenza di Qt apparissero evidenti, la prospettiva di
un desktop grafico per Linux era così attraente che molti utenti furono disposti a
chiudere un occhio sulla sua natura non-Open Source. I promotori di Open
Source trovarono che KDE fosse in difetto perché avevano l'impressione che gli
sviluppatori stessero cercando di confondere la definizione di free software allo
scopo di includervi elementi solo parzialmente gratuiti, come Qt. Gli sviluppatori
KDE replicarono che i loro programmi erano Open Source, anche se non
esistevano versioni eseguibili di quei programmi che non richiedessero una
libreria non-Open Source. Io e altri sostenemmo che le applicazioni KDE non
erano che frammenti Open Source di programmi non-Open Source, e che una
versione Open Source di Qt sarebbe stata necessaria prima che ci si potesse
riferire a KDE come a un Open Source.
Gli sviluppatori KDE tentarono di risolvere parzialmente il problema della licenza
di Qt negoziando con Troll Tech un accordo (KDE Free Qt Foundation) in cui
Troll e KDE avrebbero congiuntamente controllato i rilasci delle versioni gratuite
di Qt, e Troll Tech avrebbe rilasciato Qt sotto una licenza conforme a Open
Source nel caso che l'azienda venisse acquisita o cessasse l'attività.
Un altro gruppo diede inizio al progetto GNOME, un concorrente interamente
Open Source di KDE che mirava a fornire maggiori funzioni e sofisticazioni; un
gruppo separato avviò il progetto Harmony per produrre un clone di Qt
completamente Open Source che avrebbe supportato KDE. Mentre le
dimostrazioni di GNOME avvenivano fra il plauso e Harmony stava per diventare
usabile, Troll Tech capì che QT non avrebbe riscosso successo nel mondo Linux
se non avesse cambiato licenza. Troll Tech rilasciò dunque una licenza
interamente Open Source per Qt, disinnescando il conflitto ed eliminando i
motivi alla base del progetto Harmony. Il progetto GNOME continua tuttora, volto
adesso a un KDE migliore in termini di funzionalità e di raffinatezza piuttosto
che in termini di licenza.
Prima di rilasciare la sua nuova licenza Open Source, Troll Tech me ne fece
avere copia perché la verificassi, con la preghiera che rimanesse riservata finché
non fossero in grado di annunciarla. Nel mio entusiasmo di far pace con il
gruppo KDE e in un imbarazzante gesto di autoinganno, preannunciai con otto
ore di anticipo la licenza su una mailing list KDE. Quell'email, per il mio rimorso,
fu raccolta immediatamente da Slashdot e da altre riviste online.
La nuova licenza Troll Tech è notevole perché approfitta di una scappatoia nella
Open Source Definition che permette ai file patch di essere trattati diversamente
dall'altro software. Vorrei provvedere a chiudere questa scappatoia in una
revisione a venire della Open Source Definition, ma il nuovo testo non dovrebbe
tuttavia collocare Qt al di fuori dell'Open Source.
Al momento in cui scrivo, i promotori di Open Source stanno crescendo in
misura esponenziale. I recenti contributi Open Source di IBM e di Ericsson
hanno fatto i titoli dei giornali. Due distribuzioni Linux, Yggdrasil e Debian,
stanno rilasciando distribuzioni di sistemi Linux completi, ivi incluse molte
applicazioni che sono interamente Open Source; e molte altre, fra cui Red Hat,
ci sono assai vicine. Quando il sistema GNOME sarà completo, sarà stato
realizzato un sistema operativo con desktop GUI Open Source in grado di
competere con Microsoft NT.
Analisi della Open Source Definition
Questa sezione presenta nella sua interezza il testo della Open Source
Definition, corredata di commenti (in corsivo). La versione canonica della Open
Source Definition si trova a http://www.opensource.org/osd.html.
Alcuni pedanti hanno voluto trovare delle ambiguità di poco conto nella Open
Source Definition. Mi sono astenuto da rivederla dal momento che ha poco più
d'un anno di vita e vorrei che il pubblico la considerasse stabile. Il futuro imporrà
qualche adeguamento lessicale, ma quasi nessuna modifica allo scopo del
documento.
La Open Source Definition
Open Source non significa solo accesso al codice sorgente. I termini di
distribuzione di un programma Open Source devono essere consoni ai criteri
seguenti:
Si noti che la Open Source Definition non è propriamente una licenza software.
È una specifica di quanto è ammesso in una licenza software perché vi si possa
riferire come a un'Open Source. La Open Source Definition non è intesa per
essere un documento di valore legale. L'inclusione della Open Source Definition
nelle licenze software, quale quella proposta per il Progetto di Documentazione
di Linux, sembra suggerirmi la stesura di una versione più rigorosa che sia
appropriata per quell'uso.
Ai fini dell'Open Source, devono applicarsi insieme tutti i termini che seguono, in
tutti i casi. Per esempio, devono applicarsi alle versioni derivate di un
programma così come al programma originale. Non è sufficiente applicarne
alcune e non altre, e non è sufficiente se i termini non vengono applicati
sistematicamente. Dopo aver dovuto affrontare delle interpretazioni
particolarmente "semplici" della Open Source Definition, sono tentato di
aggiungere: sto dicendo a voi!
1.Ridistribuzione libera
La licenza non può impedire ad alcuna parte in causa la vendita o la
cessione del software come componente di una distribuzione di software
aggregato che contenga programmi proveniente da sorgenti diverse. La
licenza non può richiedere diritti o il pagamento di altre concessioni per
tale vendita.
Questo significa che potete fare tutte le copie che volete del software e
venderle o cederle, e non dovete pagare nessuno per questo privilegio.
L'espressione "distribuzione di software aggregato che contenga
programmi provenienti da sorgenti diverse" era intesa a chiudere una
scappatoia nella Licenza Artistica - una licenza piuttosto malfatta, a mio
parere - escogitata in origine per il Perl. Oggi, quasi tutti i programmi che
usano la Licenza Artistica sono disponibili anche sotto GPL. Quella
clausola non è più necessaria e sarà probabilmente tolta da una futura
versione della Open Source Definition.
2.Codice sorgente
Il programma deve includere il codice sorgente e deve consentire la
distribuzione tanto in codice sorgente che in forma compilata. Laddove
una qualunque forma del prodotto non sia distribuita corredata del codice
sorgente, devono essere disponibili mezzi ben pubblicizzati per scaricare
il codice sorgente, senza costi addizionali, via Internet. Il codice sorgente
deve essere la forma preferenziale nella quale un programmatore
modifichi un programma. Codice deliberatamente offuscato non è
ammesso. Forme intermedie quali l'output di un preprocessore o di un
traduttore non sono ammesse.
Il codice sorgente è un preliminare necessario alla riparazione o alla
modifica di un programma. L'intento qui è che il codice sorgente sia
distribuito con l'opera iniziale e con tutte le opere derivate.
3.Opere derivate
La licenza deve permettere modifiche e opere derivate e deve consentire
la loro distribuzione sotto i medesimi termini della licenza del software
originale.
Il software serve a poco se non se ne può fare la manutenzione
(riparazione dei bug, porting su nuovi sistemi, migliorie) e la modifica è
indispensabile alla manutenzione. L'intento è qui di permettere modifiche
d'ogni sorta. Deve essere permessa la distribuzione di un'opera
modificata sotto gli stessi termini di licenza dell'opera originale. Tuttavia,
non è richiesto che ogni produttore di un'opera derivata debba usare gli
stessi termini di licenza, ma solo che possa farlo qualora lo voglia.
Diverse licenze si esprimono diversamente in materia: la licenza BSD vi
permette di mantenere private le modifiche, la GPL no.
Alcuni autori di software ritengono che questa clausola possa consentire
a persone prive di scrupoli di modificare il loro software in maniera che
possa causare imbarazzo all'autore originale. Quello che temono è che
qualcuno possa deliberatamente provocare un malfunzionamento del
software in modo che l'autore originale appaia un programmatore
scadente. Altri paventano un possibile uso criminale del software tramite
l'aggiunta di funzioni-cavallo di Troia o di tecnologie illegali in alcuni
Paesi, come la crittografia. Tutti questi atti, tuttavia, sono coperti dal
codice penale. Un comune fraintendimento a proposito delle licenze è
che esse debbano specificare ogni cosa, per esempio "questo software
non va usato per compiere delitti". Dovrebbe tuttavia essere chiaro che
nessuna licenza ha esistenza valida al di fuori del corpo del diritto civile e
penale. Considerare una licenza come qualcosa separato dal corpo delle
leggi applicabili è tanto sciocco quanto considerare un documento in
lingua inglese separato dal vocabolario di quella lingua, un caso in cui
nessuna parola avrebbe un significato definito.
4.Integrità del codice sorgente dell'autore
La licenza può proibire che il codice sorgente venga distribuito in forma
modificata solo se la licenza permette la distribuzione di "patch file" con
il codice sorgente allo scopo di modificare il programma al momento della
costruzione.
Alcuni autori temevano che altri potessero distribuire codice sorgente
con modifiche che sarebbero state percepite come opera dell'autore
originale e quindi avrebbero potuto gettare ombra su di lui. Questa
clausola dà loro un modo di imporre una separazione fra le modifiche e la
loro opera, senza proibire le prime. C'è chi considera antiestetico che le
modifiche debbano venir distribuite in un file "patch" separato dal codice
sorgente, anche se distribuzioni Linux come Debian e Red Hat usano
questa procedura per tutte le modifiche apportate ai programmi che
distribuiscono. Esistono programmi per riversare automaticamente le
patch nel sorgente principale, e questi programmi si possono eseguire
automaticamente quando si scompatta un pacchetto di sorgente. Questa
clausola, dunque, dovrebbe causare poca o nessuna difficoltà.
Si noti anche che questa clausola dice che, nel caso di file patch, la
modifica avviene quando si fa il build del programma. Questa scappatoia
è impiegata nella Licenza Pubblica di Qt per prescrivere una diversa,
anche se meno restrittiva, licenza per i file patch, in contraddizione con
la sezione 3 della Open Source Definition. C'è una proposta per chiudere
questa scappatoia nella definizione e mantenere nello stesso tempo Qt
entro i confini dell'Open Source.
La licenza deve permettere esplicitamente la distribuzione di software
costruito da codice sorgente modificato. La licenza può richiedere che le
opere derivate vadano sotto nome o numero di versione differenti da quelli
del software originale.
Questo significa che Netscape, per esempio, può insistere per poter
essa sola chiamare una versione del programma Netscape Navigator
(tm), mentre tutte le versioni gratuite del programma debbano chiamarsi
Mozilla o in altro modo.
5.Nessuna discriminazione contro persone o gruppi
La licenza non deve discriminare alcuna persona o gruppo di persone.
Una licenza fornita dai Rettori dell'Università della California a Berkeley
proibiva l'uso di un programma di progettazione elettronica da parte delle
forze di polizia del Sud Africa. Apprezzato come merita questo
sentimento in tempi di apartheid, va detto che esso non ha più senso
oggi. Alcune persone si trovano ancora con software acquistato sotto
quella licenza, e le loro versioni derivate devono portare la stessa
restrizione. Le licenze Open Source non devono contenere tale clausola,
indipendentemente dalla nobiltà dell'intento.
6.Nessuna discriminazione di settori.
La licenza non deve proibire ad alcuno l'uso del programma in uno
specifico campo o per un determinato proposito. Per esempio, non può
impedire che il programma venga usato a scopi commerciali o nella
ricerca genetica.
Il software dev'essere impiegabile allo stesso modo in una clinica che
pratichi aborti e in un'organizzazione antiabortista. Queste discussioni
politiche sono di pertinenza del Congresso degli Stati Uniti, non delle
licenze del software. Alcuni trovano questa mancanza di discernimento
gravemente offensiva!
7. Distribuzione della licenza
I diritti relativi al programma devono applicarsi a tutti coloro ai quali il
programma sia ridistribuito, senza necessità di esecuzione di una licenza
aggiuntiva da parte di questi.
La licenza dev'essere automatica, senza la richiesta di alcuna firma.
Purtroppo, negli Stati Uniti non ci sono dati validi precedenti giudiziari del
potere della licenza senza firma quando questa venga passata da una
seconda a una terza parte. Tuttavia, questo argomento considera la
licenza come facente parte della legge sul contratto, mentre qualcuno
obietta che dovrebbe essere considerata come legge di copyright,
campo in cui si danno più precedenti per quel tipo di licenza. Un buon
precedente ci sarà senz'altro nei prossimi anni, data la popolarità del
questa licenza e il boom dell'Open Source.
7.La licenza non dev'essere specifica a un prodotto.
I diritti relativi a un programma non devono dipendere dall'essere il
programma parte di una particolare distribuzione software. Se il
programma è estratto da quella distribuzione e usato o distribuito entro i
termini della licenza del programma stesso, tutte le parti a cui il
programma sia ridistribuito dovrebbero avere gli stessi diritti che vengono
garantiti in unione alla distribuzione software originale.
Questo significa che non si può impedire a un prodotto identificato come
Open Source di essere gratuito solo se lo si usa con una marca
particolare di distribuzione Linux, ecc. Deve rimanere gratuito se anche lo
si separa dalla distribuzione software da cui proviene.
8.La licenza non deve contaminare altro software
La licenza non deve porre restrizioni ad altro software che sia distribuito
insieme a quello licenziato. Per esempio, la licenza non deve pretendere
che tutti gli altri programmi distribuiti sullo stesso media siano software
Open Source.
Una versione di GhostScript (programma di rendering PostScript) richiede
che i media sui quali viene distribuito contengano solo programmi
software gratuiti. Questo non è consentito dalla licenza Open Source.
Per fortuna, l'autore di GhostScript distribuisce un'altra versione del
programma (un po' più vecchia) sotto una licenza Open Source genuina.
Si noti che c'è differenza fra derivazione e aggregazione. Derivazione è
quando un programma incorpora di fatto in sé parti di un altro
programma. Aggregazione è quando due programmi vengono inclusi sullo
stesso CD-ROM. Questa sezione della Open Source Definition riguarda
l'aggregazione, non la derivazione. La sezione 4 riguarda la derivazione.
9.Licenze esemplari
Le licenze GNU GPL, BSD, X Consortium e Artistica sono esempi di
licenze da considerarsi conformi alla Open Source Definition. Altrettanto
dicasi della MPL.
Questo sarebbe una fonte di guai nel giorno in cui una di queste licenze
si modificasse e non fosse più Open Source: dovremmo pubblicare
immediatamente una revisione della Open Source Definition. Ciò è
pertinente per la verità al testo esplicativo, non alla Open Source
Definition in sé.
Analisi delle licenze e loro conformità all'Open Source
Per comprendere la Open Source Definition dobbiamo esaminare alcune
pratiche comuni nelle licenze in quanto si riferiscono all'Open Source.
Public Domain
La diffusa convinzione che molto del free software sia di dominio pubblico è
errata. Ciò avviene perché l'idea di free software o Open Source confonde molti,
che quindi definiscono erroneamente questi programmi come di pubblico
dominio perché è il concetto più prossimo a quanto è loro familiare. I programmi,
tuttavia, sono molto chiaramente protetti da diritti e sottoposti a licenza: solo, si
tratta di una licenza che dà al pubblico più diritti di quelli a cui sia abituato.
Un programma di pubblico dominio è un programma sul quale l'autore abbia
rinunciato a tutti di suoi diritti di copyright. Non si può esattamente dire che sia
dotato di una licenza; è proprietà personale, per usarlo come meglio si crede.
Dal momento che si può trattarlo come personale proprietà, con un programma
di pubblico dominio si può fare quello che si vuole. Si può perfino ri-licenziare un
programma di pubblico dominio, rimuovendo quella versione dal pubblico
dominio, o togliendo il nome del suo autore e trattarlo come opera propria.
Se si sta spendendo molto lavoro su un programma di pubblico dominio, si
consideri la possibilità di applicarvi il proprio copyright e di rimetterlo sotto
licenza. Per esempio, se non si desidera che una terza parte operi delle
modifiche che possa poi mantenere riservate, si applichi la GPL o una licenza
simile alla propria versione del programma. La versione da cui si è partiti rimarrà
nel pubblico dominio, ma la propria versione sarà sotto una licenza che dovrà
essere osservata da chi la usa o ne derivi altre.
Un programma di pubblico dominio si rende privato facilmente, dichiarando un
copyright e applicandovi la propria licenza, oppure semplicemente dichiarando
"Tutti i diritti riservati".
Le licenze Free Software in generale
Se si ha una raccolta di free software come un disco Linux, si potrebbe credere
che il programma su quel disco sia proprio. Ma questo non è del tutto vero. I
programmi coperti da copyright sono proprietà di chi detiene il copyright, anche
quando arrivano con una licenza Open Source come la GPL. La licenza del
programma garantisce alcuni diritti, e altri si hanno sotto la definizione di uso
corretto nella legge sul copyright.
È importante notare che un autore non deve necessariamente limitarsi a porre
una sola licenza su un programma che pubblica. Un programma può essere
posto sotto GPL, e una versione può anche essere venduta con una licenza
commerciale, non-Open Source. Proprio di questa strategia si valgono molti che
desiderano creare un programma Open Source e allo stesso tempo guadagnarci
qualche cosa. Chi non vuole una licenza Open Source può pagare per il
privilegio, fornendo all'autore una fonte d'entrate.
Tutte le licenze che esamineremo hanno una caratteristica comune: declinano
qualunque garanzia. Lo scopo è quello di proteggere il proprietario del software
da qualunque responsabilità connessa al programma. Appare una richiesta
ragionevole, dato che il programma viene ceduto a costo zero: l'autore non riceve
dal programma una fonte d'entrata sufficiente per sostenere un'assicurazione
sulle responsabilità ed eventuali spese legali.
Se gli autori di free software perdessero il diritto di declinare tutte le garanzie e
si trovassero a essere citati in tribunale in base alle prestazioni dei programmi
che hanno scritto, smetterebbero di fornire software gratuito al mondo. È nel
nostro interesse di utenti aiutare gli autori a proteggere questo diritto.
La GNU General Public License
Si veda l'Appendice B per il testo completo della GPL. La GPL è un manifesto
politico tanto quanto è una licenza software, e la maggior parte del testo è
inteso a spiegare la motivazione teorica dietro la licenza. Questo dibattito
politico ha allontanato alcuni e fornito alcune delle ragioni per cui sono state
scritte altre licenze per il free software. Tuttavia, la GPL è stata stilata con
l'assistenza di giuristi ed è per questo assai meglio scritta della maggior parte
delle licenza di quella famiglia. Io consiglio caldamente di usare la GPL, o la sua
variante per librerie LGPL, ogni volta che sia possibile. Sesi sceglie un'altra
licenza, o se ne stila una nuova, ci devono essere delle buone ragioni per farlo.
Chi formula la propria licenza dovrebbe sapere bene che non e un passo da fare
con leggerezza. Le complicazioni inaspettate di una licenza affrettata possono
affliggere gli utenti di un software per molti anni a venire.
Il testo della. GPL non e a sua volta sotto GPL. La sua licenza è semplice:
Chiunque può copiare e distribuire copie esatte di questo documento di licenza,
ma non ne sono ammesse modifiche. Un punto importante, qui, è che il testo
delle licenze di software Open Source di solito non è Open Source esso stesso.
Ovviamente, una. licenza non porrebbe offrire protezione di alcun tipo se a
chiunque fosse consentito apportarvi delle modifiche.
Le clausole della GPL soddisfano la Open Source Definition. La GPL non
richiede alcuna delle clausole consentite dal Paragrafo 4 della Open Source
Definition. Integrità del codice sorgente dell'autore.
La GPL non permette di mantenere private le modifiche apportate. Le modifiche
devono essere distribuite sotto la GPL. In questo modo, l'autore di un
programma sotto GPL ha maggiori probabilità di ricevere modifiche da altri,
comprese società commerciali che modificano il suo software per i propri scopi.
La GPL non ammette l'incorporazione di un programma sotto GPL in un
programma proprietario. La definizione di GPL di programma proprietario lo
indica come ogni programma con una licenza che non dia tanti diritti quanti la
GPL.
Esistono alcune scappatoie nella GPL che permettono di usarla in un
programma non interamente Open Source. Le librerie software che vengono
normalmente distribuite con il compilatore o con il sistema operativo che si usa
possono essere collegate a software GPL: ne risulta un programma
parzialmente libero. Chi detiene il copyright (di norma l'autore del programma) e
la persona che mette il programma sotto GPL e ha il diritto di violare la propria
licenza. Questa scappatoia e stata usata dagli autori di KDE per distribuire il
loro programma Qt prima che Troll Tech ponesse su Qt una licenza Open
Source. Tuttavia, questo diritto non si estende ad alcuna terza parte che
ridistribuisca il programma: esse devono seguire tutti i termini della licenza,
anche quelli che vengono violati dal detentore del copyright, il che rende
problematico ridistribuire un programma che contenga Qt sotto GPL. Gli
sviluppatori KDE sembrano inclini a rimediare a questo problema applicando al
loro software la LGPL piuttosto che la GPL.
La retorica politica presente nella GPL non e gradita a tutti. Non manca chi ha
scelto, per il suo software, licenze non altrettanto adatte per semplice
avversione alle idee di Richard Stallmann, pur di non aver voluto vederle ripetute
nei propri pacchetti software.
La GNU Library Public License
La LGPL e una derivato della GPL escogitato per le librerie software. A
differenza della GPL, un programma sotto LGPL può venire incorporato entro un
programma proprietario. La libreria di linguaggio C fornita con i sistemi Linux e
un esempio di software sotto LGPL: essa può essere usata per costruire
programmi proprietari, diversamente Linux risulterebbe utile solamente agli autori
di free software.
Una copia di un programma sotto LGPL può essere convertita in qualunque
momento in una sotto GPL. Una volta che ciò succede, quella copia non e più
riconvertibile in un programma sotto LGPL, e altrettanto dicasi di qualunque suo
derivato.
Le rimanenti clausole della LGPL sono simili a quelle della GPL: di fatto essa
include la GPL facendovi riferimento.
Le licenze X, BSD e Apache
La licenza. X e le sue affini BSD e Apache sono molto diverse dalla. GPL e dalla
LGPL. Queste licenze consentono di fare quasi tutto ciò che si vuole con il
software 'licenziato' sotto di esse, e questo perché il software originariamente
coperto dalle licenze X e BSD era sovvenzionato con sussidi del Governo degli
Stati Uniti. Dal momento che i cittadini statunitensi avevano già pagato il
software con i soldi delle tasse, fu loro garantito il diritto di fare del software tutto
ciò che volessero.
La concessione più importante, assente dalla GPL, e che si può mantenere
private le modifiche licenziate sotto licenza X. In altre parole, si può ottenere il
codice sorgente di un programma sotto X, modificarlo e poi vendere versioni
binarie del programma senza distribuire il codice sorgente delle modifiche e
senza applicarvi la licenza X. Tutto ciò rimane comunque Open Source, poiché
la Open Source Definicion non richiede che le modifiche debbano sempre
ricadere sotto la licenza originale.
Molti altri sviluppatori hanno adottato la licenza X e le sue varianti, compresi i
progetti BSD (Berkeley System Distribution) e Apache Web server. Un dettaglio
molesto della licenza BSD è costituito da una clausola che prescrive che ogni
volta si faccia cenno a una caratteristica di un programma sotto BSD in una sua
pubblicità, si menzioni (generalmente in una nota a pie di pagina) il fatto che il
software è stato sviluppato all'Università della California. Ora, tener traccia di
quale software abbia quella licenza in una cosa immensa come una
distribuzione Linux, e ricordare quindi di menzionare l'Università della California
ogni volta che uno di questi programmi venga citato in una pubblicità, e un vero
mal di testa per i gestori commerciali del progetto, Nel momento in cui scrivo, la
distribuzione Debian GNU/Linux contiene oltre 2500 pacchetti software, e se
anche solo una piccola parte di essi fosse sotto BSD, la pubblicità per un
sistema Linux come Debian dovrebbe contenere molte pagine solo di note!
Tuttavia, la licenza dell'X Consortium non ha quella clausola della pubblicità. Se
si pensa di usare una licenza tipo BSD si usi invece una licenza X.
La Licenza Artistica
Sebbene questa licenza sia stata in origine sviluppata per il Perl, e stata dopo
allora adoperata per altro software. A mio parere si tratta di una licenza
formulata con grande sciattezza, in quanto impone dei requisiti e fornisce poi
delle scappatoie che rendono facile aggirarli. Forse e questa la ragione per cui
quasi tutto il software sotto Licenza Artistica, ha oggi una seconda licenza,
offrendo la scelta fra la Licenza Artistica e la GPL.
La. Sezione 5 della Licenza Artistica vieta la vendita del software, ma permette
che sia venduta una distribuzione di software aggregato di più di un programma.
In questo modo, se raggruppate un programma sotto Licenza Artistica con un
Helloworld.c di cinque righe di codice, potete vendere il bundle. Questa
caratteristica della Licenza Artistica e stata la sola causa della scappatoia
dell'"aggregato" nel primo paragrafo della Open Source Definition. Dal momento
che l'uso della Licenza Artistica e in netto declino, stiamo pensando di cogliere
quella scappatoia. Ciò renderebbe la Licenza Artistica una licenza non-Open
Source. Non è questo un passo che faremo leggermente, e ci vorrà
probabilmente più di un anno di riflessione e di dibattito prima che questo
accada,
La Licenza Artistica richiede che le modifiche siano rese gratuite, ma fornisce
poi una scappatoia (nella Sezione 7) che permette di mantenerle private e
perfino di porre sotto dominio pubblico parti del programma sotto Licenza
Artistica!
La Netscape Public License e la Mozilla Public License
La NPL e stata sviluppata da Netscape quando rese Open Source il suo
prodotto Netscape Navigator. Per la precisione, la versione Open Source si
chiama Moizilla; Netscape si riserva il marchio Navigator per il suo prodotto. Eric
Raymond ed io agimmo come consulenti a titolo gratuito durante lo sviluppo di
questa licenza. Io cercai, senza. successo, di persuadere Netscape a usare la
GPL, e quando essa declinò, contribuii a comporre una licenza che si
conformasse alla Open Source Definifion.
Una. caratteristica importante della. NPL è che contiene privilegi speciali che si
applicano a Netscape e a nessun altro. Essa da a Netscape il privilegio di
rilicenziare le modifiche fatte al suo software. Netscape può mantenere private
quelle modifiche, migliorarle, e rifiutarsi di restituire il risultato. Questa clausola
si e resa necessaria perché, quando Netscape decise per l'Open Source, aveva
contratti con altre aziende che la impegnavano a fornir loro Navigator sotto una
licenza non Open Source.
Netscape ha. creato la MPL o Mozilla Public License per rimediare a questa
situazione. La MPL e molto simile alla NPL, ma non contiene la clausola che
permette a Netscape di rimettere le modifiche sotto licenza.
La NPL e la MPL consentono di mantenere private le modifiche apportate .
Molte aziende hanno adottato per i loro programmi una variante della MPL. Non
e una buona cosa, perché la NPL era stata progettata per la particolare
situazione contrattuale in cui Netscape si trovava. nel momento in cui la licenza
veniva scritta, e non e detto che sia altrettanto adatta a usi diversi. Dovrebbe
restare la licenza di Netscape e di Mozilla, e altri dovrebbero usare le licenze
GPL o X.
Scegliere una licenza
Non conviene formulare una licenza nuova se e possibile usarne una di quelle
qui elencate. La propagazione di molte licenze diverse e incompatibili opera a
detrimento del software Open Source, perché frammenti di un programma non
possono essere usati in un altro programma sotto licenza incompatibile.
Ci si tenga alla larga dalla. Licenza Artistica, a meno che non si intenda
studiarla fondo ed eliminarne le scappatoie. Fatto ciò, è tempo di prendere delle
decisioni.
1.Si vuole che il pubblico possa. mantenere private le modifiche, o no? Se
vuole che chi ha apportato modifiche al proprio software ne rimandi il
codice sorgente, si applichi una licenza che lo prescriva. La GPL e la
LGPL sono delle buone scelte. Se non dispiace che il pubblico mantenga
private le modifiche, si usino la licenza X o la licenza Apache.
2.Si vuole consentire a qualcuno di far confluire il proprio programma nel
suo software proprietario? Se si, si usi la LGPL, che lo permette
esplicitamente senza consentire al pubblico di rendere privato il codice,
oppure si usi le licenza X o Apache, che permettono che le modifiche
siano mantenute private.
3.Si desidera che chi lo voglia possa comprare sotto licenza commerciale
versioni non Open Source del proprio programma? Se si, si doti il
software di doppia licenza. Io consiglio la GPL come licenza Open
Source; si può trovare una licenza commerciale adatta all'uso in libri
come "Copyright Your Software" ediito da Nolo Press.
4.Si vuole che chiunque usi il proprio software debba pagare per il
privilegio? Se le cose stanno cosi, forse l'Open Source non e adatta. Se
basta che solo alcune persone paghino, si può mantenere Open Source il
programma. La maggior parte degli autori Open Source considerano i loro
programmi come contributi al bene pubblico, e non badano al fatto di
essere pagati oppure no.
Questa che segue e una tabella comparativa delle licenze pubbliche:
Licenze
Può essere
miscelato con
software
commerciale
Le modifiche
possono essere
mantenute
private e non
restituite
all'autore
originale
Può essere
ri-licenziato da
chiunque
Contiene
privilegi
speciali sulle
modifiche per
chi detiene il
copyright
originale
GPL
LGPL
V
BSD
V
V
NPL
V
V
V
MPL
V
V
Dominio
Pubblico
V
V
V
Il Futuro
Al momento in cui questo saggio andava in stampa, IBM e entrava nel mondo
Open Source e la. comunit;à dei venture capital lo sta scoprendo. Intel e
Netscape hanno investito in Red Hat, un distributore Linux. VA Research,
integratore di server Linux e hardware per workstation, ha annunciato l'ingresso
di un investitore esterno. Sendmail Inc., creata per commercializzare
l'onnipresente programma di posta elettronica Sendmail, ha annunciato la
disponibilità di fondi per sei milioni di dollari. L'applicazione di posta protetta
Postfix di IBM ha una licenza Open Source, e un altro prodotto IBM, il
compilatore Java Jikes, ha una licenza che, nell'istante in cui scrivo, mira, per il
momento con parziale successo, a soddisfare le specifiche dell'Open Source
Definition. Parrebbe che IBM intenda modificare la licenza di Jikes perché sia
per intero Open Source, e che a questo scopo stia raccogliendo pareri nella
comunità.
Due promemoria interni della Microsoft, noti sono il nome di Halloween
Documents, sono trapelati al pubblico online. Questi promemoria mostrano in
modo inequivocabile come Microsoft si senta minacciata da Open Source e da
Linux, e che MS lancerà un'offensiva contro di loro per proteggere i suoi mercati.
E' chiaro che dobbiamo prepararci a vivere tempi interessanti. Credo che
vedremo Microsof usare due principali strategie: interfacce sotto copyright e
brevetti. Microsoft esrenderà i protocolli di rete, che contengono caratteristiche
proprietarie Microsoft in quelli che non verranno resi disponibili al free software.
Essa, con altre aziende, farà ricerca aggressivamente in nuove direzioni
dell'informatica e brevetterà tutto quanto potrà prima che noi si possa. sfruttare
quelle tecniche nel free software; quindi ci chiuderà fuori con le concessioni sui
diritti di brevetto. Sono autore di un saggio per la webzine Linux World su come
si possano battere i nemici dell'Open Source sul fronte dei brevetti.
La buona notizia e che Microsoft i spaventata! Nel secondo degli Halloween
Documents, un membro dello staff Microsoft racconta della sua sensazione
d'euforia nel vedere come poteva modificare facilmente parti del sistema Linux
perché facesse esattamente quello che voleva, e com'era più facile per un
impiegato Microsoft fare questo su Linux di quanto non lo fosse modificare NT.
I tentativi di nuocerci provenienti dall'interno sono i più pericolosi. Credo che
vedremo altri sforzi per diluire la definizione di Open Source fino a includervi
prodotti parzialmente gratuiti, come abbiamo visto avvenire con la libreria Qt in
KDE prima che Troll tech vedesse la luce e rilasciasse una licenza Open
Source. Microsoft e altri potrebbero danneggiarci rilasciando un sacco di
software gratuito quel tanto da attrarre utenti, ma senza avere le piene libertà
dell'Open Source. Non è impensabile che essi possano stronca.re lo sviluppo di
certe categorie di software Open Source rilasciando soluzioni "abbastanza
valide", "abbastanza quasi-gratis". Tuttavia, la forte reazione che si e avuta
contro il progetto KDE prima che la libreria Qt divenisse completamente Open
Source, non è di buon augurio per imprese analoghe di MS e compagnia.
Finora abbiamo scampato i cavalli di Troia. Supponiamo che qualcuno che ci
vuol male fornisca del software che contiene un cavallo di Troia un espediente
per sconfiggere la protezione in un sistema Linux. Supponiamo, poi, che la
medesima persona resti in attesa che il software con il cavallo di Troia sia
largamente distribuito e quindi ne pubblicizzi la vulnerabilità agli attacchi alla
sicurezza. Il pubblico si sarà per allora accorto che il nostro sistema Open
Source può lasciarci più vulnerabili a questa sorta di attacchi che non il sistema
chiuso di Microsoft; questo potrebbe ridurre la fiducia generale nel software
Open Source. Potremmo obiettare che Microsoft ha la sua parte di bug di
sicurezza anche se non lascia possibilità di inserirli a persone esterne e che il
modello a codice sorgente aperto dell'Open Source rende più facile scoprire
questi bug. Qualunque bug del genere che comparisse in Linux sarebbe riparato
il giorno dopo essere stato scoperto, mentre un omologo in Windows o non
sarebbe mai scoperto o dovrebbe aspettare il rimedio per anni. Ma dobbiamo
rinforzare ancora la nostra difesa contro i cavalli di Troia. Identificare con
sicurezza chi contribuisce alla creazione di software e delle modifiche e la
difesa migliore di cui disponiamo, dal momento che ci permette di valerci del
diritto penale contro chi escogita cavalli di Troia. Quando ero dirigente della
distribuzione GNU/Linux di Debian, istituimmo un sistema che consentiva di
identificare in modo affidabile tutti i manutentori del software e permetteva loro di
partecipare a loro volta a una rete a crittografia a chiave pubblica che ci avrebbe
consentito di verificare da chi proveniva il nostro software. Questo tipo di sistema
si deve espandere fino a comprendere tutti gli sviluppatori Open Source.
Enormi sono i miglioramenti da intraprendere prima che Linux sia davvero alla.
portata dell'utente medio. L'interfaccia grafica per gli utenti e chiaramente
qualcosa che manca, e a questo sono rivolti i progetti KDE e GNOME. La
prossima frontiera è l'amministrazione di sistema linusconf vi sta parzialmente
provvedendo, ma si trova ben lungi dall'essere uno strumento completo
d'amministrazione di sistema per l'utente sprovveduto. Se il sistema COAS di
Caldera avrà successo, potrebbe diventare la base per una soluzione completa
al problema dell'amministrazione di sistema. Tuttavia, Caldera ha avuto dei
problemi nel mantenere un'allocazione di risorse sufficienti a COAS per
terminarne lo sviluppo, e altri sviluppatori hanno abbandonato la partita perché
non notavano progressi.
La pletora di distribuzioni Linux appare oggi in pieno rivolgimento, con Red Hat
percepita come vincitrice e Caldera come seconda. Red Hat ha mostrato finora
un solido impegno verso il concetto di Open Source, ma un nuovo presidente e
voci di un'offerta pubblica iniziale (Initial Pubblic Offering, IPO) potrebbero
significare un indebolimento di quest'impegno, specialmente se concorrenti
come Caldera, molto più tiepidi verso l'Open Source, riusciranno a inserirsi nel
mercati di Red Hat. Se l'impegno delle distribuzioni Linux commerciali verso
l'Open Source diventerà problematico, questo genererà probabilmente uno sforzo
per rimpiazzarle con tentativi Open Source simili al GNU/Linux di Debian ma più
diretti al mercato commerciale di quanto non sia stata Debian.
Malgrado queste sfide, io predico la vittoria dell'Open Source. Linux è divenuto
strumento di test per gli studenti d'informatica, che, una volta laureati,
porteranno con sé quegli strumenti nei loro posti di lavoro. Molti laboratori di
ricerca hanno adottato il modello Open Source in quanto la condivisione delle
informazioni è essenziale al metodo scientifico, e l'Open Source consente al
software di essere condiviso facilmente. Il mondo business sta adottando il
modello Open Source perché consente a gruppi di aziende di collaborare nella
risoluzione di un problema senza la minaccia di una causa anti-trust, e per
l'impulso di cui gode quando i contributi pubblici di programmazione rendono
gratuite le migliorie al software. Alcune gran- di società hanno adottato l'Open
Source come strategia per combattere Microsoft e per scongiurare l'avvento di
un'altra. Microsoft a dominare il settore informatico. Ma l'indicazione più
affidabile sul futuro dell'Open Source viene dal suo passato: in pochi anni, dal
niente siamo arrivati ad avere un robusto corpus di software che è in grado di
risolvere tanti problemi diversi e che si avvia a raggiungere il milione di utenti.
Non c'e ragione di rallentare la corsa. proprio adesso.
Breve bibliografia
Sommario: (I capitoli linkati sono disponibili sul sito di
Apogeonline)
Nel corso del 1997 e del 1998, software Open Source
come Linux, FreeBSD, Apache e Perl hanno cominciato ad attirare largamente
l'attenzione di un pubblico nuovo: manager di progetto, dirigenti, analisti
d'industria e investitori. La maggior parte degli sviluppatori Open Source ha accolto
quest'attenzione con molto favore: non solo per orgoglio, ma anche perché
consente loro di giustificare di fronte a colleghi e dirigenze i loro sforzi
(ora sempre più collegati ai loro compensi). Questo pubblico nuovo, tuttavia, pone domande imbarazzanti:
La mia idea è che il modello Open Source sia davvero un modello
affidabile per la conduzione dello sviluppo software a scopi commerciali.
Cercherò di esporre le condizioni preliminari per un progetto simile, a
quali tipi di progetto questo modello si adatti e quali passi dovrebbe fare
un'azienda per lanciare un progetto Open Source. Questo saggio vuole
indirizzarsi alle società che rilasciano, vendono e supportano
commercialmente software o alle società che usano certe parti software come
componenti fondamentali nei loro processi di business. È tutta una questione di piattaforme Esaminiamo per prima cosa le Application Programming Interfaces (API), le
piattaforme e gli standard. Per la comodità di questo saggio riunirò nel
termine generico "piattaforma" le API (come il server API di
Apache per la costruzione di moduli personalizzati), i protocolli on-line
come l'HTTP e le convenzioni dei sistemi operativi (quali il modo in cui
Linux organizza i file di sistema, o quello in cui sono amministrati i
server NT). Win32, la raccolta di routine e risorse offerte e definite da Microsoft
per tutti gli sviluppatori di applicazioni per Windows 95 e NT, è una
piattaforma. Se volete scrivere un'applicazione eseguibile su Windows,
dovete usare questa API. Se volete, come ha fatto una volta IBM con OS/2,
scrivere un sistema operativo che possa eseguire programmi creati per
MSWindows, dovrete implementare l'API Win32 nella sua interezza, perché è
quella che le applicazioni Windows si aspettano di poter usare. Allo stesso modo è una piattaforma la CGI, Common Gateway Interface. La
specifica CGI permette agli sviluppatori di server Web di scrivere script e
programmi che si eseguono al di sotto di un server Web. La CGI è una
piattaforma assai più semplice di Win32, e di conseguenza in grado di fare
molto meno, ma la sua esistenza è stata cruciale per il mercato dei server
Web perché ha permesso agli sviluppatori di applicazioni di scrivere codice
portabile, programmi eseguibili sotto qualunque server Web. Una
differenza-chiave fra CGI e Win32, a parte alcuni ordini di magnitudine
nella complessità, era che nessuno deteneva la proprietà della specifica
CGI: essa era semplicemente qualcosa che i principali server Web
implementavano per poter eseguire gli script CGI degli altri server. Solo
dopo parecchi anni che la CGI era in uso si ritenne fosse il caso di
stilarne una specifica informativa in forma di RFC (Request For Comments)
presso la IETF (Internet Engineering Task Force). Una piattaforma è quanto definisce un software nella sua essenza:
qualunque software, sia esso un browser come Netscape oppure Apache. Le
piattaforme permettono di costruire o di usare un pezzo di software sopra un
altro e sono dunque essenziali non solo nello spazio Internet, dove
piattaforme comuni come HTTP o TCP/IP hanno veramente favorito la crescita
esplosiva di Internet, ma stanno diventando di valore sempre più essenziale
nell'ambito di qualsiasi ambiente informatico, nel contesto server come in
quello dell'utente finale. Nel progetto Apache abbiamo avuto la fortuna di sviluppare molto per
tempo un'API interna che ci consentisse di distinguere fra le funzionalità
server fondamentali (gestione delle connessioni TCP, del processo-figlio e
delle richieste HTTP di base) e quasi tutte le altre funzionalità di più
alto livello, come il logging, un modulo per CGI, gli acclusi server-side,
la configurazione di sicurezza, ecc. Un'API potente ci ha anche permesso di
rinunciare ad altri pezzi ingombranti di funzionalità, come il mod_perl (un
modulo Apache che include un interprete Perl in Apache) e il mod_serv (che
implementa l'API dei servlet Java), e di formare gruppi di sviluppatori
dedicati. Questo ha liberato il gruppo centrale di sviluppo dalla
preoccupazione di costruire un "mostro" per supportare questi
grandi sforzi, in aggiunta al dover mantenere e migliorare il nucleo del
server. Esistono strategie commerciali costruite sul modello di possesso delle
piattaforme software. Tali strategie possono richiedere pagamenti per
qualsiasi uso di queste piattaforme, sulla base di un'installazione software
standard o secondo l'uso (pay-per-use) o magari secondo qualche altro
modello. Qualche volta le piattaforme sono gravate da copyright; altre volte
offuscate dalla mancanza di una descrizione scritta per l'uso pubblico;
altre ancora sono evolute così velocemente, spesso per ragioni non
tecniche, che chiunque altro tenti di fornire tali piattaforme non riesce a
tenerne il passo e viene quindi percepito dal mercato come
"superato", tecnicamente parlando, anche quando la programmazione
non c'entra. Un tale modello di strategia commerciale, potenzialmente vantaggioso nel
breve termine per la società titolare della piattaforma, lavora contro gli
interessi di tutte le altre aziende del settore e contro il livello generale
di evoluzione tecnologica. I concorrenti, anche quando dispongano di
tecnologia superiore, di migliori servizi o di costi più bassi, non possono
sfruttare questi vantaggi perché non hanno accesso alla piattaforma. Il
rovescio della medaglia è che i clienti possono diventare dipendenti da una
piattaforma e, all'aumentare dei prezzi, trovarsi a dover scegliere se
pagare un po' di più al momento per rimanere su quella piattaforma, o
spendere molto per passare a una piattaforma diversa, che li farà
risparmiare sul lungo periodo. I computer e l'automazione sono oggi una componente talmente essenziale
dell'attività quotidiana che un'impresa commerciale accorta non dovrebbe
dipendere da un unico produttore per la fornitura di servizi essenziali.
Poter scegliere il servizio significa non solo avere libertà di scelta: una
scelta deve anche essere economicamente abbordabile. Il costo di un
cambiamento di sistema è un aspetto importante in questa libertà di
scelta. E questo costo può essere ridotto al minimo se cambiare software
non significa dover cambiare piattaforma. È dunque sempre nell'interesse
dei clienti pretendere che il software che usano sia basato su piattaforme
non proprietarie. È un concetto, questo, che a molti risulta difficile da visualizzare,
perché l'economia classica (la legge della domanda e dell'offerta che si
insegna a scuola) si basa sulla nozione che i prodotti in vendita abbiano un
costo relativamente scalabile e che, per vendere dieci volte tanto un
prodotto, il costo delle materie prime per un produttore aumenti, di norma,
anche nell'ordine delle dieci volte. Nessuno avrebbe potuto prevedere la
spettacolare economia di scala mostrata dal software, la mancanza quasi
completa di ogni correlazione diretta fra la quantità di sforzo richiesta
da un prodotto software e il numero di persone che possono comprarlo e
usarlo. Un corpus di riferimento per il software open source che implementi un
protocollo di connessione o un'API è più importante, per la salute a lungo
termine di quella piattaforma, anche di due o tre implementazioni
indipendenti non-open source. Perché questo? Perché un'implementazione
commerciale può in ogni momento venir comprata da un concorrente e rimossa
dal mercato in quanto possibile alternativa, distruggendo quindi la nozione
che lo standard è indipendente. Può anche servire come quadro di
riferimento accademico per comparare implementazioni e comportamenti. Esistono organizzazioni come la IETF e il W3C (World Wide Web Consortium)
che si sforzano, con risultati generalmente eccellenti, di mantenere un
forum di discussione per lo sviluppo di standard multiparte. Queste
organizzazioni riescono, in complesso, nell'intento di produrre architetture
d'alta qualità secondo le necessità di Internet. Tuttavia, il successo a
lungo termine di un dato standard e la diffusione dello stesso ricadono
fuori della loro giurisdizione. Esse non hanno alcun mezzo per costringere i
gruppi membri a creare software che implementino i protocolli che loro
definiscono con tanta precisione. L'unica soluzione, a volte, è dunque
ricorrere a un corpus di riferimento che dimostri perché una certa
implementazione sia corretta. Per esempio, nel dicembre del 1996 AOL effettuò una lieve modifica nei
server proxy usati dai suoi clienti per accedere ai siti Web. Questo "upgrade"
non mancava di un piccolo risvolto politico molto intelligente: quando gli
utenti di AOL accedevano a un sito Web che usasse un server Apache 1.2, che
all'epoca aveva pochi mesi di vita e che implementava la nuova specifica
HTTP/1, trovavano a dar loro il benvenuto il seguente messaggio, altamente
informativo: VERSIONE WEB NON SUPPORTATA L'indirizzo Web richiesto non è disponibile in una versione supportata
da AOL. Il problema è di pertinenza del sito Web, non di AOL. Il titolare
di questo sito usa un linguaggio HTTP non supportato. Se ricevete spesso
questo messaggio, potete impostare le vostre preferenze per la grafica Web
su COMPRESSED alla keyword: PREFERENCES Allarmato da questo "upgrade", il nucleo centrale di sviluppo
di Apache dispose i carri in cerchio e analizzò la situazione. Una
richiesta al team tecnico di AOL produsse la seguente delucidazione: I nuovi server Web HTTP/1.1 stanno cominciando a generare risposte
HTTP/1.1 a richieste HTTP/1.0, anziché generare solo risposte HTTP/1.0. Era
nostra intenzione arginare questi errori perché non proliferassero e
diventassero standard de facto, bloccandoli subito. Auspichiamo che gli
autori di questi server Web modifichino il loro software affinché generi
risposte HTTP/1.1 solo quando viene avanzata una richiesta HTTP/1.1. Sfortunatamente, i progettisti di AOL stavano erroneamente presupponendo
che le risposte HTTP/1.1 non fossero retrocompatibili con i client o i proxy
HTTP/1.0. Lo sono, invece: HTTP è stato progettato per essere
retrocompatibile con le versioni precedenti. Ma la specifica HTTP/1.1 è
tanto complessa che una lettura non attenta e completa potesse indurre a
credere che non fosse questo il caso, specialmente con il documento HTTP/1.1
circolante alla fine del 1996. Così noi, sviluppatori Apache, dovemmo scegliere: fare dietro front e
fornire risposte HTTP/1.0 a richieste HTTP/1.0, o seguire le specifiche. Roy
Fielding, il "poliziotto HTTP" del gruppo, riuscì a mostrarci
chiaramente che il comportamento del software era corretto e vantaggioso: ci
sarebbero stati casi in cui i client HTTP/1.0 avrebbero desiderato
aggiornarsi a una conversazione HTTP/1.1 dopo aver scoperto che un server
supportava la versione 1.1. Era anche importante rendere noto ai server
proxy che, anche se vedevano che la prima richiesta che passavano a un
server d'origine era 1.0, il server d'origine poteva supportare anche l'1.1. Si decise che avremmo puntato le pistole contro AOL e chiesto che
correggessero il loro software. Sospettavamo che la risposta HTTP/1.1 fosse
in realtà causa di un problema col loro software, probabilmente dovuto più
all'imprecisione della loro programmazione che a un cattivo progetto del
protocollo. Dietro la nostra decisione avevamo la scienza. Quello che più
importava era che, a quel punto, Apache girava sul 40% del server Web
presente sulla Rete e Apache 1.2 su una consistente porzione degli stessi.
AOL dovette pertanto decidere se correggere i propri errori di
programmazione o comunicare ai suoi utenti che circa il 20% o più dei siti
Web su Internet sarebbero risultati inaccessibili attraverso i suoi proxy. Il 26 dicembre 1996 pubblicammo una pagina Web esponendo la disputa nel
dettaglio, e rendendone nota l'esistenza non solo ai nostri utenti ma a
molti importanti organi d'informazione, quali C|Net e Wired, per
giustificare le nostre azioni. AOL decise di correggere il software. Più o meno nello stesso periodo
annunciammo la disponibilità di una patch per i siti che volevano aggirare
il problema di AOL finché questo non fosse stato risolto; una patch che
degradava a HTTP/1.0 le risposte per AOL. Fummo chiari nel dire che questa
sarebbe rimasta una patch non ufficiale e non supportata, e che non avrebbe
costituito un setting di default nella distribuzione ufficiale. Si sono verificati molti altri casi in cui produttori di software HTTP
(fra gli altri Netscape e Microsoft) hanno rilevato problemi d'interoperabilità
con Apache; in molti di questi casi si è imposta una scelta fra correggere
il bug o rendere inutilizzabili molti siti. A volte un produttore
implementava non correttamente il protocollo, ma conforme ai propri client e
server, dando luogo a un'implementazione che funzionava a dovere sui
prodotti, ma imperfettamente (a dir poco) su client e server realizzati da
altri. La situazione è molto più subdola perfino di quella di AOL, poiché
il bug potrà non apparire o non apparire significativo alla maggior parte
degli utenti di questo software. Di qui, le ramificazioni a lungo termine di
un simile bug (o la nascita di altri bug a complicare la situazione) possono
passare inosservate finché non è troppo tardi. Se non ci fosse un server Web di riferimento open source e diffusissimo
come Apache, sarebbe del tutto comprensibile che queste leggere
incompatibilità fossero cresciute l'una sull'altra e si fossero
stratificate, nascoste sotto il biasimo reciproco o sotto trucchetti mentali
da Jedi ("Non è riproducibile in laboratorio..."), e dove la
risposta al problema: "non riesco a connettere il browser di X al
server di Y" sarebbe stata semplicemente "beh, usa il client di Y
e andrà tutto a posto". Al termine di questo processo ci saremmo
ritrovati due o più World Wide Web, uno costruito sui server di X, l'altro
sui server di Y, ciascuno funzionante solo con i client dei rispettivi
produttori. Ci sono numerosi precedenti storici per questo tipo di attività
anti-standard, una politica ("chiusura") codificata come pratica
commerciale fondamentale da molte società di software. Naturalmente, questo avrebbe significato la rovina per tutti gli altri
soggetti in causa: fornitori di contenuti, fornitori di servizi,
sviluppatori di software e chiunque dovesse usare l'HTTP per comunicare
avrebbero dovuto mantenere la propria offerta su due distinti server. A
dispetto della pressione degli utenti tecnici per "mettersi
d'accordo", la pressione contraria del marketing a "innovare,
differenziare, primeggiare nel settore, definire la piattaforma"
avrebbe trattenuto entrambe le parti dal tentare di liberare i loro
protocolli dagli obblighi del marchio proprietario. Una situazione analoga la vediamo nel caso del JavaScript client-side.
Tale era la differenza di comportamento fra i vari browser, e perfino fra
diverse versioni beta dello stesso browser, che gli sviluppatori hanno
dovuto creare un codice per riconoscere le diverse revisioni e assegnare
loro comportamenti diversi: la cosa ha allungato in modo significativo i
tempi di sviluppo delle pagine che adoperano il JavaScript. Si è dovuto
pertanto attendere che il W3C prendesse una posizione ufficiale e gettasse
le basi per un Document Object Model (DOM) perché si potesse vedere un
tentativo autentico e serio di creare uno standard multiparte intorno al
JavaScript. Esistono forze naturali, nel mondo moderno degli affari, che spingono
alla deviazione quando una specifica è implementata da un software chiuso.
Anche un errore accidentale di lettura di una specifica comune può causare
una deviazione, se non viene corretto all'istante. Per questo dico che costruire servizi o prodotti fondandoli su
piattaforme basate su standard è un bene per la stabilità dei processi di
business. Il successo di Internet non ha mostrato solo come le piattaforme
comuni contribuiscano a facilitare le comunicazioni, ma ha anche forzato le
aziende a pensare di più a come creare valore in quanto viene comunicato,
piuttosto che cercare di ricavare valore dalla rete in sé. Analizzare gli obiettivi per un progetto open source Poniamo che siate una azienda produttrice di database. Vendete un
database che funziona su diversi sistemi operativi e, separatamente, anche
pacchetti per l'amministrazione tramite interfaccia grafica, strumenti di
sviluppo rapido, una libreria di procedure comuni a uso degli utenti, ecc.
Fornite assistenza su base annua. Gli upgrade richiedono un nuovo acquisto.
Offrite anche corsi. Infine, avete una squadra di consulenza consistente e
in crescita che implementa il database per i clienti. Supponiamo che il bilancio delle vostre entrate si presenti più o meno
così:
A prima vista, l'idea di distribuire gratuitamente il database suona
assurda. Significherebbe buttar via il 40% delle vostre entrate. Se siete
una società fortunata sarete in profitto, e se siete ancora più fortunati
questo margine di profitto sarà forse del 20%. La rinuncia a quel 40%
spazzerebbe via tutto. Ciò, ovviamente, presupponendo che nessun altro fattore dell'equazione
cambi. Ma ci sono invece buone probabilità, se giocate bene le vostre
carte, che le cose cambino. I database non sono quel genere di applicazione
che le aziende prendono da uno scaffale a CompUSA, infilano nel CD drive
delle loro macchine e non ci pensano più. Tutte le altre voci d'entrata
restano valide e necessarie, senza relazione con il prezzo dell'OS. Infatti,
aumentare il prezzo di questi servizi aggiuntivi è adesso possibile più di
un tempo, quando il costo del software divorava quasi per intero il prezzo
che un consumatore pagava comprando un software di database. Quindi, in parole povere, se la distribuzione a basso prezzo (o
addirittura gratuita) del database portasse il database a raddoppiare la sua
base di utenti, e se gli utenti fossero motivati quanto lo erano prima ad
acquistare dalla vostra società consulenza, assistenza, strumenti di
sviluppo, librerie eccetera, si vedrebbe un incremento del 20% nelle entrate
complessive. La cosa più probabile è che al vostro software si avvicini
quattro o cinque volte il numero dei clienti che già avevate e, mentre le
entrate relative ad altri servizi diminuiranno, vuoi perchè molti utenti si
accontenteranno della versione gratuita, vuoi perchè alcuni concorrenti
offriranno i medesimi servizi per il vostro software, le entrate complessive
della vostra azienda saranno quasi certamente aumentate, a patto però che
gli introiti legati a tali servizi non diminuiscano eccessivamente. Ancora, a seconda della licenza usata, potreste abbassare il costo di
sviluppo del software. Vi capiterà di trovare clienti motivati che
correggono da sé i bug, per esempio, e nuove innovazioni da parte di
clienti che offrono il loro codice al progetto perché desiderano che venga
mantenuto come parte standard della distribuzione complessiva. Nel
complesso, i vostri costi di sviluppo dovrebbero diminuire. È anche probabile che, data una miscela prodotto/servizi come quella
sopra descritta, il rilascio gratuito del progetto non aiuterà i vostri
concorrenti ad essere competitivi nei vostri spazi di reddito. Ci sono
probabilmente già dei consulenti che compiono lavoro d'integrazione con i
vostri strumenti; autori indipendenti di manuali; librerie di codice
realizzati da altre aziende. La disponibilità del codice sorgente aiuterà
marginalmente la concorrenza nel fornire assistenza al vostro codice, ma
voi, in qualità di sviluppatori originali, avrete nel vostro marchio una
risorsa nascosta contro la quale gli altri dovranno confrontarsi. Va da sé che non sono tutte rose e fiori. Questo processo implica dei
costi che sarà difficile legare direttamente alle entrate. Per esempio, il
costo dell'infrastruttura a supporto di questo sforzo, pur poco
significativo di per sé, può gravare sull'amministrazione del sistema e lo
staff dell'assistenza. Calcolate anche il costo per le comunicazioni degli
sviluppatori con altri sviluppatori esterni all'azienda e le spese generali
extra per sviluppare il codice in modo pubblico. Un costo rilevante può
essere rappresentato dalla preparazione del codice per un minuzioso esame da
parte del pubblico. E dopo tutto questo lavoro, potrà capitare che non ci
sia "richiesta di mercato" per il vostro prodotto come freeware.
Il resto di questo saggio si propone di affrontare questi punti. Valutazione della richiesta di mercato per un prodotto Il primo passo è condurre un'analisi sulla competitività del mercato,
per identificare sia i concorrenti commerciali che quelli freeware, non
importa quanto piccoli siano. Fate molta attenzione a determinare
esattamente quello che il vostro prodotto offre, suddividendo la vostra
offerta in componenti, blocchi separabili che possano potenzialmente essere
raccolti, venduti o resi Open Source uno per uno. Analogamente, non
escludete combinazioni di freeware e software commerciale che offrano le
stesse funzionalità. Riprendiamo l'esempio del database, immaginando che il database del
produttore si componga di fatto di tre elementi: un server SQL di base; un
gestore del logging di backup/transaction; una libreria per sviluppatori. Un
tale produttore dovrebbe paragonare l'offerta dei suoi prodotti non solo con
quella dei giganti come Oracle e Sybase, non solo con quella dei concorrenti
commerciali più piccoli ma in crescita, come Solid e Velocis, ma anche con
database freeware come MySQL e Postgres. Tale analisi potrebbe portare alla
conclusione che il server SQL di base dell'azienda non fornisca che poche
funzioni in più rispetto a MySQL, e in un'area che non è mai stata
considerata di vantaggio competitivo ma meramente una caratteristica
necessaria a tenere il passo con gli altri produttori di database. Il
gestore del logging di backup/transaction non ha rivali freeware e la
libreria per sviluppatori è surclassata dalle utility Perl DBI, ma ha poca
concorrenza nel comparto Java o C. Quest'azienda potrebbe allora considerare le strategie seguenti:
Personalmente sconsiglierei quest'ultimo approccio nelle circostanze
descritte, visto che MySQL parte davvero avvantaggiato, con moltissimi
add-on e una base di utenti piuttosto ampia. Tuttavia, di tanto in tanto un progetto open source marca il passo, o
perché il team principale di sviluppo non sta sviluppando attivamente, o
perché il software s'imbatte in problemi architetturali che gli impediscono
di soddisfare richieste nuove, o semplicemente perché l'ambiente in cui una
richiesta era nata s'inaridisce o cambia obiettivo. Quando ciò accade, e
diventa chiaro che la gente è alla ricerca di alternative, c'è la
possibilità d'introdurre un rimpiazzo che attirerà l'attenzione, anche se
non rappresenterà immediatamente un progresso significativo dello stato
delle cose. L'analisi della domanda è essenziale poiché di solito è la domanda che
crea nuovi progetti open source. Apache nacque quando un gruppo di webmaster,
che si passavano l'un l'altro patch per il Web server NCSA, a un certo punto
decisero che questa specie di scambio delle figurine era una pratica poco
efficiente e soggetta a errori, e scelsero dunque di operare una
distribuzione separata del server NCSA con le loro patch incorporate.
Nessuno dei protagonisti di quei giorni lontani si trovò coinvolto perché
voleva vendere un server commerciale con Apache come base, anche se si
tratta certo di una ragione validissima. L'analisi della domanda di mercato per un particolare progetto open
source implica dunque che si frequentino le mailing list e i forum di
discussione pertinenti, che si scandaglino gli archivi dei newsgroup, che
chieda a clienti e concorrenti; solo allora sarà possibile stabilire
realisticamente se esiste qualcuno disposto a contribuire allo sviluppo del
vostro progetto. Tornando agli albori di Apache: quelli fra noi che si scambiavano le
patch, le mandavano anche alla NCSA, sperando che sarebbero state
incorporate, o almeno che la loro esistenza venisse riconosciuta, per essere
rassicurati sul fatto che avremmo potuto compiere l'upgrade senza problemi
all'uscita della successiva release. Ma la NCSA aveva ricevuto un duro colpo
quando i primi programmatori del server le erano stati portati via da
Netscape; i programmatori rimasti non potevano far fronte all'inondazione di
email. Costruirci il nostro server fu quindi un risultato dell'istinto di
conservazione più che della volontà di creare il futuro grande server Web.
È importante avere obiettivi contenuti quando si comincia, perché li si
può raggiungere senza troppe difficoltà e non si deve dipendere dal fatto
che il progetto arrivi a dominare il mercato per trarre qualche vantaggio
dall'approccio. La posizione dell'Open Source nello spettro del software Il software open source si è sempre posizionato più verso l'estremità
infrastrutturale/ back-end dello spettro del software così rappresentato, e
questo per diversi motivi:
Ecco perché vediamo consistenti offerte open source nell'ambito dei
sistemi operativi e dei servizi di rete, e molto pochi, invece, nell'ambito
delle applicazioni per desktop. Non mancano certamente eccezioni. Esempio illustre è GIMP, o GNU Image
Manipulation Program, un programma per X11 paragonabile per ricchezza di
funzionalità a Photoshop di Adobe. È vero però che, in un certo senso,
anche questo prodotto è uno strumento "infrastrutturale", una
piattaforma, dal momento che deve il suo successo alla sua meravigliosa
architettura a plug-in e alle dozzine e dozzine di plug-in che sono stati
sviluppati e che permettono di importare ed esportare molti diversi formati
di file e che implementano centinaia di effetti-filtro. Date un'altra occhiata allo spettro che avete disegnato. A un certo
punto, potete osservare la vostra offerta nel contesto di questi concorrenti
e tracciare una linea verticale. Questa linea denota la separazione fra il
vostro spazio Open Source e quello che decidete di mantenere proprietario.
Questa stessa linea rappresenta la vostra vera piattaforma, la vostra
interfaccia fra il codice pubblico che state cercando di affermare come
standard, a sinistra, e il codice proprietario per il quale volete stimolare
la domanda, a destra. La natura aborre il vuoto Torniamo all'esempio del database: poniamo che decidiate di rendere
pubblico il codice sorgente del vostro server SQL di base (o del codice
avanzato che avete posto sopra MySQL), ma anche che abbiate deciso di
guadagnare creando un driver commerciale, senza distribuirne i sorgenti, per
collegare quel database a un server Web per creare contenuti dinamici. Avete
stabilito che il database sarà l'elemento economicamente in perdita del
prodotto, bilancerete aumentando i margini di guadagno sulla componente. Dal momento che connettere database ai server Web è cosa assai comune e
auspicabile, gli sviluppatori non potranno prescindere da voi oppure
dovranno trovare un altro sistema per accedere al database dal sito Web.
Ogni sviluppatore sarà motivato dall'idea di risparmiare il denaro che
altrimenti dovrebbe pagarvi. Se un numero sufficiente di sviluppatori unisce
le forze per ripagarsi del tempo impiegato per questo lavoro, o se capita
che un solo capace sviluppatore non possa permettersi il plug-in ma voglia
usare quel database, è possibile che un bel mattino, svegliandovi, troviate
un concorrente open source alla vostra offerta commerciale, e ciò
eliminerà completamente il vantaggio di possedere l'unica soluzione per
quel compito. Questa non è che una parte di un quadro più ampio: dipendere, per il
proprio guadagno, da codice sorgente proprietario in prodotti strategici, è
diventato un'impresa rischiosa. Se siete in grado di trarre profitto
supportando la combinazione server Web + plug-in + database, o fornendo
un'interfaccia per la gestione complessiva di quel sistema, sarete protetti
contro sorprese di questo tipo. Non tutto il software commerciale si presenta così vulnerabile: è una
particolare caratteristica di quello che cerca di inserirsi in una nicchia
direttamente fra due offerte open source consolidate. Collocare la vostra
offerta commerciale come aggiunta al set corrente di offerte open source è
una strategia più solida. Lo regalo o me lo tengo? C'è una ragione valida che consiglia di approfittare, quando un
pacchetto open source in una categoria si sovrappone alla vostra potenziale
offerta, donando il vostro codice aggiuntivo o altri miglioramenti al
progetto esistente per mirare a un ritorno sotto forma di un codice
complessivamente di miglior qualità, di una spinta nell'ambito marketing o
dell'istituzione di una piattaforma comune. Nel valutare l'opportunità di
una simile strategia bisogna fare attenzione ai termini della licenza:
Far contenti gli sviluppatori è probabilmente la sfida maggiore nel
modello open source, una sfida che né l'impegno tecnologico né, a ben
vedere, i soldi aiutano più di tanto a vincere. Ogni sviluppatore deve
sentire di contribuire in modo positivo al progetto, deve sentirsi
ascoltato; i suoi commenti sull'architettura e sulla progettazione devono
essere valutati e rispettati, gli sforzi profusi nel codice ricompensati con
l'integrazione nella distribuzione o, in caso contrario, con un rifiuto
ottimamente argomentato. Sbaglia chi dice: "Il modello open source funziona perché l'intera
Internet diventa il vostro dipartimento di ricerca e sviluppo e la vostra
assistenza". Di fatto, la quantità di sforzo disponibile per un dato
set di compiti da parte di un programmatore di talento è di solito
limitata. Così, è di solito nell'interesse di tutti se gli sforzi di
sviluppo parallelo non s'intraprendono al solo scopo di evitare dispute
semantiche fra sviluppatori. D'altra parte, si ha un'evoluzione più
efficiente quando soluzioni alternative sono in gara per aggiudicarsi le
risorse. Non sarà quindi un male avere due soluzioni in gioco nella
medesima nicchia, se solo il talento in gioco pareggia la massa critica; una
soluzione potrebbe contenere un'innovazione non contemplata nell'altra. La concorrenza ha dato prova della sua utilità nel campo dei server SMTP.
Il programma "Sendmail" di Eric Allman ha rappresentato a lungo lo
standard per i "daemon" STMP presenti su ogni sistema operativo.
Sono comparsi poi altri concorrenti open source, come Smail o Zmailer, ma il
primo ad aver fatto veramente breccia sugli utenti è stato il pacchetto
Qmail di Dan Bernstein. Quando Qmail si è presentato sulla scena, Sendmail
aveva vent'anni e cominciava a dimostrarli; per giunta, non era progettato
per l'Internet degli anni Novanta, in cui i buffer overflow e la caduta del
servizio sono diventati comuni come i temporali a Seattle. Qmail era
rivoluzionario sotto diversi aspetti: progetto del programma,
amministrazione, perfino la definizione di "comportamento
corretto" per un server SMTP. Un'evoluzione del genere sarebbe stata
altamente improbabile per il pacchetto Sendmail di Allman, non perché
Allman e i suoi non fossero bravi programmatori o perché mancassero
contributi di terze parti: è semplicemente che, a volte, ci vuole uno
stacco netto per provare qualcosa di veramente nuovo e vedere se funziona.
Per ragioni simili, l'IBM ha sovvenzionato lo sviluppo del daemon SMTP
"SecureMailer" di Weiste Venema, che nel momento in cui scrivo
sembra destinato a una buona popolarità. Lo spazio dei daemon SMTP è
abbastanza ben definito e importante da supportare più di un progetto open
source; solo il tempo può dire quale sopravviverà. Bootstrapping Nel cercare di determinare che domanda ci sia per il vostro progetto, vi
sarete probabilmente imbattuti in un certo numero di altre società e
individui abbastanza interessati da formare un nucleo base di sviluppatori.
Una volta decisa una strategia, proponetela con determinazione anche
maggiore a questo nucleo, magari avviando a questo scopo una semplice
mailing list di discussione, in cui niente sia ancora inciso nel marmo. È
molto facile che dal gruppo emergano idee significative per il successo del
progetto e una lista delle risorse che potranno contribuirvi. Per i progetti
più semplici basterà che il gruppo s'impegni a provare il vostro prodotto
e a rimanere nella mailing list di sviluppo. Tuttavia, per progetti più
impegnativi, sarebbe bene valutare le dimensioni totali di questa base di
risorse. Quanto segue è la mia idea delle risorse minime per un progetto di media
complessità, quale potrebbe essere la creazione di un comune plug-in di
scelta e acquisto (del tipo "carrello della spesa") per un server
Web, o di un nuovo tipo di daemon di rete che implementi un semplice
protocollo. È anche compresa una descrizione dei ruoli richiesti e della
competenze necessarie a ciascuno.
Ci ritroviamo dunque con cinque figure che equivalgono grosso modo a
tre impiegati a tempo pieno. In realtà, alcuni di questi ruoli vengono
gestiti da gruppi di persone che ne condividono la responsabilità, e
alcuni progetti sopravvivono con meno di cinque ore alla settimana spese
in media dai partecipanti-chiave, una volta superate le asperità delle
prime release. Ma all'inizio del progetto è essenziale che gli
sviluppatori gli dedichino lo stesso tempo e concentrazione che
impiegherebbero se il progetto fosse una normale impresa di sviluppo di
un'azienda. Questi cinque ruoli, inoltre, non coprono alcuna risorsa che potrebbe
essere indirizzata a un nuovo sviluppo: si tratta di puro aggiornamento.
In conclusione, se non trovate fra colleghi e partner risorse
sufficienti per coprire queste basi, più sviluppatori extra per
realizzare nuove fondamentali implementazioni (finché non farete nuovi
reclutamenti), sarà forse il caso che riconsideriate il tutto. Quale licenza? Copyright di tipo BSD Da un punto di vista commerciale, questa licenza è la migliore
quando s'interviene su di un progetto preesistente, perché non ci si
deve preoccupare di licenze o di restrizioni sull'uso o la
ridistribuzione futuri. È possibile miscelare e adattare questo
software al vostro codice proprietario e rilasciare solo quello che
ritenete possa essere utile al progetto e quindi, di riflesso, a voi. È
uno dei motivi per cui l'abbiamo scelta per il gruppo Apache. A
differenza di molti progetti software gratuiti, Apache fu avviato in
gran parte da webmaster dell'ambito commerciale che cercavano un server
Web migliore per le loro esigenze di business. È probabile che nessuno
di noi mirasse a creare un server commerciale sopra Apache, ma nessuno
sapeva che cosa il futuro avesse in serbo per noi, e limitare le nostre
opzioni fin dall'inizio non sarebbe stato intelligente. Questo tipo di licenza è l'ideale per promuovere l'uso di un corpus
di codice di riferimento che implementi un protocollo o un servizio
comune. È un altro motivo della sua scelta per il gruppo Apache: molti
di noi volevano che l'HTTP sopravvivesse e diventasse un vero standard
multiparte, e non ci siamo minimamente preoccupati se Microsoft o
Netscape avessero deciso di incorporare nei loro prodotti il nostro
motore HTTP o qualunque altra componente del nostro codice, se solo ciò
avesse contribuito all'intento di mantenere comune l'HTTP. Un tale grado di apertura presenta i suoi rischi. La licenza non fa
riferimento ad alcun incentivo alle aziende perché diano in cambio le
loro aggiunte al codice del progetto. Si sono in effetti dati casi in
cui alcune aziende hanno sviluppato intorno al progetto delle tecnologie
che ci sarebbe piaciuto vedere a loro volta offerte al progetto stesso.
Ma se avessimo avuto una licenza che prescriveva che il codice
aggiuntivo dovesse essere reso disponibile al progetto d'origine, si
può pensare che quelle aggiunte non sarebbero nemmeno state fatte. Tutto questo per dire che, strategicamente parlando, il progetto deve
mantenere una spinta sufficiente e che i partecipanti realizzano un
valore maggiore contribuendo con il loro codice al progetto: perfino il
codice che avrebbe avuto un valore se mantenuto proprietario. È un
equilibrio complicato da mantenere, specialmente quando un'azienda
decide di aumentare considerevolmente il codice scritto su un progetto
derivativo, e comincia a dubitare se il possibile ritorno valga lo
sforzo del contributo. Insomma, lavoriamo più di tutti gli altri messi
insieme, perché dovremmo spartire? Chi scrive non ha la risposta a
questa domanda. Quello che posso dire è che quell'azienda non ha
probabilmente saputo trovare un modo più persuasivo per ispirare alle
terze parti la voglia di contribuire per raggiungere gli obiettivi di
progettazione più efficacemente. La licenza pubblica Mozilla Essa prescrive che le modifiche alla "distribuzione" siano
rilasciate sotto lo stesso copyright della MPL, il che la rende di nuovo
disponibile al progetto. "Distribuzione" sono definiti i file
così come vengono distribuiti nel codice sorgente; è importante
perché consente a un'azienda di aggiungere un'interfaccia a una
libreria di codice proprietario senza prescrivere che l'altra libreria
di codice sia pure sottoposta alla MPL, ma solo l'interfaccia. In questo
modo, il software può venir inserito, in grado variabile, entro un
ambiente software commerciale. La licenza ha numerose clausole a protezione sia del progetto nella
sua interezza sia dei suoi sviluppatori contro questioni di brevetto nel
codice aggiunto che potrebbero insorgere. Prescrive che l'azienda o
l'individuo che contribuisca con codice al progetto rinunci a ogni
possibile pretesa a diritti di brevetto a cui il codice potrebbe dare
adito. La seconda clausola è importantissima; al momento in cui scrivo,
contiene anche un grave difetto. Preoccuparsi delle questioni di brevetto è Cosa Buona E Giusta. C'è
sempre il rischio che, in perfetta buona fede, un'azienda offra codice a
un progetto e poi, una volta che il codice sia stato completamente
implementato, cerchi di reclamare il pagamento di una qualche
concessione di brevetto per il suo uso. Una simile strategia
commerciale, oltre a essere di pessimo gusto, è un vero passo falso dal
punto di vista delle pubbliche relazioni, ma purtroppo non tutte le
aziende arrivano a capirlo. La seconda clausola, dunque, previene il
caso di qualcuno che fornisca di nascosto del codice ben sapendo che è
brevettato e passibile di causare dei gran mal di testa a tutte le parti
in causa. Questo non elimina naturalmente l'eventualità che qualcun altro sia
titolare di un brevetto che possa far valere: non esiste strumento
legale che forniscono questo tipo di protezione. Per la verità, io
farei appello all'Ufficio Federale Brevetti e Commercio (U.S. Patent and
Trade Office) perché se ne faccia carico: se ha l'autorità per
definire certe idee e algoritmi come proprietà di un soggetto, dunque
perché non gli si dovrebbe richiedere di fare l'opposto e di
certificare come libero da brevetti il codice che ho presentato,
garantendomi protezione da cause per violazione di brevetto? Come ho detto prima, tuttavia, la MPL vigente al dicembre 1998
presenta un difetto. In sostanza, la Sezione 2.2 prescrive (nella sua
definizione di "Contributor Version") che chi da il contributo rinunci a reclamare brevetti
su qualunque parte di Mozilla, non solo sul codice che ha fornito. Può
non sembrare un difetto: sarebbe bello che una quantità di grandi
aziende rinunciasse a ogni diritto sull'intero pacchetto. Purtroppo c'è una grande azienda che detiene uno dei più grandi
portafogli di brevetti al mondo, che ha un grosso e specifico problema
con questo cavillo. Non già perché voglia una volta o l'altra
perseguire Mozilla e pretendere royalty, che sarebbe follia. La
preoccupa il fatto che alcune parti di Mozilla implementano processi su
cui essa detiene dei brevetti grazie ai quali incassa ogni anno
moltissimi dollari: e se rinunciasse a far rispettare i brevetti sul
codice di Mozilla, quelle altre aziende che pagano migliaia di dollari
per quei brevetti, potrebbero semplicemente prendere da Mozilla il
codice che li implementa e portarlo nei loro prodotti, eliminando la
necessità di comprare la licenza del brevetto detenuto dalla succitata
grande azienda. Questo non rappresenterebbe un problema se la Sezione
2.2 della MPL si riferisse semplicemente alle patch oggetto di
contributo piuttosto che all'intero browser, quando si viene alla
rinuncia ai diritti di brevetto. A parte questo cavillo, la MPL è una licenza straordinariamente
solida. Prescrivere che le modifiche debbano tornare al
"nucleo" significa che le correzioni di bug essenziali e i
miglioramenti della portabilità rifluiranno nel progetto, mentre
caratteristiche a valore aggiunto potranno sempre essere sviluppate da
entità commerciali. Si tratta forse della licenza da preferire quando
si sviluppano applicazioni per l'utente finale, nelle quali i brevetti
possono più facilmente diventare un problema e più grande può essere
l'impulso a ramificare il progetto. Per contro, la licenza BSD è forse
più adatta a progetti destinati a essere "invisibili" o
essenzialmente librerie di funzioni, quali un sistema operativo o un
server Web. La Licenza Pubblica GNU Fondamentalmente, la GPL (General Public License) prescrive che gli
incrementi, i derivati e perfino il codice che incorpora altro codice
sotto GPL vengano rilasciati essi stessi come codice sorgente sotto GPL.
Questo comportamento "virale" è stato ampiamente propagandato
dagli apologeti dell'Open Source come un modo per assicurare che il
codice che nasce free rimanga free: che non ci sia possibilità che un
interesse commerciale possa deviare le versioni di sviluppo dal codice
disponibile e impegnare risorse che non siano rese pubbliche. Agli occhi
di chi licenzia il proprio software sotto GPL, sarebbe meglio non
ricevere addirittura contributi che riceverne per poi non poterli usare
liberamente. La cosa ha naturalmente un interesse speculativo, e si
trovano sostenitori che dichiarano che Linux non sarebbe arrivato dov'è
se non avesse avuto una GPL, perché la lusinga della deviazione per
ragioni commerciali sarebbe stata troppo forte, impedendo di raggiungere
la massa critica dello sforzo di sviluppo unificato. A prima vista, dunque, parrebbe che la GPL non possa coesistere
felicemente con un fine commerciale collegato al software open source. I
tradizionali modelli di guadagno attraverso l'aggiunta di valore al
software non sono qui praticamente possibili. Tuttavia, la GPL potrebbe
essere un mezzo efficacissimo per affermare una piattaforma che scoraggi
perfino la creazione di piattaforme concorrenti, e per proteggere la
rivendicazione di chi voglia essere conosciuto come il "primo"
fornitore di prodotti e servizi residenti su questa piattaforma. Ne sono esempi Cygnus e GCC. Cygnus opera un sostanzioso blocco di
modifiche ogni anno, portando GCC su diversi tipi di hardware e
mantenendo quei porting. La grandissima parte di quel lavoro, secondo il
dettato della GPL, va come contributo alla distribuzione di GCC che
viene reso gratuitamente disponibile. Cygnus fa pagare lo sforzo insito
nel porting e nell'aggiornamento, non il codice in sé. La storia di
Cygnus e della sua leadership in questo ambito ne fanno l'azienda di
riferimento quando ci si voglia accostare a questo tipo di servizio. Se un concorrente volesse cominciare a competere con Cygnus, sarebbe
costretto a distribuire anch'esso le sue modifiche con licenza GPL: in
altri termini, non c'è speranza che un concorrente possa trovare una
nicchia tecnico commerciale che sia sfruttabile con la struttura GCC
senza dare a Cygnus la stessa opportunità di approfittare anche di
quella tecnologia. Cygnus ha creato una situazione in cui i concorrenti
non possono competere sul piano della diversificazione tecnologica, a
meno che non intendano spendere quantità ingenti di tempo e di denaro e
usare una piattaforma completamente diversa da GCC. Un'altra maniera in cui si potrebbe usare la GPL per intenti
commerciali è sotto forma "tecnologia sentinella", con una
versione non-GPL dello stesso codice disponibile per la vendita. Per
esempio, poniamo che abbiate un ottimo programma per criptare le
connessioni TCP/IP su Internet. Non v'importa che venga usato in modo
commerciale o meno: vostro interesse è che chi vuole incorporarlo in un
prodotto o ridistribuirlo a pagamento vi paghi per l'autorizzazione a
farlo. Se mettete il codice sotto una licenza GPL, questo secondo gruppo
di utenti non potrà fare quello che vuole senza mettere per intero
sotto GPL il suo prodotto, cosa che molti di loro non sarebbero propensi
a fare. Ma se mantenete un ramo del vostro progetto separato, ossia non
sotto GPL, potrete licenziare commercialmente il ramo separato di codice
come meglio vi aggrada. Bisogna però fare molta attenzione e accertarsi
che tutto il codice che vi è stato dato spontaneamente da terze parti
sia disponibile per questa ramificazione non-gratuita; potete farlo
dichiarando che solo voi (o vostri dipendenti) scriverete codice per
questo progetto, oppure che (in aggiunta) otterrete da parte di tutti coloro che hanno contribuito al progetto il permesso
esplicito di riversare qualunque loro contributo in una versione
commerciale. Per alcune società questo è un modello commerciale sostenibile: un
esempio è Transvirtual di Berkeley, che applica questo modello a una
Java Virtual Machine leggera e a un progetto di libreria di classi. Si
può obiettare che un alto numero di partecipanti a un progetto verrebbe
respinto da un simile modello, e che le versioni GPL e non-GPL
potrebbero divergere; a mia volta, obietto che se si trattano i
partecipanti con lealtà, magari anche offrendo loro denaro o compensi
d'altro tipo in cambio dei loro contributi (dopo tutto è in gioco il
vostro interesse primario), questo modello potrebbe funzionare. L'ambito della licenza open source evolverà certamente nei prossimi
anni quanto più diventerà chiaro che cosa funziona e che cosa no. La
verità è che avete la libertà di inventarvi una licenza nuova, che
descriva esattamente il punto dello spettro (delimitato da BSD a destra
e da GPL a sinistra) in cui vorreste collocarla. Ricordatevi solo che
quanto più grande sarà la libertà che accorderete a coloro che usano
ed estendono il vostro codice, tanto più essi saranno incentivati a
contribuirvi. Strumenti per il lancio di un progetto Open Source Il più importante è il CVS, o Current Versioning System. Si tratta
di una raccolta di programmi che implementano un "repository"
di codice condiviso, aggiornando un database di modifiche, ciascuna
delle quali porta un nome e una data. È estremamente valido per
permettere a diverse persone di essere "autori" simultanei di
un programma senza intralciarsi a vicenda. È utile anche nel processo
di debugging, poiché si possono ripercorrere a ritroso le modifiche una
per una, per scoprire dove esattamente si sia potuto introdurre un certo
bug. Poiché sono disponibili client per tutte le principali
piattaforme, funziona alla perfezione su linee commutate o attraverso
connessioni a lunga distanza. Può anche essere protetto tramite
tunneling su una connessione criptata che usi SSH. Il Progetto Apache usa il CVS non solo per tenere aggiornato il
software ma anche il file "STATUS" in cui collochiamo tutte le
principali questioni in discussione, ciascuna completa di commenti,
opinioni e perfino voti. Lo usiamo anche per raccogliere i voti sulle
decisioni prese dal gruppo, per tenere aggiornati i documenti del nostro
sito Web, per gestire i documenti di sviluppo, ecc. In breve, è la
risorsa e il software di gestione delle conoscenze del progetto. La sua
semplicità può sembrare un inconveniente, il software in questo campo
è di solito costoso e ricco di funzioni, ma la verità è che nel caso
di CVS la semplicità è una gran virtù. Tutte le componenti del CVS
sono gratuite, sia il server che i client. Altro elemento vitale per un progetto open source è una solida base
di forum di discussione per sviluppatori e per utenti. Qui, la scelta
del software è lasciata molto al caso: noi usiamo Majordomo, ma anche
ezmlm, Smartlist o un altro qualsiasi programma sarebbe potuto andare
ugualmente bene. Quello che conta è che ogni sforzo di sviluppo abbia
la sua mailing list, così che gli sviluppatori possano selezionare da
sé ciò che li interessa e restare ragionevolmente aggiornati sullo
sviluppo. Sarà anche saggio creare per ogni progetto liste separate al
quale il server CVS invia per email le modifiche che vengono operate nel
suo "repository", per consentire una specie di controllo
passivo delle modifiche fra colleghi. Questo modello è in effetti molto
efficace per mantenere gli standard del codice e per scoprire bug. Può
essere anche il caso di predisporre liste diverse per utenti e
sviluppatori e magari perfino di distinguere fra tutti gli sviluppatori
e un gruppo pilota, se il progetto è di ampio respiro. Infine, è
importante che si rendano disponibili pubblicamente gli archivi delle
liste, così che i nuovi utenti possano, tramite una ricerca, sapere se
un certo problema sia già stato trattato, o come si sia risposto in
passato a certe domande. Tener traccia di bug e di problemi è anche essenziale in un progetto
ben condotto. Al Progetto Apache usiamo uno strumento GNU chiamato GNATS,
che ci è stato molto utile in oltre 3000 segnalazioni di bug. Vi
servirà uno strumento che permetta a diverse persone di rispondere alle
segnalazioni di bug, di specializzarsi sui bug di una specifica
componente del progetto e di leggere e rispondere via email alle
segnalazioni, anziché solo tramite un modulo in una pagina Web.
L'obiettivo principale per il database dei bug è di essere il più
semplice e automatico possibile, sia per gli sviluppatori che rispondono
alle segnalazioni di bug (perché è veramente un compito noioso) sia
per ricercare se un certo bug sia già stato inserito. In sostanza, il
database dei bug diventerà il vostro deposito di conoscenza aneddotica
del progetto e delle sue capacità. Perché un certo comportamento è
una caratteristica, non un bug? C'è qualcuno al lavoro su un problema
segnalato? Ecco le domande a cui un buon database di bug dovrebbe
cercare di rispondere. L'approccio open source non è una magia che funzioni per tutti i
progetti di sviluppo software. Lanciare un progetto di successo richiede
non solo le giuste condizioni ma anche un'enorme quantità di lavoro,
perché esso prenda finalmente vita. In più di un senso voi, come
sostenitori del nuovo progetto, dovrete agire come il dottor
Frankenstein, ora miscelando sostanze chimiche, ora somministrando
scosse elettriche, per portare il vostro mostro alla vita. Buona
fortuna.
Per quanto io sia un accanito fan dell'approccio Open Source allo sviluppo
del software, ammetto senz'altro l'esistenza di situazioni in cui le parti
in causa non vi troverebbero vantaggi. Il modello implica notevoli
compromessi e il ritorno non è mai garantito. Un'analisi accurata vuole che
ci si chieda quali siano gli obiettivi a lungo termine dell'azienda e quali
i vantaggi competitivi di cui essa dispone oggi.
Quello che dovreste chiedervi, come società, è a che livello i vostri
prodotti implementino una nuova piattaforma e fino a che punto è nel vostro
interesse mantenere la proprietà di quella piattaforma. Quanto della vostra
offerta di prodotti e servizi, quanto delle vostre entrate, si trova sopra o
sotto quella piattaforma? Ecco qualcosa che potete probabilmente esprimere
in cifre.
Un'azienda può essere tentata di guardare all'Open Source come a un modo di
salvare un certo progetto, di guadagnare notorietà o semplicemente di
trovare un buon pretesto per abbandonare una categoria di prodotti. Nessuna
di queste è una buona ragione per lanciare un progetto Open Source. Se una
società intende perseguire questo modello seriamente, deve fare le sue
ricerche per determinare con precisione che cosa il prodotto debba essere
perché una strategia Open Source abbia successo.
Sono tutti approcci validi. Eccone un altro:
Per determinare a quali parti della vostra linea di prodotti, o a quali
componenti di un dato prodotto, applicare il modello open source, può
essere utile svolgere questo semplice esercizio. Cominciate col tracciare
una linea che rappresenti uno spettro. A sinistra scrivete "Infrastrutturale",
cioè il software che implementa le struttura di supporto e le piattaforme,
giù fino al TCP/IP e al kernel e perfino all'hardware. A destra scrivete
"Applicazioni per l'utente finale", cioè gli strumenti e le
applicazioni che verranno usate dall'utente medio, non tecnico. Lungo questa
linea disegnate dei punti rappresentanti, in termini relativi, le zone in
cui ritenete si collochi ognuna delle componenti del vostro prodotto.
Dall'esempio fatto sopra, i front-end GUI (a interfaccia grafica) e gli
strumenti di amministrazione si troveranno all'estrema destra, mentre il
codice che gestisce i backup sarà all'estrema sinistra. Le librerie di
sviluppo saranno poco a destra del centro, le risorse SQL di base poco a
sinistra. A questo punto potrete inserire i prodotti dei concorrenti, divisi
anch'essi nelle loro componenti, usando, se siete veramente creativi, colori
diversi per distinguere le offerte gratuite da quelle commerciali. Il
risultato sarà molto probabilmente che l'offerta gratuita tenderà a
raggrupparsi verso sinistra, quella commerciale verso destra.
Qualunque software commerciale all'interno di un ambiente altrimenti
completamente open source, è una forte motivazione a sviluppare da zero il
software in un ambiente realmente "pubblico". Come avviene in
natura, quando esiste una barriera commerciale tra due validi software open
source, il desiderio di oltrepassare l'ostacolo porta a creare un
"ponte" che li colleghi. Questo è vero perché ogni divario può
essere colmato e superato a patto di disporre delle risorse necessarie; se
questo divario è abbastanza piccolo perché la vostra azienda possa
colmarlo ricorrendo al suo solo team di sviluppo, sarà probabilmente
abbastanza piccolo perché venga colmato anche un gruppo di sviluppatori
motivati.
In molte delle categorie software standard è presente software open source,
specialmente in quelle rivolte ai server. Troviamo, ovviamente, sistemi
operativi ma anche server Web, server di posta (SMTP, POP, IMAP), server di
news (NNTP) e server DNS, linguaggi di programmazione (il collante dei
contenuti dinamici sul Web), database, codice di networking di ogni sorta.
Sui desktop abbiamo editor di testo come Emacs, Nedit e Jove, sistemi a
finestre come Gnome e KDE, browser Web come Mozilla, e salvaschermo,
calcolatrici, programmi di gestione di conti bancari, PIM, client di posta,
strumenti di imaging... la lista potrebbe continuare. Non tutte le categorie
hanno la loro killer application, tipo Apache o Bind, ma non sono davvero
molte le nicchie commerciali che non dispongano, almeno dove non esista una
nascente proposta alternativa open source. Questo è molto meno vero per la
piattaforma Win32 di quanto non lo sia per Unix o Macintosh, soprattutto
perché la cultura open source non ha adottato tale piattaforma in quanto
non abbastanza "aperta" per costruirvi sopra seriamente.
È essenziale alla salute di un processo open source che esso abbia un
sufficiente impulso iniziale per essere in grado di evolvere e rispondere a
sfide nuove. Niente è statico nel mondo del software e ogni componente
principale richiede una costante opera di aggiornamento e miglioramento. Una
delle grandi attrattive commerciali di questo modello è che riduce la
quantità di sviluppo di ogni parte in causa; ma, perché la teoria si
traduca in fatti, servono altri sviluppatori attivi.
Avvio: 100 ore.
Manutenzione: 20 ore alla settimana.
Avvio: 40-200 ore (a seconda del tempo richiesto per la sistemazione del
codice per l'uso pubblico!).
Manutenzione: 20 ore alla settimana.
Avvio: il tempo necessario per padroneggiare il codice.
Manutenzione: 10-15 ore alla settimana.
Avvio: 60 ore (supponendo che la maggior parte del codice sia
documentato).
Manutenzione: 10 ore alla settimana.
Avvio: il tempo di conoscere il progetto.
Manutenzione: 20 ore alla settimana.
Scegliere il tipo di licenza che meglio convenga al vostro progetto
potrebbe rivelarsi un'impresa complessa e talvolta poco divertente,
anche se potrà esserlo per il vostro ufficio legale. Esistono rapporti
e siti Web molto dettagliati su quest'argomento; qui farò alcune
considerazoni generali di carattere commerciale sulle varie licenze.
È il copyright usato da Apache e dai sistemi operativi basati su BSD (FreeBSD,
OpenBSD, NetBSD) e si può riassumere così: "Ecco il codice,
fateci quello che volete, non c'interessa; solo, se lo provate e lo
vendete, datacene credito". Di solito il credito viene riscosso in
diverse forme: sulla pubblicità, in un file README, nella
documentazione cartacea, ecc. È stato obiettato che tale copyright
potrebbe non essere scalabile, cioè: chi rilasciasse un software in
bundle che includa 40 differenti moduli open source, tutti basati su
BSD, dovrebbe fornire 40 differenti notizie di copyright. Nella pratica
questo non è mai stato un problema, anzi è stato visto come una forza
positiva per diffondere consapevolezza sull'uso del software Open Source.
La Mozilla Public License (MPL) è stata sviluppata dal team Mozilla di
Netscape per l'impiego nei loro progetti. Quando fu rilasciata, era la
prima licenza di tipo nuovo dopo molti anni e rispondeva davvero a molte
questioni-chiave ignorate dalle licenze BSD o GNU. Nello spettro delle
licenze software open source è adiacente alla licenza in stile BSD, con
due differenze sostanziali:
La licenza GNU, che certamente non è concepita per l'ambito
commerciale, presenta tuttavia elementi di un certo richiamo (che ci
crediate o no) anche per i fini di business.
Nel Progetto Apache disponiamo di un eccellente set di strumenti
disponibili e aggiornati per consentire l'ottimale funzionamento del
nostro processo di sviluppo distribuito.
Copyright ©
1995-1999 Apogeo srl, Milano
Questa è una traduzione italiana non ufficiale della Licenza Pubblica Generale GNU. Non è pubblicata dalla Free Software Foundation e non ha valore legale nell'esprimere i termini di distribuzione del software che usa la licenza GPL. Solo la versione originale in inglese della licenza ha valore legale. Ad ogni modo, speriamo che questa traduzione aiuti le persone di lingua italiano a capire meglio il significato della licenza GPL.
This is an unofficial translation of the GNU General Public License into Italian. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL – only the original English text of the GNU GPL does that. However, we hope that this translation will help Italian speakers understand the GNU GPL better.
LICENZA PUBBLICA GENERICA (GPL) DEL PROGETTO GNU
Versione 2, Giugno 1991
Copyright © 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA
Traduzione curata dal gruppo Pluto e da ILS, ultimo aggiornamento, 30 luglio 1998.
Tutti possono copiare e distribuire copie letterali di questo documento di licenza, ma non è lecito modificarlo.
Preambolo
Le licenze per la maggioranza dei programmi hanno lo scopo di togliere
all'utente la libertà di condividerlo e di modificarlo. Al contrario, la
Licenza Pubblica Generica GNU è intesa a garantire la libertà di condividere e
modificare il free software, al fine di assicurare che i programmi siano
“liberi” per tutti i loro utenti. Questa Licenza si applica alla maggioranza
dei programmi della Free Software Foundation e ad ogni altro programma i cui
autori hanno scelto questa Licenza. Alcuni altri programmi della Free Software
Foundation sono invece coperti dalla Licenza Pubblica Generica per Librerie.
Chiunque può usare questa Licenza per i propri programmi.
Quando si parla di “free software”, ci si riferisce alla libertà, non al prezzo. Le nostre Licenze (la GPL e la LGPL) sono progettate per assicurarsi che ciascuno abbia la libertà di distribuire copie del free software (e farsi pagare per questo, se vuole), che ciascuno riceva il codice sorgente o che lo possa ottenere se lo desidera, che ciascuno possa modificare il programma o usarne delle parti in nuovi programmi “liberi” e che ciascuno sappia di potere fare queste cose.
Per proteggere i diritti dell'utente, abbiamo bisogno di creare delle restrizioni che vietino a chiunque di negare questi diritti o di chiedere di rinunciarvi. Queste restrizioni si traducono in certe responsabilità per chi distribuisce copie del software e per chi lo modifica.
Per esempio, chi distribuisce copie di un Programma coperto da GPL, sia gratis sia in cambio di un compenso, deve dare ai destinatari tutti i diritti che ha ricevuto. Deve anche assicurarsi che i destinatari ricevano o possano ricevere il codice sorgente. E deve mostrar loro queste condizioni di Licenza, in modo che conoscano i loro diritti.
Proteggiamo i diritti dell'utente in due modi: (1) proteggendo il software con un copyright, e (2) offrendo una Licenza che offre il permesso legale di copiare, distribuire e/o modificare il Programma.
Infine, per proteggere ogni autore e noi stessi, vogliamo assicurarci che ognuno capisca che non ci sono garanzie per i programmi coperti da GPL. Se il Programma viene modificato da qualcun altro e ridistribuito, vogliamo che gli acquirenti sappiano che ciò che hanno non è l'originale, in modo che ogni problema introdotto da altri non si rifletta sulla reputazione degli autori originari.
Infine, ogni programma libero è costantemente minacciato dai brevetti sui programmi. Vogliamo evitare il pericolo che chi ridistribuisce un Programma libero ottenga brevetti personali, rendendo perciò il Programma una cosa di sua proprietà. Per prevenire questo, abbiamo chiarito che ogni prodotto brevettato debba essere distribuito per il libero uso da parte di chiunque, o non distribuito affatto.
Seguono i termini e le condizioni precisi per la copia, la distribuzione e la modifica.
LICENZA PUBBLICA GENERICA GNU
TERMINI E CONDIZIONI PER LA COPIA, LA DISTRIBUZIONE E LA MODIFICA
Sia chiaro che non è nelle intenzioni di questa sezione accampare diritti su lavori scritti interamente da altri, l'intento è piuttosto quello di esercitare il diritto di controllare la distribuzione di lavori derivati o dal Programma o contenenti esso.
Inoltre, se il Programma o un lavoro derivato da esso viene aggregato ad un altro lavoro non derivato dal Programma su di un mezzo di immagazzinamento o di distribuzione, il lavoro non derivato non deve essere coperto da questa licenza.
Se la distribuzione dell'eseguibile o del codice oggetto è effettuata indicando un luogo dal quale sia possibile copiarlo, permettere la copia del codice sorgente dallo stesso luogo è considerata una valida forma di distribuzione del codice sorgente, anche se copiare il sorgente è facoltativo per l'acquirente.
Se parti di questo punto sono ritenute non valide o inapplicabili per qualsiasi circostanza, deve comunque essere applicata l'idea espressa da questo punto; in ogni altra circostanza invece deve essere applicato il punto 7 nel suo complesso.
Non è nello scopo di questo punto indurre gli utenti ad infrangere alcun brevetto ne` ogni altra rivendicazione di diritti di proprietà, né di contestare la validità di alcuna di queste rivendicazioni; lo scopo di questo punto è solo quello di proteggere l'integrità del sistema di distribuzione dei programmi liberi, che viene realizzato tramite l'uso della licenza pubblica. Molte persone hanno contribuito generosamente alla vasta gamma di programmi distribuiti attraverso questo sistema, basandosi sull'applicazione fedele di tale sistema. L'autore/donatore può decidere di sua volontà se preferisce distribuire il software avvalendosi di altri sistemi, e l'acquirente non può imporre la scelta del sistema di distribuzione.
Questo punto serve a rendere il più chiaro possibile ciò che crediamo sia una conseguenza del resto di questa Licenza.
Ad ogni versione viene dato un numero identificativo. Se il Programma asserisce di essere coperto da una particolare versione di questa Licenza e “da ogni versione successiva”, l'acquirente può scegliere se seguire le condizioni della versione specificata o di una successiva. Se il Programma non specifica quale versione di questa Licenza deve applicarsi, l'acquirente può scegliere una qualsiasi versione tra quelle pubblicate dalla Free Software Foundation.
NON C'E` GARANZIA
FINE DEI TERMINI E DELLE CONDIZIONI
Se si sviluppa un nuovo programma e lo si vuole rendere della maggiore
utilità possibile per il pubblico, la cosa migliore da fare è rendere tale
programma free software, cosicché ciascuno possa ridistribuirlo e modificarlo
sotto questi termini.
Per fare questo, si inserisca nel programma la seguente nota. La cosa migliore
da fare è mettere la nota all'inizio di ogni file sorgente, per chiarire nel
modo più efficiente possibile l'assenza di garanzia; ogni file dovrebbe
contenere almeno la nota di copyright e l'indicazione di dove trovare l'intera
nota.
<una riga per dire in breve il nome del programma e cosa fa> Copyright (C) 19aa <nome dell'autore>
Questo programma è free software; è lecito redistribuirlo e/o modificarlo
secondo i termini della Licenza Pubblica Generica GNU come è pubblicata dalla
Free Software Foundation; o la versione 2 della licenza o (a propria scelta) una
versione successiva.
Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA
GARANZIA; senza neppure la garanzia implicita di NEGOZIABILITÀ o di
APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si veda la Licenza Pubblica Generica
GNU per avere maggiori dettagli.
Ognuno dovrebbe avere ricevuto una copia della Licenza Pubblica Generica GNU
insieme a questo programma; in caso contrario, si scriva alla Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, Stati Uniti.
Si aggiungano anche informazioni su come si può essere contattati tramite posta
elettronica e cartacea.
Se il programma è interattivo, si faccia in modo che stampi una breve nota
simile a questa quando viene usato interattivamente:
Orcaloca versione 69, Copyright (C) 19aa <nome dell'autore> Orcaloca non ha ALCUNA GARANZIA; per i dettagli si digiti “show g”. Questo è free software, e ognuno è libero di ridistribuirlo sotto certe condizioni; si digiti “show c” per dettagli.
Gli ipotetici comandi “show g” e “show c” mostreranno le parti
appropriate della Licenza Pubblica Generica. Chiaramente, i comandi usati
possono essere chiamati diversamente da “show g” e “show c” e possono
anche essere selezionati con il mouse o attraverso un menu`; in qualunque modo
pertinente al programma.
Se necessario, si dovrebbe anche far firmare al proprio datore di lavoro (se si
lavora come programmatore) o alla propria scuola, se si e` studente, una
“rinuncia al copyright” per il programma. Ecco un esempio con nomi fittizi:
Yoyodinamica SPA rinuncia con questo documento ad ogni interesse al copyright del programma “Orcaloca” (che svolge dei passi di compilazione) scritto da Giovanni Smanettone.
<firma di Primo Tizio>, 1 April 1999 Primo Tizio, Presidente
I programmi coperti da questa Licenza Pubblica Generica non possono essere incorporati all'interno di programmi proprietari. Se il proprio programma è una libreria di funzioni, può essere più utile permettere di collegare applicazioni proprietarie alla libreria. Se si ha questa intenzione consigliamo di usare la Licenza Generica Pubblica GNU per Librerie (LGPL) al posto di questa Licenza.
La prima comunità di condivisione del
software
Quando cominciai a lavorare nel laboratorio di
Intelligenza Artificiale del MIT nel 1971, entrai a far parte di una
comunità in cui ci si scambiavano i programmi, che esisteva già da
molti anni. La condivisione del software non si limitava alla nostra
comunità; è un cosa vecchia quanto i computer, proprio come
condividere le ricette è antico come il cucinare. Ma noi lo facevamo
più di quasi chiunque altro.
Il laboratorio di Intelligenza Artificiale (AI) usava un sistema operativo a partizione di tempo (timesharing) chiamato ITS (Incompatible Timesharing System) che il gruppo di hacker1 del laboratorio aveva progettato e scritto in linguaggio assembler per il Digital PDP-10, uno dei grossi elaboratori di quel periodo. Come membro di questa comunità, hacker di sistema nel gruppo laboratorio, il mio compito era migliorare questo sistema.
Non chiamavamo il nostro software "software libero", poiché questa espressione ancora non esisteva, ma si trattava proprio di questo. Quando persone di altre università o di qualche società volevano convertire il nostro programma per il proprio sistema e utilizzarlo, erano le benvenute. Se si vedeva qualcuno usare un programma sconosciuto e interessante, si poteva sempre chiedere di vederne il codice sorgente, in modo da poterlo leggere, modificare, o prenderne cannibalizzarne alcune parti per creare un nuovo programma.
La comunità si dissolve
La situazione cambiò
drasticamente all'inizio degli anni '80 quando la Digital smise di
produrre la serie PDP-10. La sua architettura, elegante e potente
negli anni '60, non poteva essere estesa in modo naturale ai più
grandi spazi di indirizzamento che si stavano rendendo possibili
negli anni '80. Questo significò che quasi tutti i programmi che
formavano ITS divennero obsoleti.
La comunità di hacker del laboratorio di Intelligenza Artificiale si era già dissolta non molto tempo prima. Nel 1981 la Symbolics, nata da una costola del laboratorio stesso, gli aveva sottratto quasi tutti gli hacker; l'ormai esiguo gruppo rimasto fu dunque incapace di sostenersi (il libro "Hackers" di Steve Levy narra questi eventi, oltre a fornire una fedele ricostruzione di questa comunità ai suoi inizi). Quando il laboratorio di Intelligenza Artificiale nel 1982 acquistò un nuovo PDP-10, i sistemisti decisero di utilizzare il sistema timesharing non libero della Digital anziché ITS.
I moderni elaboratori di quell'epoca, come il VAX o il 68020, avevano il proprio sistema operativo, ma nessuno di questi era libero: si doveva firmare un accordo di non-diffusione persino per ottenerne una copia eseguibile.
Questo significava che il primo passo per usare un computer era promettere di negare aiuto al proprio vicino. Una comunità cooperante era vietata. La regola creata dai proprietari di software proprietario era: "se condividi il software col tuo vicino sei un pirata. Se vuoi modifiche, pregaci di farle".
L'idea che la concezione sociale di software proprietario - cioè il sistema che impone che il software non possa essere condiviso o modificato - sia antisociale, contraria all'etica, semplicemente sbagliata, può apparire sorprendente a qualche lettore. Ma che altro possiamo dire di un sistema che si basa sul dividere utenti e lasciarli senza aiuto? Quei lettori che trovano sorprendente l'idea possono aver data per scontata la concezione sociale di software proprietario, o averla giudicata utilizzando lo stesso metro suggerito dal mercato del software proprietario. I produttori di software hanno lavorato a lungo e attivamente per diffondere la convinzione che c'è un solo modo di vedere la cosa.
Quando i produttori di software parlano di "difendere" i propri "diritti" o di "fermare la pirateria", quello che dicono è in realtà secondario. Il vero messaggio in quelle affermazioni sta nelle assunzioni inespresse, che essi danno per scontate; vogliono che siano accettate acriticamente. Esaminiamole, dunque.
Una prima assunzione è che le aziende produttrici di software abbiano il diritto naturale indiscutibile di proprietà sul software, e di conseguenza, abbiano controllo su tutti i suoi utenti. Se questo fosse un diritto naturale, non potremmo sollevare obiezioni, indipendentemente dal danno che possa recare ad altri. È interessante notare che, negli Stati Uniti, sia la costituzione che la giurisprudenza rifiutano questa posizione: il diritto d'autore non è un diritto naturale, ma un monopolio imposto dal governo che limita il diritto naturale degli utenti a effettuare delle copie.
Un'altra assunzione inespressa è che la sola cosa importante del software sia il lavoro che consente di fare - vale a dire che noi utenti non dobbiamo preoccuparci del tipo di società in cui ci è permesso vivere.
Una terza assunzione è che non avremmo software utilizzabile (o meglio, che non potremmo mai avere un programma per fare questo o quell'altro particolare lavoro) se non riconoscessimo ai produttori il controllo sugli utenti di quel programmi. Questa assunzione avrebbe potuto sembrare plausibile, prima che il movimento del software libero dimostrasse che possiamo scrivere quantità di programmi utili senza bisogno di metterci dei catenacci.
Se rifiutiamo di accettare queste assunzioni, giudicando queste questioni con comuni criteri di moralità e di buon senso dopo aver messo al primo posto gli interessi degli utenti, tenendo conto che gli utenti vengono prima di tutto, arriviamo a conclusioni del tutto differenti. Chi usa un calcolatore dovrebbe essere libero di modificare i programmi per adattarli alle proprie necessità, ed essere libero di condividere il software, poiché aiutare gli altri è alla base della società.
Non c'è modo in questa sede di trattare approfonditamente i ragionamenti che portano a questa conclusione; il lettore interessato può cercare le informazioni in rete a questo indirizzo: http://www.gnu.org/philosophy/why-free.html.
Una difficile scelta morale
Una volta che il mio
gruppo si fu sciolto, continuare come prima fu impossibile. Mi
trovai di fronte a una difficile scelta morale.
La scelta facile sarebbe stata quella di unirsi al mondo del software proprietario, firmando accordi di non-diffusione e promettendo di non aiutare i miei compagni hacker. Con ogni probabilità avrei anche sviluppato software che sarebbe stato distribuito secondo accordi di non-diffusione, contribuendo così alla pressione su altri perché a loro volta tradissero i propri compagni.
In questo modo avrei potuto guadagnare, e forse mi sarei divertito a programmare. Ma sapevo che al termine della mia carriera mi sarei voltato a guardare indietro, avrei visto anni spesi a costruire muri per dividere le persone, e avrei compreso di aver contribuito a rendere il mondo peggiore.
Avevo già sperimentato cosa significasse un accordo di non diffusione per chi lo firmava, quando qualcuno rifiutò a me e al laboratorio AI del MIT il codice sorgente del programma di controllo della nostra stampante; l'assenza di alcune funzionalità nel programma rendeva oltremodo frustrante l'uso della stampante. Per cui non mi potevo dire che gli accordi di non-diffusione fossero innocenti. Ero molto arrabbiato quando quella persone si rifiutò di condividere il programma con noi; non potevo far finta di niente e fare lo stesso con tutti gli altri.
Un'altra possibile scelta, semplice ma spiacevole, sarebbe stata quella di abbandonare l'informatica. In tal modo le mie capacità non sarebbero state mal utilizzate, tuttavia sarebbero state sprecate. Non sarei mai stato colpevole di dividere o imporre restrizioni agli utenti di calcolatori, ma queste cose sarebbero comunque successe.
Allora cercai un modo in cui un programmatore potesse fare qualcosa di buono. Mi chiesi dunque: c'erano un programma o dei programmi che io potessi scrivere, per rendere nuovamente possibile l'esistenza di una comunità?
La risposta era semplice: innanzitutto serviva un sistema operativo. Questo è difatti il software fondamentale per iniziare a usare un computer. Con un sistema operativo si possono fare molte cose; senza, non è proprio possibile far funzionare il computer. Con un sistema operativo libero, avremmo potuto avere nuovamente una comunità in cui hacker possono cooperare, e invitare chiunque a unirsi al gruppo. E chiunque sarebbe stato in grado di usare un calcolatore, senza dover cospirare fin dall'inizio per sottrarre qualcosa ai propri amici.
Essendo un programmatore di sistemi, possedevo le competenze adeguate per questo lavoro. Così, anche se non davo il successo per scontato, mi resi conto di essere la persona giusta per farlo. Scelsi di rendere il sistema compatibile con Unix, in modo che fosse portabile, e che gli utenti Unix potessero passare facilmente a esso. Il nome GNU fu scelto secondo una tradizione hacker, come acronimo ricorsivo che significa "GNU's Not Unix" (GNU non è Unix).
Un sistema operativo non si limita solo al suo nucleo, che è proprio il minimo per eseguire altri programmi. Negli anni '70, qualsiasi sistema operativo degno di questo nome includeva interpreti di comandi, assemblatori, compilatori, interpreti di linguaggi, debugger, editor di testo, programmi per la posta e molto altro. ITS li aveva, Multics li aveva, VMS li aveva e Unix li aveva. Anche il sistema operativo GNU li avrebbe avuti.
Tempo dopo venni a conoscenza di questa massima, attribuita a Hillel2:
Se non sono per me stesso, chi sarà per me?
E se sono solo per me stesso, che cosa sono?
E se non ora, quando?
La decisione di iniziare il progetto GNU si basò su uno spirito simile.
"Free" come libero
Il termine "free software"
(N.d.T. il termine free in inglese significa sia gratuito che
libero) a volte è mal interpretato: non ha niente a che vedere col
prezzo del software; si tratta di libertà. Ecco, dunque, la
definizione di software libero: un programma è software libero per
un dato utente se:
A causa dell'ambiguità del termine "free", si è cercata a lungo un'alternativa, ma nessuno ne ha trovata una valida. La lingua inglese ha, più termini e sfumature di ogni altra, ma non ha una parola semplice e non ambigua che significhi libero; "unfettered" è la parola più vicina come significato (N.d.T. unfettered è una parola di tono aulico o arcaico che significa libero da ceppi, vincoli o inibizioni). Alternative come "liberated", "freedom" e "open" hanno altri significati o non sono adatte per altri motivi (N.d.T. rispettivamente, liberato, libertà, aperto).
Software GNU e il sistema GNU
Sviluppare un intero
sistema è un progetto considerevole. Per raggiungere l'obiettivo
decisi di adattare e usare parti di software libero tutte le volte
che fosse possibile. Per esempio, decisi fin dall'inizio di usare
TeX come il principale programma di formattazione di testo; qualche
anno più tardi, decisi di usare l'X Window System piuttosto che
scrivere un altro sistema a finestre per GNU.
A causa di questa decisione, il sistema GNU e la raccolta di tutto il software GNU non sono la stessa cosa. Il sistema GNU comprende programmi che non sono GNU, sviluppati da altre persone o gruppi di progetto per i propri scopi, ma che possiamo usare in quanto software libero.
L'inizio del progetto
Nel gennaio 1984 lasciai il
mio posto al MIT e cominciai a scrivere software GNU. Dovetti
lasciare il MIT, per evitare che potesse interferire con la
distribuzione di GNU come software libero. Se fossi rimasto, il MIT
avrebbe potuto rivendicare la proprietà del lavoro, e avrebbe potuto
imporre i propri termini di distribuzione, o anche farne un
pacchetto proprietario. Non avevo alcuna intenzione di fare tanto
lavoro solo per vederlo reso inutilizzabile per il suo scopo
originario: creare una nuova comunità di condivisione di software. A
ogni buon conto, il professor Winston - allora responsabile del
laboratorio AI del MIT - mi propose gentilmente di continuare a
utilizzare le attrezzature del laboratorio stesso.
I primi passi
Poco dopo aver iniziato il progetto
GNU, venni a sapere del Free University Compiler Kit, noto anche
come VUCK (la parola olandese che sta per "free" inizia con la V).
Era un compilatore progettato per trattare più linguaggi, fra cui C
e Pascal, e per generare codice binario per diverse architetture.
Scrissi al suo autore chiedendo se GNU avesse potuto usarlo. Rispose
in modo canzonatorio, dicendo che l'università era sì libera, ma non
il compilatore. Decisi allora che il mio primo programma per il
progetto GNU sarebbe stato un compilatore multilinguaggio e
multipiattaforma.
Sperando di evitare di dover scrivere da me l'intero compilatore, ottenni il codice sorgente del Pastel, un compilatore multipiattaforma sviluppato ai Laboratori Lawrence Livermore. Il linguaggio supportato da Pastel, in cui il Pastel stesso era scritto, era una versione estesa del Pascal, pensata come linguaggio di programmazione di sistemi. Io vi aggiunsi un frontend per il C, e cominciai il porting per il processore Motorola 68000, ma fui costretto a rinunciare quando scoprii che il compilatore richiedeva diversi megabyte di memoria sullo stack, mentre il sistema Unix disponibile per il processore 68000 ne permetteva solo 64K.
Mi resi conto allora che il compilatore Pastel interpretava tutto il file di ingresso creandone un albero sintattico, convertiva questo in una catena di "istruzioni", e quindi generava l'intero file di uscita senza mai liberare memoria. A questo punto, conclusi che avrei dovuto scrivere un nuovo compilatore da zero. Quel nuovo compilatore è ora noto come Gcc; non utilizza niente del compilatore Pastel, ma riuscii ad adattare e riutilizzare il frontend per il C che avevo scritto. Questo però avvenne qualche anno dopo; prima, lavorai su GNU Emacs.
GNU Emacs
Cominciai a lavorare su GNU Emacs nel
settembre 1984, e all'inizio del 1985 cominciava a essere
utilizzabile. Così potei iniziare a usare sistemi Unix per scrivere;
fino ad allora, avevo scritto sempre su altri tipi di macchine, non
avendo nessun interesse a imparare vi né ed.
A questo punto alcuni cominciarono a voler usare GNU Emacs, il che pose il problema di come distribuirlo. Naturalmente lo misi sul server ftp anonimo del computer che usavo al MIT (questo computer, prep.ai.mit.edu, divenne così il sito ftp primario di distribuzione di GNU; quando alcuni anni dopo andò fuori servizio, trasferimmo il nome sul nostro nuovo ftp server). Ma allora molte delle persone interessate non erano su Internet e non potevano ottenere una copia via ftp, così mi si pose il problema di cosa dir loro.
Avrei potuto dire: "trova un amico che è in rete disposto a farti una copia". Oppure avrei potuto fare quel che feci con l'originario Emacs su PDP-10, e cioè dir loro: "spediscimi una busta affrancata e un nastro, e io te lo rispedisco con sopra Emacs". Ma ero senza lavoro, e cercavo un modo di far soldi con il software libero. E così feci sapere che avrei spedito un nastro a chi lo voleva per 150 dollari. In questo modo, creai un'impresa di distribuzione di software libero, che anticipava le compagnie che oggi distribuiscono interi sistemi GNU basati su Linux.
Un programma è libero per tutti?
Se un programma è
software libero quando esce dalle mani del suo autore, non significa
necessariamente che sarà software libero per chiunque ne abbia una
copia. Per esempio, il software di pubblico dominio (software senza
copyright) è software libero, ma chiunque può farne una versione
modificata proprietaria. Analogamente, molti programmi liberi sono
protetti da diritto d'autore, ma vengono distribuiti con semplici
licenze permissive che permettono di farne versioni modificate
proprietarie.
L'esempio emblematico della questione è l'X Window System. Sviluppato al MIT, e pubblicato come software libero con una licenza permissiva, fu rapidamente adottato da diverse società informatiche. Queste aggiunsero X ai loro sistemi Unix proprietari, solo in forma binaria, e coperto dello stesso accordo di non-diffusione. Queste copie di X non erano software più libero di quanto lo fosse Unix.
Gli autori dell'X Window System non ritenevano che questo fosse un problema, anzi se lo aspettavano ed era loro intenzione che accadesse. Il loro scopo non era la libertà, ma semplicemente il "successo", definito come "avere tanti utenti". Non erano interessati che questi utenti fossero liberi, ma solo che fossero numerosi.
Questo sfociò in una situazione paradossale, in cui due modi diversi di misurare la quantità di libertà risultavano in risposte diverse alla domanda "questo programma è libero"? Giudicando sulla base della libertà offerta dai termini distributivi usati dal MIT, si sarebbe dovuto dire che X era software libero. Ma misurando la libertà dell'utente medio di X, si sarebbe dovuto dire che X era software proprietario. La maggior parte degli utenti di X usavano le versioni proprietarie fornite con i sistemi Unix, non la versione libera.
Il permesso d'autore (copyleft) e la GNU GPL
Lo
scopo di GNU consisteva nell'offrire libertà agli utenti, non solo
nell'ottenere ampia diffusione. Avevamo quindi bisogno di termini di
distribuzione che evitassero che il software GNU fosse trasformato
in software proprietario. Il metodo che usammo si chiama "permesso
d'autore"3.
Il permesso d'autore (copyleft)4 usa le leggi sul diritto d'autore (copyright), ma le capovolge per ottenere lo scopo opposto: invece che un metodo per privatizzare il software, diventa infatti un mezzo per mantenerlo libero.
Il succo dell'idea di permesso d'autore consiste nel dare a chiunque il permesso di eseguire il programma, copiare il programma, modificare il programma, e distribuirne versioni modificate, ma senza dare il permesso di aggiungere restrizioni. In tal modo, le libertà essenziali che definiscono il "free software" (software libero) sono garantite a chiunque ne abbia una copia, e diventano diritti inalienabili.
Perché un permesso d'autore sia efficace, anche le versioni modificate devono essere libere. Ciò assicura che ogni lavoro basato sul nostro sia reso disponibile per la nostra comunità, se pubblicato. Quando dei programmatori professionisti lavorano su software GNU come volontari, è il permesso d'autore che impedisce ai loro datori di lavoro di dire: "non puoi distribuire quei cambiamenti, perché abbiamo intenzione di usarli per creare la nostra versione proprietaria del programma".
La clausola che i cambiamenti debbano essere liberi è essenziale se vogliamo garantire libertà a tutti gli utenti del programma. Le aziende che privatizzarono l'X Window System di solito avevano apportato qualche modifica per portare il programma sui loro sistemi e sulle loro macchine. Si trattava di modifiche piccole rispetto alla mole di X, ma non banali. Se apportare modifiche fosse una scusa per negare libertà agli utenti, sarebbe facile per chiunque approfittare di questa scusa.
Una problematica correlata è quella della combinazione di un programma libero con codice non libero. Una tale combinazione sarebbe inevitabilmente non libera; ogni libertà che manchi dalla parte non libera mancherebbe anche dall'intero programma. Permettere tali combinazioni aprirebbe non uno spiraglio, ma un buco grosso come una casa. Quindi un requisito essenziale per il permesso d'autore è tappare il buco: tutto ciò che venga aggiunto o combinato con un programma protetto da permesso d'autore dev'essere tale che il programma risultante sia anch'esso libero e protetto da permesso d'autore.
La specifica implementazione di permesso d'autore che utilizziamo per la maggior parte del software GNU è la GNU General Public License (licenza pubblica generica GNU), abbreviata in GNU GPL. Abbiamo altri tipi di permesso d'autore che sono utilizzati in circostanze specifiche. I manuali GNU sono anch'essi protetti da permesso d'autore, ma ne usano una versione molto più semplice, perché per i manuali non è necessaria la complessità della GPL.
La Free Software Foundation
Man mano che
l'interesse per Emacs aumentava, altre persone parteciparono al
progetto GNU, e decidemmo che era di nuovo ora di cercare
finanziamenti. Così nel 1985 fondammo la Free Software Foundation
(Fondazione per il software libero), una organizzazione senza fini
di lucro per lo sviluppo di software libero. La FSF fra l'altro si
prese carico della distribuzione dei nastri di Emacs; più tardi
estese l'attività aggiungendo sul nastro altro software libero (sia
GNU che non GNU) e vendendo manuali liberi.
La FSF accetta donazioni, ma gran parte delle sue entrate è sempre stata costituita dalle vendite: copie di software libero e servizi correlati. Oggi vende CD-ROM di codice sorgente, CD-ROM di programmi compilati, manuali stampati professionalmente (tutti con libertà di ridistribuzione e modifica), e distribuzioni Deluxe (nelle quali compiliamo l'intera scelta di software per una piattaforma a richiesta).
I dipendenti della Free Software Foundation hanno scritto e curato la manutenzione di diversi pacchetti GNU. Fra questi spiccano la libreria C e la shell. La libreria C di GNU è utilizzata da ogni programma che gira su sistemi GNU/Linux per comunicare con Linux. È stata sviluppata da un membro della squadra della Free Software Foundation, Roland McGrath. La shell usata sulla maggior parte dei sistemi GNU/Linux è Bash, la Bourne Again Shell5, che è stata sviluppata da Brian Fox, dipendente della FSF.
Finanziammo lo sviluppo di questi programmi perché il progetto GNU non riguardava solo strumenti di lavoro o un ambiente di sviluppo: il nostro obiettivo era un sistema operativo completo, e questi programmi erano necessari per raggiungere quell'obiettivo.
Il supporto per il software libero
La filosofia del
software libero rigetta una diffusa pratica commerciale in
particolare, ma non è contro il commercio. Quando un'impresa
rispetta la libertà dell'utente, c'è da augurarle ogni successo.
La vendita di copie di Emacs esemplifica un modo di condurre affari col software libero. Quando la FSF prese in carico quest'attività, dovetti trovare un'altra fonte di sostentamento. La trovai nella vendita di servizi relativi al software libero che avevo sviluppato, come insegnare argomenti quali programmazione di Emacs e personalizzazione di GCC, oppure sviluppare software, soprattutto adattamento di GCC a nuove architetture.
Oggi tutte queste attività collegate al software libero sono esercitate da svariate aziende. Alcune distribuiscono raccolte di software libero su CD-ROM, altre offrono consulenza a diversi livelli, dall'aiutare gli utenti in difficoltà, alla correzione di errori, all'aggiunta di funzionalità non banali. Si cominciano anche a vedere aziende di software che si fondano sul lancio di nuovi programmi liberi.
Attenzione, però: diverse aziende che si fregiano del marchio "open source" (software aperto) in realtà fondano le loro attività su software non libero che funziona insieme con software libero. Queste non sono aziende di software libero, sono aziende di software proprietario i cui prodotti attirano gli utenti lontano dalla libertà. Loro li chiamano "a valore aggiunto", il che riflette i valori che a loro farebbe comodo che adottassimo: la convenienza prima della libertà. Se noi riteniamo che la libertà abbia più valore, li dovremmo chiamare prodotti "a libertà sottratta".
Obiettivi tecnici
L'obiettivo principale di GNU era
essere software libero. Anche se GNU non avesse avuto alcun
vantaggio tecnico su Unix, avrebbe avuto sia un vantaggio sociale,
permettendo agli utenti di cooperare, sia un vantaggio etico,
rispettando la loro libertà.
Tuttavia risultò naturale applicare al lavoro le regole classiche di buona programmazione; per esempio, allocare le strutture dati dinamicamente per evitare limitazioni arbitrarie sulla dimensione dei dati, o gestire tutti i possibili codici a 8 bit in tutti i casi ragionevoli.
Inoltre, al contrario di Unix che era pensato per piccole dimensioni di memoria, decidemmo di non supportare le macchine a 16 bit (era chiaro che le macchine a 32 bit sarebbero state la norma quando il sistema GNU sarebbe stato completo), e di non preoccuparci di ridurre l'occupazione di memoria a meno che eccedesse il megabyte. In programmi per i quali non era essenziale la gestione di file molto grandi, spingemmo i programmatori a leggere in memoria l'intero file di ingresso per poi analizzare il file senza doversi preoccupare delle operazioni di I/O.
Queste decisioni fecero sì che molti programmi GNU superassero i loro equivalenti Unix sia in affidabilità che in velocità di esecuzione.
Donazioni di computer
Man mano che la reputazione
del progetto GNU andava crescendo, alcune persone iniziarono a
donare macchine su cui girava Unix. Queste macchine erano molto
utili, perché il modo più semplice di sviluppare componenti per GNU
era di farlo su di un sistema Unix così da sostituire pezzo per
pezzo i componenti di quel sistema. Ma queste macchine sollevavano
anche una questione etica: se fosse giusto per noi anche solo
possedere una copia di Unix.
Unix era (ed è) software proprietario, e la filosofia del progetto GNU diceva che non avremmo dovuto usare software proprietario. Ma, applicando lo stesso ragionamento per cui la violenza è ammessa per autodifesa, conclusi che fosse legittimo usare un pacchetto proprietario, se ciò fosse stato importante nel crearne un sostituto libero che permettesse ad altri di smettere di usare quello proprietario.
Tuttavia, benché fosse un male giustificabile, era pur sempre un male. Oggi non abbiamo più alcuna copia di Unix, perché le abbiamo sostituite con sistemi operativi liberi. Quando non fu possibile sostituire il sistema operativo di una macchina con uno libero, sostituimmo la macchina.
L'elenco dei compiti GNU
Mentre il progetto GNU
avanzava, e un numero sempre maggiore di componenti di sistema
venivano trovati o sviluppati, diventò utile stilare un elenco delle
parti ancora mancanti. Usammo questo elenco per ingaggiare
programmatori che scrivessero tali parti, e l'elenco prese il nome
di elenco dei compiti GNU. In aggiunta ai componenti Unix mancanti
inserimmo nell'elenco svariati progetti utili di programmazione o di
documentazione che a nostro parere non dovrebbero mancare in un
sistema operativo veramente completo.
Oggi non compare quasi nessun componente Unix nell'elenco dei compiti GNU; tutti questi lavori, a parte qualcuno non essenziale, sono già stati svolti. D'altro canto l'elenco è pieno di quei progetti che qualcuno chiamerebbe "applicazioni": ogni programma che interessi a una fetta non trascurabile di utenti sarebbe un'utile aggiunta a un sistema operativo.
L'elenco comprende anche dei giochi, e così è stato fin dall'inizio: Unix comprendeva dei giochi, perciò era naturale che così fosse anche per GNU. Ma poiché non c'erano esigenze di compatibilità per i giochi, non ci attenemmo alla scelta di giochi presenti in Unix, preferendo piuttosto fornire un elenco di diversi tipi di giochi potenzialmente graditi agli utenti.
La licenza GNU per le librerie
La libreria C del
sistema GNU utilizza un tipo speciale di permesso d'autore, la
"Licenza Pubblica GNU per le Librerie"6, che permette l'uso della
libreria da parte di software proprietario. Perché quest'eccezione?
Non si tratta di questioni di principio: non c'è nessun principio che dica che i prodotti software proprietari abbiano il diritto di includere il nostro codice (perché contribuire a un progetto fondato sul rifiuto di condividere con noi?). L'uso della licenza LGPL per la libreria C, o per qualsiasi altra libreria, è una questione di strategia.
La libreria C svolge una funzione generica: ogni sistema operativo proprietario e ogni compilatore includono una libreria C. Di conseguenza, rendere disponibile la nostra libreria C solo per i programmi liberi non avrebbe dato nessun vantaggio a tali programmi liberi, avrebbe solo disincentivato l'uso della nostra libreria.
C'è un'eccezione a questa situazione: sul sistema GNU (termine che include GNU/Linux) l'unica libreria C disponibile è quella GNU. Quindi i termini di distribuzione della nostra libreria C determinano se sia possibile o meno compilare un programma proprietario per il sistema GNU. Non ci sono ragioni etiche per permettere l'uso di applicazioni proprietarie sul sistema GNU, ma strategicamente sembra che impedirne l'uso servirebbe più a scoraggiare l'uso del sistema GNU che non a incoraggiare lo sviluppo di applicazioni libere.
Ecco perché l'uso della licenza LGPL è una buona scelta strategica per la libreria C, mentre per le altre librerie la strategia va valutata caso per caso. Quando una libreria svolge una funzione particolare che può aiutare a scrivere certi tipi di programmi, distribuirla secondo la GPL, quindi limitandone l'uso ai soli programmi liberi, è un modo per aiutare gli altri autori di software libero, dando loro un vantaggio nei confronti del software proprietario.
Prendiamo come esempio GNU-Readline, una libreria scritta per fornire a Bash la modificabilità della linea di comando: Readline è distribuita secondo la normale licenza GPL, non la LGPL. Ciò probabilmente riduce l'uso di Readline, ma questo non rappresenta una perdita per noi; d'altra parte almeno una applicazione utile è stata resa software libero proprio al fine di usare Readline, e questo è un guadagno tangibile per la comunità.
Chi sviluppa software proprietario ha vantaggi economici, gli autori di programmi liberi hanno bisogno di avvantaggiarsi a vicenda. Spero che un giorno possiamo avere una grande raccolta di librerie coperte dalla licenza GPL senza che esista una raccolta equivalente per chi scrive software proprietario. Tale libreria fornirebbe utili moduli da usare come i mattoni per costruire nuovi programmi liberi, e costituendo un sostanziale vantaggio per la scrittura di ulteriori programmi liberi.
Togliersi il prurito?
Eric Raymond afferma che
"ogni buon programma nasce dall'iniziativa di un programmatore che
si vuole togliere un suo personale prurito". È probabile che
talvolta succeda così, ma molte parti essenziali del software GNU
sono state sviluppate al fine di completare un sistema operativo
libero. Derivano quindi da una idea e da un progetto, non da una
necessità contingente.
Per esempio, abbiamo sviluppato la libreria C di GNU perché un sistema di tipo Unix ha bisogno di una libreria C, la Bourne-Again Shell (bash) perché un sistema di tipo Unix ha bisogno di una shell, e GNU tar perché un sistema di tipo Unix ha bisogno un programma tar. Lo stesso vale per i miei programmi: il compilatore GNU, GNU Emacs, GDB, GNU Make.
Alcuni programmi GNU sono stati sviluppati per fronteggiare specifiche minacce alla nostra libertà: ecco perché abbiamo sviluppato gzip come sostituto per il programma Compress, che la comunità aveva perduto a causa dei brevetti sull'algoritmo LZW. Abbiamo trovato persone che sviluppassero LessTif, e più recentemente abbiamo dato vita ai progetti GNOME e Harmony per affrontare i problemi causati da alcune librerie proprietarie (come descritto più avanti). Stiamo sviluppando la GNU Privacy Guard per sostituire i diffusi programmi di crittografia non liberi, perché gli utenti non siano costretti a scegliere tra riservatezza e libertà.
Naturalmente, i redattori di questi programmi sono coinvolti nel loro lavoro, e varie persone vi hanno aggiunto diverse funzionalità secondo le loro personali necessità e i loro interessi. Tuttavia non è questa la ragione dell'esistenza di tali programmi.
Sviluppi inattesi
All'inizio del progetto GNU
pensavo che avremmo sviluppato l'intero sistema GNU e poi lo avremmo
reso disponibile tutto insieme, ma le cose non andarono così.
Poiché i componenti del sistema GNU sono stati implementati su un sistema Unix, ognuno di essi poteva girare su sistemi Unix molto prima che esistesse un sistema GNU completo. Alcuni di questi programmi divennero diffusi e gli utenti iniziarono a estenderli e a renderli utilizzabili su nuovi sistemi: sulle varie versioni di Unix, incompatibili tra loro, e talvolta anche su altri sistemi.
Questo processo rese tali programmi molto più potenti e attirò finanziamenti e collaboratori al progetto GNU; tuttavia probabilmente ritardò di alcuni anni la realizzazione di un sistema minimo funzionante, perché il tempo degli autori GNU veniva impiegato a curare la compatibilità di questi programmi con altri sistemi e ad aggiungere nuove funzionalità ai componenti esistenti, piuttosto che a proseguire nella scrittura di nuovi componenti.
GNU-Hurd
Nel 1990 il sistema GNU era quasi
completo, l'unica parte significativa ancora mancante era il kernel.
Avevamo deciso di implementare il nostro kernel come un gruppo di
processi server che girassero sul sistema Mach. Mach è un
microkernel sviluppato alla Carnegie Mellon University e
successivamente all'Università dello Utah; GNU Hurd è un gruppo di
server (o "herd of gnus": mandria di gnu) che gira su Mach svolgendo
le funzioni del kernel Unix. L'inizio dello sviluppo fu ritardato
nell'attesa che Mach fosse reso disponibile come software libero,
come era stato promesso.
Una ragione di questa scelta progettuale fu di evitare quella che sembrava la parte più complessa del lavoro: effettuare il debugging del kernel senza un debugger a livello sorgente. Questo lavoro era già stato fatto, appunto in Mach, e avevamo previsto di effettuare il debugging dei server Hurd come programmi utente, con GDB. Ma questa fase si rivelò molto lunga, e il debugging dei server multi-thread che si scambiano messaggi si è rivelato estremamente complesso. Per rendere Hurd robusto furono così necessari molti anni.
Alix
Originariamente il kernel GNU non avrebbe
dovuto chiamarsi Hurd; il suo nome originale era Alix, come la donna
di cui ero innamorato in quel periodo. Alix, che era amministratrice
di sistemi Unix, aveva sottolineato come il suo nome corrispondesse
a un comune schema usato per battezzare le versioni del sistema
Unix: scherzosamente diceva ai suoi amici: "qualcuno dovrebbe
chiamare un kernel come me". Io non dissi nulla ma decisi di farle
una sorpresa scrivendo un kernel chiamato Alix.
Le cose non andarono così. Michael Bushnell (ora Thomas), principale autore del kernel, preferì il nome Hurd, e chiamò Alix una parte del kernel, quella che serviva a intercettare le chiamate di sistema e a gestirle inviando messaggi ai server che compongono HURD.
Infine io e Alix ci lasciammo e lei cambiò nome; contemporaneamente la struttura di Hurd veniva cambiata in modo che la libreria C mandasse messaggi direttamente ai server, e così il componente Alix scomparve dal progetto. Prima che questo accadesse, però, un amico di Alix si accorse della presenza del suo nome nel codice sorgente di Hurd e glielo disse. Così il nome raggiunse il suo scopo.
Linux e GNU/Linux
GNU Hurd non è pronto per un uso
non sperimentale, ma per fortuna è disponibile un altro kernel: nel
1991 Linus Torvalds sviluppò un Kernel compatibile con Unix e lo
chiamò Linux. Attorno al 1992, la combinazione di Linux con il
sistema GNU ancora incompleto produsse un sistema operativo libero
completo (naturalmente combinarli fu un notevole lavoro di per sé).
È grazie a Linux che oggi possiamo utilizzare una versione del
sistema GNU.
Chiamiamo GNU/Linux questa versione del sistema, per indicare la sua composizione come una combinazione del sistema GNU col kernel Linux.
Le sfide che ci aspettano
Abbiamo dimostrato la
nostra capacità di sviluppare un'ampia gamma di software libero, ma
questo non significa che siamo invincibili e inarrestabili. Diverse
sfide rendono incerto il futuro del software libero, e affrontarle
richiederà perseveranza e sforzi costanti, talvolta per anni. Sarà
necessaria quella determinazione che le persone sanno dimostrare
quando danno valore alla propria libertà e non permettono a nessuno
di sottrargliela. Le quattro sezioni seguenti parlano di queste
sfide.
Hardware segreto
Sempre più spesso, i costruttori
di hardware tendono a mantenere segrete le specifiche delle loro
apparecchiature; questo rende difficile la scrittura di driver
liberi che permettano a Linux e XFree86 di supportare nuove
periferiche. Anche se oggi abbiamo sistemi completamente liberi,
potremmo non averli domani se non saremo in grado di supportare i
calcolatori di domani.
Esistono due modi per affrontare il problema. Un programmatore può ricostruire le specifiche dell'hardware usando tecniche di reverse engineering. Oppure si può scegliere hardware supportato dai programmi liberi: man mano che il nostro numero aumenta, la segretezza delle specifiche diventerà una pratica controproducente.
Il reverse engineering è difficile: avremo programmatori sufficientemente determinati da dedicarvisi? Sì, se avremo costruito una forte consapevolezza che avere programmi liberi sia una questione di principio e che i driver non liberi non sono accettabili. E succederà che molti di noi accettino di spendere un po' di più o perdere un po' più di tempo per poter usare driver liberi? Sì, se il desiderio di libertà e la determinazione a ottenerla saranno diffusi.
Librerie non libere
Una libreria non libera che
giri su sistemi operativi liberi funziona come una trappola per i
creatori di programmi liberi. Le funzionalità attraenti della
libreria fungono da esca; chi usa la libreria cade nella trappola,
perché il programma che crea è inutile come parte di un sistema
operativo libero (a rigore, il programma potrebbe esservi incluso,
ma non funzionerebbe, visto che manca la libreria). Peggio ancora,
se un programma che usa la libreria proprietaria diventa diffuso,
può attirare altri ignari programmatori nella trappola.
Il problema si concretizzò per la prima volta con la libreria Motif, negli anni '80. Sebbene non ci fossero ancora sistemi operativi liberi, i problemi che Motif avrebbe causato loro erano già chiari. Il progetto GNU reagì in due modi: interessandosi presso diversi progetti di software libero perché supportassero gli strumenti grafici X liberi in aggiunta a Motif, e cercando qualcuno che scrivesse un sostituto libero di Motif. Il lavoro richiese molti anni: solo nel 1997 LessTif, sviluppato dagli "Hungry Programmers", divenne abbastanza potente da supportare la maggior parte delle applicazioni Motif.
Tra il 1996 e il 1998 un'altra libreria non libera di strumenti grafici, chiamata Qt, veniva usata in una significativa raccolta di software libero: l'ambiente grafico KDE.
I sistemi liberi GNU/Linux non potevano usare KDE, perché non potevamo usare la libreria; tuttavia, alcuni distributori commerciali di sistemi GNU/Linux, non scrupolosi nell'attenersi solo ai programmi liberi, aggiunsero KDE ai lori sistemi, ottenendo così sistemi che offrivano più funzionalità, ma meno libertà. Il gruppo che sviluppava KDE incoraggiava esplicitamente altri programmatori a usare Qt, e milioni di nuovi "utenti Linux" non sospettavano minimamente che questo potesse costituire un problema. La situazione si faceva pericolosa.
La comunità del software libero affrontò il problema in due modi: GNOME e Harmony.
GNOME (GNU Network Object Model Environment, modello di ambiente per oggetti di rete) è il progetto GNU per l'ambiente grafico (desktop). Intrapreso nel 1997 da Miguel de Icaza e sviluppato con il supporto di Red Hat Software, GNOME si ripromise di fornire funzionalità grafiche simili a quelle di KDE, ma usando esclusivamente software libero. GNOME offre anche dei vantaggi tecnici, come il supporto per svariati linguaggi di programmazione, non solo il C++. Ma il suo scopo principale era la libertà: non richiedere l'uso di alcun programma che non fosse libero.
Harmony è una libreria compatibile con Qt, progettata per rendere possibile l'uso del software KDE senza dover usare Qt.
Nel novembre 1998 gli autori di Qt annunciarono un cambiamento di licenza che, una volta operativo, avrebbe reso Qt software libero. Non c'è modo di esserne certi, ma credo che questo fu in parte dovuto alla decisa risposta della comunità al problema posto da Qt quando non era libero (la nuova licenza è scomoda e iniqua, per cui rimane comunque preferibile evitare l'uso di Qt).
Come risponderemo alla prossima allettante libreria non libera? Riuscirà la comunità in toto a comprendere l'importanza di evitare la trappola? Oppure molti di noi preferiranno la convenienza alla libertà, creando così ancora un grave problema? Il nostro futuro dipende dalla nostra filosofia.
Brevetti sul software
Il maggior pericolo a cui ci
troviamo di fronte è quello dei brevetti sul software, che possono
rendere inaccessibili al software libero algoritmi e funzionalità
per un tempo che può estendersi fino a vent'anni. I brevetti sugli
algoritmi di compressione LZW furono depositati nel 1983, e ancor
oggi non possiamo distribuire programmi liberi che producano
immagini GIF compresse. Nel 1998 un programma libero per produrre
audio compresso MP3 venne ritirato sotto minaccia di una causa per
violazione di brevetto.
Ci sono modi per affrontare la questione brevetti: possiamo cercare prove che un brevetto non sia valido oppure possiamo cercare modi alternativi per ottenere lo stesso risultato. Ognuna di queste tecniche, però, funziona solo in certe circostanze; quando entrambe falliscono un brevetto può obbligare tutto il software libero a rinunciare a qualche funzionalità che gli utenti desiderano. Cosa dobbiamo fare quando ciò accade?
Chi fra noi apprezza il software libero per il valore della libertà rimarrà comunque dalla parte dei programmi liberi; saremo in grado di svolgere il nostro lavoro senza le funzionalità coperte da brevetto. Ma coloro che apprezzano il software libero perché si aspettano che sia tecnicamente superiore probabilmente grideranno al fallimento quando un brevetto ne impedisce lo sviluppo. Perciò, nonostante sia utile parlare dell'efficacia pratica del modello di sviluppo "a cattedrale", e dell'affidabilità e della potenza di un dato programma libero, non ci dobbiamo fermare qui; dobbiamo parlare di libertà e di principi.
Documentazione libera
La più grande carenza nei
nostri sistemi operativi liberi non è nel software, quanto nella
carenza di buoni manuali liberi da includere nei nostri sistemi. La
documentazione è una parte essenziale di qualunque pacchetto
software; quando un importante pacchetto software libero non viene
accompagnato da un buon manuale libero si tratta di una grossa
lacuna. E di queste lacune attualmente ne abbiamo molte.
La documentazione libera, come il software libero, è una questione di libertà, non di prezzo. Il criterio per definire libero un manuale è fondamentalmente lo stesso che per definire libero un programma: si tratta di offrire certe libertà a tutti gli utenti. Deve essere permessa la ridistribuzione (compresa la vendita commerciale), sia in formato elettronico che cartaceo, in modo che il manuale possa accompagnare ogni copia del programma.
Autorizzare la modifica è anch'esso un aspetto cruciale; in generale, non credo sia essenziale permettere alle persone di modificare articoli e libri di qualsiasi tipo. Per esempio, non credo che voi o io dobbiamo sentirci in dovere di autorizzare la modifica di articoli come questo, articoli che descrivono le nostre azioni e il nostro punto di vista.
Ma c'è una ragione particolare per cui la libertà di modifica è cruciale per la documentazione dei programmi liberi. Quando qualcuno esercita il proprio diritto di modificare il programma, aumentandone o alterandone le funzionalità, se è coscienzioso modificherà anche il manuale, in modo da poter fornire una documentazione utile e accurata insieme al programma modificato. Un manuale che non permetta ai programmatori di essere coscienziosi e completare il loro lavoro non soddisfa i bisogni della nostra comunità.
Alcuni limiti sulla modificabilità non pongono alcun problema; per esempio, le richieste di conservare la nota di copyright dell'autore originale, i termini di distribuzione e la lista degli autori vanno bene. Non ci sono problemi nemmeno nel richiedere che le versioni modificate dichiarino esplicitamente di essere tali, così pure che intere sezioni non possano essere rimosse o modificate, finché queste sezioni vertono su questioni non tecniche. Restrizioni di questo tipo non creano problemi perché non impediscono al programmatore coscienzioso di adattare il manuale perché rispecchi il programma modificato. In altre parole, non impediscono alla comunità del software libero di beneficiare appieno dal manuale.
D'altro canto, deve essere possibile modificare tutto il contenuto tecnico del manuale e poter distribuire il risultato in tutti i formati usuali, attraverso tutti i normali canali di distribuzione; diversamente, le restrizioni creerebbero un ostacolo per la comunità, il manuale non sarebbe libero e avremmo bisogno di un altro manuale.
Gli sviluppatori di software libero avranno la consapevolezza e la determinazione necessarie a produrre un'intera gamma di manuali liberi? Ancora una volta, il nostro futuro dipende dalla nostra filosofia.
Dobbiamo parlare di libertà
Stime recenti valutano
in dieci milioni il numero di utenti di sistemi GNU/Linux quali
Debian GNU/Linux e Red Hat Linux. Il software libero ha creato tali
vantaggi pratici che gli utenti stanno approdando a esso per pure
ragioni pratiche.
Gli effetti positivi di questa situazione sono evidenti: maggior interesse a sviluppare software libero, più clienti per le imprese di software libero e una migliore capacità di incoraggiare le aziende a sviluppare software commerciale libero invece che prodotti software proprietari.
L'interesse per il software, però, sta crescendo più in fretta della coscienza della filosofia su cui è basato, e questa disparità causa problemi. La nostra capacità di fronteggiare le sfide e le minacce descritte in precedenza dipende dalla determinazione nell'essere impegnati per la libertà. Per essere sicuri che la nostra comunità abbia tale determinazione, dobbiamo diffondere l'idea presso i nuovi utenti man mano che entrano a far parte della comunità.
Ma in questo stiamo fallendo: gli sforzi per attrarre nuovi utenti nella comunità sono di gran lunga maggiori degli sforzi per l'educazione civica della comunità stessa. Dobbiamo fare entrambe le cose, e dobbiamo mantenere un equilibrio fra i due impegni.
"Open Source"
Parlare di libertà ai nuovi utenti è
diventato più difficile dal 1998, quando una parte della comunità
decise di smettere di usare il termine "free software" e usare al
suo posto "open source".
Alcune delle persone che suggerirono questo termine intendevano evitare che si confondesse "free" con "gratis", un valido obiettivo. D'altra parte, altre persone intendevano mettere da parte lo spirito del principio che aveva dato la spinta al movimento del software libero e al progetto GNU, puntando invece ad attrarre i dirigenti e gli utenti commerciali, molti dei quali afferiscono a una ideologia che pone il profitto al di sopra della libertà, della comunità, dei principi. Perciò la retorica di "open source" si focalizza sul possibilità di creare software di buona qualità e potente ma evita deliberatamente le idee di libertà, comunità, principio.
Le riviste che si chiamano "Linux..." sono un chiaro esempio di ciò: sono piene di pubblicità di software proprietario che gira sotto GNU/Linux; quando ci sarà il prossimo Motif o Qt, queste riviste avvertiranno i programmatori di starne lontano o accetteranno la sua pubblicità?
L'appoggio delle aziende può contribuire alla comunità in molti modi; a parità di tutto il resto è una cosa utile. Ma ottenere questo appoggio parlando ancor meno di libertà e principi può essere disastroso; rende ancora peggiore lo sbilanciamento descritto tra diffusione ed educazione civica.
"Software libero" (free software) e "sorgente aperto" (open source) descrivono più o meno la stessa categoria di software, ma dicono cose differenti sul software e sui valori. Il progetto GNU continua a usare il termine "software libero" per esprimere l'idea che la libertà sia importante, non solo la tecnologia.
Prova!
La filosofia di Yoda ("Non c'è provare")
suona bene, ma per me non funziona. Ho fatto la maggior parte del
mio lavoro angustiato dal timore di non essere in grado di svolgere
il mio compito e nel dubbio, se fossi riuscito, che non fosse
sufficiente per raggiungere l'obiettivo. Ma ci ho provato in ogni
caso perché nessuno tranne me si poneva tra il nemico e la mia
città. Sorprendendo me stesso, qualche volta sono riuscito.
A volte ho fallito, alcune delle mie città sono cadute; poi ho trovato un'altra città minacciata e mi sono preparato a un'altra battaglia. Con l'andar del tempo ho imparato a cercare le possibili minacce e a mettermi tra loro e la mia città, facendo appello ad altri hacker perché venissero e si unissero a me.
Oggigiorno spesso non sono da solo. È un sollievo e una gioia quando vedo un reggimento di hacker che scavano trincee per difendere il confine e quando mi rendo conto che questa città può sopravvivere; per ora. Ma i pericoli diventano più grandi ogni anno, e ora Microsoft ha esplicitamente preso di mira la nostra comunità. Non possiamo dare per scontato il futuro della libertà; non diamolo per scontato! Se volete mantenere la vostra libertà dovete essere pronti a difenderla.
* La traduzione di questo saggio è stata revisionata e curata, con la supervisione dell'autore, da Lorenzo Bettini, Antonio Cisternino, Francesco Potortì e Alessandro Rubini.
. Proprietà
e open source
Cosa s'intende
con “proprietà” quando questa è replicabile all'infinito, altamente
malleabile, e la cultura circostante non è dotata né di relazioni di potere
coercitivo né dell'economia derivante dalla penuria di materiali?
In realtà, nel
caso della cultura open source si tratta di una domanda dalla risposta facile.
Soltanto il proprietario (o i proprietari) di un progetto detiene il diritto
esclusivo, riconosciutogli dall'intera comunità, di ridistribuire le
versioni modificate.
(Nella
discussione sulla “proprietà” in questo capitolo, userò il singolare, come
se ogni progetto fosse di proprietà di un solo individuo. È tuttavia ovvio che
potrebbe anche trattarsi di gruppi di persone. Le dinamiche interne di tali
gruppi verranno esaminate più avanti).
Secondo le
licenze standard open source, tutte le entità coinvolte rivestono il medesimo
ruolo nel gioco evolutivo. In pratica esiste però una distinzione molto ben
riconosciuta tra gli aggiustamenti “ufficiali” – approvati e integrati nel
software in evoluzione da parte di quanti, pubblicamente riconosciuti, si
occupano della sua gestione – e quelli “volanti” realizzati da terze
parti. In genere questi sono rari, e non riscuotono molta fiducia.
È facile
comprendere perché la ridistribuzione pubblica si riveli una questione
fondamentale. La convenzione incoraggia la gente a farsi le proprie “patch”
per uso personale ogni volta che sia necessario. Le consuetudini mostrano
indifferenza nei confronti di quanti ridistribuiscono versioni modificate
all'interno di un gruppo chiuso di utenti o di sviluppatori. La proprietà
diviene invece questione centrale soltanto quando le modifiche, in competizione
con la versione originale, vengono diffuse nell'intera comunità open source.
In generale ci
sono tre modi per acquisire la proprietà di un progetto open source. Uno, il più
ovvio, è avviare la nascita del progetto. Se fin dall'inizio esso è stato
mantenuto da una sola persona e questi è ancora attivo, la consuetudini non
permettono neppure di chiedere a chi appartenga la proprietà del
progetto.
La seconda
maniera è ottenere la proprietà del progetto dal proprietario precedente
(anche noto come “il passaggio del testimone”). È ben chiaro alla comunità
che i proprietari hanno il dovere di passare i progetti a successori competenti,
quando non possono o non vogliono più investire il tempo necessario nel lavoro
di sviluppo o di mantenimento.
Risulta
significativo che nel caso di grossi progetti, tali trasferimenti del controllo
normalmente vengono annunciati con una certa enfasi. Mentre non sono noti casi
di interferenza da parte della comunità open source sui successori scelti dai
proprietari, la pratica convenzionale incorpora chiaramente la legittimazione
pubblica come fatto importante.
Per progetti
minori, generalmente è sufficiente includere il cambio di proprietà nella
storia dei cambiamenti inclusa in calce a ogni progetto. Chiaramente si presume
che se l'ex-proprietario non abbia passato il controllo volontariamente, lo
riassuma con l'apporto della comunità dopo aver esposto le obiezioni in
pubblico entro un ragionevole periodo di tempo.
Il terzo modo
per acquisire la proprietà di un progetto è far presente che questo ha bisogno
di lavori e il proprietario è scomparso o ha perso interesse. Chi volesse
procedere, ha prima la responsabilità di cercare il proprietario. Se ciò
risulta impossibile, allora va annunciato in un luogo ben visibile (tipo, il
newsgroup di Usenet dedicato all'area di quell'applicazione) che il progetto
sembra esser orfano, e che si vorrebbe assumerne la responsabilità.
Secondo la
convenzione, occorre far trascorrere un certo periodo di tempo prima di
procedere con l'auto-dichiarazione di essere il nuovo proprietario. In questo
intervallo, se qualcun altro annuncia di aver lavorato al progetto, tocca prima
a lui. È considerata buona educazione rendere note pubblicamente e più volte
le proprie intenzioni. Come pure farlo in molti forum rilevanti (newsgroup e
mailing list attinenti). Ancor meglio se si dimostra pazienza in attesa di
risposte. In generale, più sono visibili gli sforzi per consentire
all'ex-proprietario di farsi avanti, e più l'acquisizione risulterà
comprovata.
Una volta
seguito questo iter in mancanza di obiezioni, sarà possibile dichiararsi
proprietari del progetto orfano e annotare ciò nelle note. Tale processo
risulta però meno sicuro del passaggio del testimone, e non ci si potrà
considerare pienamente legittimati fino a quando non si siano apportati
miglioramenti sostanziali per l'intera comunità.
Per vent'anni ho
osservato il dipanarsi di queste consuetudini in azione, fin dall'epoca
dell'antica storia pre-FSF del software open source. Vale la pena sottolinearne
alcuni tratti caratteristici. Il più interessante è il fatto che la maggior
parte degli hacker ha seguito tale processo senza rendersene granché conto. Non
a caso quanto enunciato sopra potrebbe rivelarsi il primo tentativo cosciente e
ragionevolmente completo di elaborarne un riassunto scritto.
Altro tratto
degno di nota è il fatto che queste convenzioni inconsce sono state seguite con
una coerenza notevole e perfino incredibile. Ho osservato personalmente
l'evoluzione di, letteralmente, centinaia di progetti open source, e posso
contare sulle dita le violazioni significative viste o riportate all'iter
descritto sopra.
Terza
caratteristica interessante è l'evoluzione di tali consuetudini nel corso del
tempo, spostatesi sempre verso un'unica direzione. Ovvero quella di stimolare
maggior responsabilità pubblica, maggior attenzione collettiva e maggior cura
nel preservare i nomi dei partecipanti e le cronologie delle modifiche in ogni
progetto, così da stabilire, tra l'altro, la legittimità dei proprietari
correnti.
Queste
caratteristiche sono la testimonianza della non casualità delle abitudini in
uso, rivelandosi anzi queste il risultato di un qualche tipo di una
pianificazione implicita o di un percorso generativo sviluppatosi all'interno
della cultura open source che risulta assolutamente fondamentale alle modalità
in cui si esprime.
Uno dei primi
commenti ricevuti sottolineava come il contrasto tra la cultura hacker su
Internet e quella dei cracker/pirati (il “warez d00dz'' centrato sul gioco del
“cracking” e le bulletin-board pirate) chiariva abbastanza bene i percorsi
generativi di entrambe. Torneremo al “d00dz” come contrasto più avanti in
questo saggio.