La GNU GPL non è sempre accondiscendente; dice di "no" ad alcune delle cose che a volte la gente vuole fare. Alcuni utenti affermano che sia negativo il fatto che la GPL "escluda" alcuni sviluppatori di software proprietario che "hanno bisogno d'essere portati nella comunità del software libero." Ma non siamo noi ad escluderli dalla nostra comunità; sono loro che scelgono di non entrare. Decidere di produrre software proprietario equivale a decidere di starne fuori. Esservi dentro significa cooperare con noi; non possiamo "portarli nella nostra comunità" se non vogliono unirsi a noi. Ciò che possiamo fare è offrire un incentivo ad unirsi a noi. È per far sì che il nostro software già prodotto sia un incentivo che la GNU GPL è stata pensata: "Se renderete il vostro software libero, potete utilizzare questo codice". Di certo in questo modo non si vincerà sempre, ma qualche volta sì. "Richard Stallman"

macbuntu, cinelerra, cinnamon, lmms, ubuntu, linux Debian, Linux Ubuntu, software libero Gnome Media Player, Multimedia, Audio, Video, Linux, Ubuntu ubuntu 13.04, raring ringtail, linux Kubuntu, KDE, Ubuntu Valve Steam, giochi, Linux, Ubuntu QTOctave, MatLab, programmazione, Linux, Ubuntu Google Calendar, Office, Ubuntu, Linux infografica, email, posta elettronica, messaggistica, Ubuntu, Linux Gnome 3 shell, ambiente grafico, Ubuntu, Arch Linux

Filosofia Open Source, prima parte

domenica 26 ottobre 2008

Dopo aver presentato la storia di UNIX e accennato alla nascita del movimento GNU è sembrato doveroso dare maggiori dettagli sul movimento che ha coinvolto una comunità di sviluppatori molto ampia e ha dato vita tra i numerosi progetti al sistema operativo GNU/Linux.

Proprio per aumentare l’informazione in merito sono stati scelti due documenti autorevoli scritti
da altrettanto autorevoli guru. Il primo documento è di Richard Stallman, l’uomo che ha fondato la Free Software Foundation, considerato per molti un visionario per molti altri un genio. Il testo vuole essere una base da analizzare per creare una propria opinione in merito.
Il secondo documento è di Bruce Perens, il fondatore della distribuzione Debian, ed è una dettagliata analisi delle varie licenze software presenti con relative caratteristiche. Il testo è diretto con particolare cura agli sviluppatori ma può essere un ottimo riferimento per gli utenti finali che utilizzeranno soluzioni software per le proprie esigenze.

Il progetto GNU
di Richard Stallman
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 hacker2 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 esi-
steva, 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 soft-
ware 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 pira-
teria”, quello che dicono è in realtà secondario. Il vero messaggio in quelle affermazioni sta nel-
le 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 indi-
scutibile 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 con-
sente 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 persona 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’informa-
tica. 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 libe-
ro, 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 Hillel3:
“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:
¢ utente ha la libertà di eseguire il programma per qualsiasi scopo;
¢ l’utente ha la libertà di modificare il programma secondo i propri bisogni (perché questa li-
bertà abbia qualche effetto in pratica, è necessario avere accesso al codice sorgente del pro-
gramma, poiché apportare modifiche a un programma senza disporre del codice sorgente è
estremamente difficile);
¢ l’utente ha la libertà di distribuire copie del programma, gratuitamente o dietro compenso;
¢ l’utente ha la libertà di distribuire versioni modificate del programma, così che la comunità
possa fruire dei miglioramenti apportati.
Poiché “free” si riferisce alla libertà e non al prezzo, vendere copie di un programma non contraddice il concetto di software libero. In effetti, la libertà di vendere copie di programmi è essenziale:

raccolte di software libero vendute su CD-ROM sono importanti per la comunità, e la loro vendita è un modo di raccogliere fondi importante per lo sviluppo del software libero. Di conseguenza, un programma che non può essere liberamente incluso in tali raccolte non è software libero.

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 compi-
latore 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 ne’ 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 neces-
sariamente 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 aspet-
tavano 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.”

Ultimi post pubblicati


160x600_kingolotto_auto.gif

Vacanze    TUI.it

Universo Linux

0 commenti:

Ultimi post pubblicati

I miei preferiti

Segnala Feed WebShake – tecnologia iFeed Aggregatore di blog Aggregatore Blogstreet - dove il blog è di casa Vero Geek iwinuxfeed.altervista.org Paperblog Add to Technorati Favorites Directory dei blog italiani BlogItalia.it - La directory italiana dei blog Feed XML offerto da BlogItalia.it BlogNews Il Bloggatore web counter Feedelissimo intopic.it