Copertina
Autore Michele Sciabarrà
Titolo Il software Open Source e gli standard aperti
EdizioneMcGraw-Hill, Milano, 2004, Microcalcolatori , pag. 324, cop.fle., dim. 154x235x20 mm , Isbn 978-88-386-4374-3
LettoreLuca Vita, 2004
Classe informatica: politica , informatica: linguaggi , diritto
PrimaPagina


al sito dell'editore


per l'acquisto su IBS.IT

per l'acquisto su BOL.IT

per l'acquisto su AMAZON.IT

 

| << |  <  |  >  | >> |

Indice

    Introduzione                             XI

    Capitolo 1  Open Source                   1

1.1 Che cosa è l'Open Source?                 1
    Codice sorgente e compilato               3
    Distribuzioni Linux                      11
1.2 Definizione di Open Source               14
    Ridistribuzione libera                   15
    Codice sorgente                          15
    Lavoro derivato                          16
    Lavoro originario                        16
    Non discriminazione contro persone       17
    Non discriminazione contro usi           17
    Licenza valida senza altri accordi       17
    Non legata a un prodotto                 18
    Non proibisce altri software             18
    Neutrale rispetto alla tecnologia o
    all'interfaccia                          18
1.3 Licenze                                  19
    GPL                                      19
    LGPL                                     21
    BSD Public License                       22
    Apache License                           23
    Mozilla Public License                   23
    Altre licenze                            23
1.4 Caratteristiche dei progetti Open Source 24
    Progetti comunitari                      25
    Supporto agli utenti                     26
    Tracciamento degli errori                27
    Supporto agli sviluppatori               29
    Modularità                               34
    Multi piattaforma                        36

    Capitolo 2  Storia                       39

2.1 La situazione presente                   39
    L'hardware                               40
    Chi controlla il software dei PC         41
2.2 Storia dell'Open Source                  43
    Il progetto GNU                          44
    Linux                                    54
    La cattedrale e il bazar                 59
    Il progetto Mozilla                      60
    L'Open Source                            64
    Il progetto OpenOffice.org               65
2.3 Riferimenti                              66

    Capitolo 3  Office                       69

3.1 Open Source per l'ufficio                69
    Software multi piattaforma               70
3.2 OpenOffice.org                           72
    Elaboratore di testi                     75
    Foglio elettronico                       80
    Presentazioni e grafica                  84
    Filtri di importazione                   87
3.3 Gnome Office                             89
    Abiword                                  89
    Gnumeric                                 92
    Gimp                                     95
    Dia                                     101
    Altri programmi GNOME                   104
3.4 Wine                                    104
3.5 Il problema dei formati                 110
3.6 Riferimenti                             114

    Capitolo 4  Desktop                     115

4.1 Ambienti desktop                        115
4.2 KDE                                     120
    Integrazione                            121
    Konqueror                               124
    Applicazioni                            126
    Koffice                                 127
4.3 Gnome                                   131
    Applicazioni                            133
    Evolution                               136
4.4 X11                                     139
    Implementazioni                         145
    Cosa manca a X11                        148
4.5 Considerazioni finali                   152
4.6 Riferimenti                             154

    Capitolo 5  Linux                       155

5.1 Importanza di Linux                     155
5.2 Il kernel                               156
    Le versioni del kernel                  157
    Cosa c'è nel kernel?                    161
5.3 Hardware                                165
    Architetture                            165
    I moduli                                168
    Input/Output                            170
    File system                             172
    Networking                              176
    Multimedia                              179
5.4 Riferimenti                             187

    Capitolo 6  Database                    189

6.1 Database relazionali                    189
    L'SQL                                   191
6.2 MySQL                                   196
    SQL di MySQL                            198
    Tabelle MySQL                           200
    Replicazione                            202
    Amministrazione del database            203
    Connettori                              207
6.3 PostgreSQL                              208
    Ereditarietà                            209
    Viste, Foreign Key                      211
    Sotto Query, Trigger e Stored Procedure 214
6.4 Riferimenti                             215

    Capitolo 7  Internet                    217

7.1 Gli standard Internet                   217
    I Protocolli                            220
    Stack di protocolli                     222
    Servizi di Internet                     224
7.2 DNS                                     225
    Bind                                    229
    DjbDNS                                  230
7.3 Posta elettronica                       232
7.4 Server SMTP                             234
7.5 Client di E-mail                        243
    Evolution Mail                          244
    Mozilla Mail                            246
7.6 Riferimenti                             248

    Capitolo 8  Web                         249

8.1 Mozilla                                 249
    Caratteristiche                         252
    Sviluppo Web                            254
8.2 Apache                                  256
    Moduli di Apache                        257
8.3 Zope                                    262
    L'interfaccia di gestione               263
    I Database                              265
8.4 Standard del Web                        269
    HTTP e HTML                             269
    XML                                     271
8.5 Riferimenti                             281

    Capitolo 9  Linguaggi                   283

9.1 C/C++                                   284
9.2 Java                                    287
9.3 Perl                                    289
    Caratteristiche                         292
    Variabili e tipi di dato                293
    Espressioni regolari                    296
    Libreria                                298
9.4 PHP                                     300
    Primi passi                             301
    Una calcolatrice                        303
9.5 Python                                  306
    Sequenze e dizionari                    309
    Controllo di flusso                     313
    Perché Python                           316
9.6 Riferimenti                             317

Indice analitico                            319
 

 

| << |  <  |  >  | >> |

Pagina 1

Capitolo 1

Open Source


L'Open Source è un concetto nuovo e rivoluzionario venuto alla ribalta nel mondo dell'informatica dopo l'avvento di Internet. Ma è rivoluzionario solo se si considera lo stato corrente dell'informatica (descritto in dettaglio nel Capitolo 2, la Storia dell'Open Source). Non è invece rivoluzionario se confrontato con quanto avviene in altre discipline umane, più evolute, in cui alla concorrenza commerciale si affiancano processi collaborativi che consentono all'intero campo di evolvere e progredire.


1.1 Che cosa è l'Open Source?

Per spiegare il concetto di Open Source, si può provare a paragonare il software alla conoscenza e l'informatica alla scienza in generale. Comunque, poiché il presente testo intende essere tecnico, si eviterà di approfondire questioni che sono di competenza dei filosofi. Pertanto si cercherà di capire cosa è il software solo per spiegare cosa sia l'Open Source e perché esso possa essere considerato un concetto pur rivoluzionario, ma per certi versi naturale.

Un programma è solo una sequenza di istruzioni, informazione allo stato puro. Se si prendono queste informazioni, si memorizzano in un supporto magnetico e si danno in pasto a un computer, la macchina le eseguirà. Ovviamente queste informazioni devono essere scritte in un linguaggio che il computer comprende. Il computer, la "macchina generale dell'informazione" ne trarrà qualunque cosa sia generabile da queste istruzioni. Il software vi permetterà di scrivere la tesi di laurea, o di memorizzare l'agenda contatti, oppure vi terrà la contabilità o intratterrà vostro figlio con un gioco di azione.

Se un programmatore scrive un programma, come un autore scrive un libro, o un musicista compone una musica, le leggi degli uomini riconoscono un diritto di autore di farci quello che vuole. Quindi potete decidere di vendere i vostri diritti di autore a un editore, e farvi stampare il libro, prendendovi una percentuale delle vendite; oppure incidere un disco e farlo arrivare sotto forma di oggetto ai vostri estimatori. In ogni caso il software è una forma di conoscenza, né più né meno della letteratura o la musica.

Ma c'è un tipo di conoscenza che viene normalmente condiviso con tutti: la ricerca scientifica. Lo scienziato è una persona di talento che ha la capacità contemplativa di studiare i fenomeni della natura e di svelarli, tramite la formulazione di leggi e seguendo un metodo rigoroso noto come metodo scientifico. Ora, che uno scienziato di talento abbia la capacità di svelare i segreti della natura è una cosa che all'umanità fa molto comodo.

Se si tratta di fisica, grazie alla conoscenza delle leggi dell'elettricità oggi abbiamo la luce in ogni casa, e molto altro. Se si tratta di matematica, i matematici hanno fornito il fondamento teorico rigoroso alla fisica; ancora sono le leggi della matematica che applicate all'economia governano molto spesso la vita quotidiana. Basti pensare alle addizioni e sottrazioni quando facciamo la spesa (cosa che ci sembra banale) o al calcolo degli interessi dei mutui che abbiamo acceso in banca (cosa che ci sembra meno banale - e che ci fa dubitare a volte del concetto di matematica come scienza esatta).

Quindi, la ricerca scientifica è finanziata dall'umanità. Agli scienziati viene dato uno stipendio, viene loro consentito di insegnare, ma hanno un obbligo: fare ricerca e pubblicarla. Quindi esiste anche nella normale vita quotidiana la prassi di diffondere gratuitamente a tutti la conoscenza; e si tratta di conoscenza di cose importanti, come le leggi ultime di atomi e quark o i modi di curare le malattie. La ricerca scientifica viene considerata patrimonio dell'umanità e quindi diffusa a beneficio di tutti.

Ma non è solo la scienza che trae giovamento da questa libera circolazione di idee e concetti. La prassi di diffondere informazioni è diffusa anche fuori dal mondo scientifico. Per esempio, è molto frequente anche nel mondo della tecnologia: lo fanno gli ingegneri e gli industriali.

Basti pensare alle filettature delle viti: se si compra un bullone da un fornitore e un dado da un altro, esistono standard che garantiscono che la filettatura del dado sia compatibile con quella del bullone. Gli standard, che sono conoscenza condivisa, sono accessibili gratuitamente a tutti. Per la verità, l'acquisto del testo di uno standard costa, ma generalmente si tratta di una cifra molto bassa e accessibile, che serve a coprire i costi vivi del lavoro dei comitati di standardizzazione. Non si tratta in nessun caso di una royalty sull'uso dello standard, ovvero dell'acquistato della conoscenza. È invece un compenso per le spese vive di gestione della diffusione.

Quindi, in pratica, la conoscenza condivisa e diffusa gratuitamente non è affatto una novità: ha le sue ragioni di essere, serve allo sviluppo dell'intera industria. La novità è il fatto che questa conoscenza condivisa viene applicata al mondo del software con l'Open Source.


Codice sorgente e compilato

Prima di entrare in dettaglio sulle caratteristiche del software Open Source, occorre chiarire bene alcuni aspetti tecnici che sono di grande importanza nel discorso che seguirà.

Sono concetti abbastanza tecnici e sono riferiti al modo con cui i programmi per computer vengono scritti. Poiché si tratta di software, e per di più di software che può essere modificato da altri programmatori (che non siano necessariamente quelli che lo hanno inizialmente realizzato) questi concetti sono importanti.

Non ci si dilunga sull'architettura dei computer: è abbastanza noto che sono composti da una unità di elaborazione (nei personal computer il microprocessore), da una memoria di lavoro (la RAM) i cui contenuti persistono fintanto che il computer è acceso, e una memoria di massa, che mantiene le informazioni anche a computer spento. Per esempio i dischi rigidi e in generale le memorie di massa come nastri, dischi rimovibili ecc.

Il software viene scritto specificamente per un certo tipo di unità di elaborazione: l'unica cosa che infatti il computer è in grado di eseguire è una sequenza di numeri che corrispondono a istruzioni, e che gli addetti (quelli che se lo ricordano ancora) definiscono "linguaggio macchina".

Il linguaggio macchina non è cosa da uomini: comporre codice direttamente in linguaggio macchina (formato da codici numerici in sostanza) è semplicemente troppo dispendioso in termini di tempo perché gli attuali tecnici informatici possano dedicarvisi. Lo si faceva solo nei primi tempi dei computer, anche se ci sono ambiti in cui si scrive ancora oggi direttamente codice in linguaggio macchina.

Normalmente il software viene invece scritto in uno dei cosiddetti linguaggi di programmazione ad alto livello. Uno dei linguaggi maggiormente utilizzati è il linguaggio C (o il suo derivato C++), ma ce ne sono molti altri. Il programmatore scrive il suo programma in questo linguaggio (o in un altro di sua scelta), producendo quello che viene detto codice sorgente, in inglese "source code". Ed è precisamente a questo "source" a cui si riferisce l' "Open Source" di cui stiamo trattando.

Una volta che il programmatore ha scritto il codice, questo viene passato a un programma speciale, detto compilatore, il quale produce il linguaggio macchina per l'esecuzione del programma. Il compilatore generalmente opera molte trasformazioni su quello che il programmatore originariamente ha scritto. Non è semplice trasformare qualcosa che è stato scritto in un linguaggio comprensibile all'uomo in qualcosa di comprensibile a una macchina.

Un'importante conseguenza di questa trasformazione è l'incomprensibilità (per l'uomo) del risultato. In pratica non è possibile risalire (o almeno non è una cosa semplice) al codice sorgente avendo solo il risultato finale, ossia il programma in linguaggio macchina. Generalmente si fa riferimento a questo risultato come binario o eseguibile.

[...]

La prassi di chi produce software con licenze proprietarie è non dare all'utente finale i sorgenti, ma solamente l'eseguibile, il sorgente compilato in codice binario. È molto importante rendersi conto che, non avendo i sorgenti, non è possibile generalmente capire e modificare un programma. Questo diventa un segreto di chi ha scritto il software.

Uno dei capisaldi del movimento dell'Open Source è che vengano resi pubblici i codici sorgenti dei software. Non si tratta semplicemente di dare gli eseguibili gratuitamente perché facendo solo questo si consente all'utente di usare il programma, ma non se ne permette la modifica. Il punto è proprio diffondere la conoscenza e la comprensione del codice, di come cioè funziona il software.

| << |  <  |  >  | >> |

Pagina 14

1.2 Definizione di Open Source


Abbiamo chiarito alcuni degli aspetti più evidenti che caratterizzano il software Open Source. Adesso è il momento di cominciare a scendere in dettaglio, se vogliamo essere più precisi e formali, e vogliamo stabilire esattamente di cosa si tratta.

Che cosa sia esattamente l'Open Source è stato formalizzato dalla OSI (Open Source Initiative), una società non a fini di lucro, il cui scopo sociale è accertare che alcune licenze del software siano conformi all'Open Source.

Per definire che cosa sia l'Open Source, Bruce Perens, uno dei membri della OSI, e rinomato esperto nel campo dell'Open Source, ha scritto una serie di norme. Queste devono essere soddisfatte da una licenza perché il software possa essere definito "Open Source". In realtà Perens ha adattato, per esplicita ammissione, le linee guida del software libero del progetto Debian.

Nota. Il progetto Debian ha realizzato una distribuzione Linux di grande diffusione, ma di tipo non commerciale, nello spirito degli stessi progetti Open Source. Si distingue dalle altre distribuzioni di maggior diffusione, che sono invece prodotte da aziende che le rivendono e sono quindi orientate a fornire ciò che i loro clienti si aspettano. Il progetto Debian è interamente gestito da volontari e ha come obiettivo quello di massimizzare l'uso del software libero senza imporre alcuna restrizione o orientamento nell'uso.

Le caratteristiche che sono state identificate per definire una licenza che soddisfa il concetto di Open Source sono le seguenti.


Ridistribuzione libera

Il primo criterio di una licenza Open Source è consentire una libera ridistribuzione del software. Se si riceve pertanto un software, questo deve poter essere ceduto a terzi senza che si debbano pagare royalty a chi ha fornito il software in primo luogo.

Lo scopo di questo principio è fare sì che il software circoli, e venga condiviso dai suoi utenti. Da notare che le licenze Open Source non proibiscono di vendere il software, ma obbligano a consentire, a chi lo acquista, la ridistribuzione del software ad altri, per soldi o a titolo gratuito.

In mancanza di questo principio basilare, si tratterebbe di una licenza commerciale come le altre. Limitando la circolazione del software, prevarrebbe il principio di venderne più possibile invece di cercare di ottenere benefici a lungo termine dalla libera circolazione del software stesso.


Codice sorgente

Il secondo criterio di una licenza Open Source è che deve essere sempre fornito il codice sorgente non offuscato. In ogni caso, si deve consentire la ridistribuzione anche del codice sorgente.

[...]

Questo serve a consentire che il software possa essere modificato, migliorato, adattato ad altri usi (ovviamente dagli utenti che hanno sufficienti competenze per manipolarlo). Naturalmente il principio di ridistribuzione si deve applicare anche al codice sorgente.

Ci sono casi in cui non è conveniente fornire obbligatoriamente il codice sorgente. Per esempio nel caso di distribuzione binari di consistente dimensione (come avviene quando si scaricano le immagini binarie di una distribuzione Linux da Internet). In questi casi si considera sufficiente che sia semplicemente accessibile anche il codice sorgente, via Internet, qualora l'utente lo voglia.

| << |  <  |  >  | >> |

Pagina 19

1.3 Licenze

Vediamo adesso alcune delle licenze che sono state approvate dalla OSI.

Nota. Il testo integrale delle licenze si può trovare nel sito della OSI: www.opensource.org.

Non possiamo vederle tutte, pertanto ci limiteremo a vedere quelle maggiormente in uso. Faremo anche alcune osservazioni, perché non tutte le licenze sono esattamente uguali, in particolare per quanto riguarda l'uso commerciale di lavori derivati.

Spesso succede che un prodotto distribuito sotto una licenza Open Source impedisca l'abbinamento a un prodotto commerciale. Per questo motivo, molti produttori di software Open Source offrono la possibilità di ottenere lo stesso software sotto un'altra licenza.

Per esempio, senza avere obblighi di pubblicare il lavoro derivato in Open Source, dietro il pagamento di un compenso all'autore. Questa è una legittima e diffusa fonte di guadagno per gli autori di software Open Source.


GPL

La licenza più usata, la più radicale, la più complessa e dettagliata delle licenze Open Source è anche la prima a essere stata formulata: la licenza General Public License, con cui Richard Stallman rilascia tuttora il software del progetto GNU. Parleremo diffusamente di lui e del progetto GNU nel secondo capitolo.

Lo scopo di questa licenza è, come recita testualmente, "garantire la libertà di condividere e modificare software libero, in modo che il software libero sia libero per tutti gli utenti".

Da notare che non proibisce di vendere il software libero, o in generale il software coperto da questa licenza. Gli obblighi sono diversi. Il primo obbligo è dare i sorgenti completi del software a chiunque ne ottenga un lavoro derivato (per esempio un compilato); il secondo obbligo è rilasciare tutte le modifiche apportate a un lavoro coperto da GPL sotto licenza GPL.

Tra gli altri obblighi previsti c'è dare il giusto riconoscimento all'autore, inserendo chiare indicazioni di chi ha realizzato il software; se si tratta di un lavoro derivato dal lavoro di un'altra persona, è necessario indicarlo.

Bisogna anche tenere presente che la licenza prevede l'assoluta mancanza di garanzie. Il software viene fornito così come è, senza che ci siano garanzie implicite o esplicite, nemmeno di commerciabilità o di essere adatto a un particolare scopo.

Nota. C'è da dire che simili restrizioni valgono comunemente anche per il software commerciale in circolazione. Il fatto è che il software non può essere in alcun modo garantito esente da errori. Questa è una restrizione dimostrata matematicamente. Non si possono fare teoremi sul comportamento del software e quindi non si può dimostrare alcunché. È stato dimostrato con il famoso "problema della fermata": non esiste un algoritmo in grado di dimostrare che un altro algoritmo avrà fine o no. Per corollario, non esistono algoritmi in grado di calcolare il comportamento di altri algoritmi (che non siano estremamente banali).

Si dice a volte che la licenza GPL è come un virus legale. Infatti, se qualcuno usa software GPL per un suo prodotto, questo viene infettato dalla licenza stessa. Infatti non è possibile ridistribuire un software GPL se non si rilascia l'intero software sotto la licenza GPL.

Un autore di software non è obbligato ad accettare le condizioni della GPL (poiché non ha firmato un accordo di licenza), ma in generale i software distribuiti sotto GPL non hanno altre autorizzazioni di uso che la licenza stessa e quindi, nell'atto di usare e di ridistribuire il software, si accettano implicitamente le condizioni di una licenza.

Il meccanismo è abbastanza ingegnoso: in pratica, se qualcuno vuole trarre giovamento dal software rilasciato sotto GPL, che magari fa già molto di più di quello che serve, ma non tutto, è a un bivio. Può decidere di rifare tutto da capo (e tenersi i diritti del software), o di utilizzare modificato il software GPL. Ma per utilizzare il software GPL è obbligato a contribuire alla causa, rilasciando il lavoro derivato anche esso sotto GPL.

Inizialmente il compilatore GNU C, e poi il sistema operativo Linux (entrambi rilasciati sotto GPL), hanno dimostrato l'efficacia di questo approccio. Nel caso del compilatore C, molti produttori di sistemi operativi anche proprietari si trovavano spesso nella necessità di dover dotare un nuovo sistema di un compilatore C.

La scelta spesso era tra rifare tutto da capo, o estendere il compilatore GNU, già testato e notoriamente valido, aggiungendo un nuovo componente per soddisfare le necessità del nuovo sistema. Ed è stato così che, nel giro di pochi anni, il compilatore GNU è diventato di gran lunga tra i più ricchi di funzionalità, anche rispetto a quelli commerciali. Il compilatore GNU C è in grado di produrre codice per una grande quantità di sistemi e processori diversi.

Lo stesso circolo virtuoso si è innestato con Linux, con lo svi1uppo di nuovi device driver e in generale di estensioni al sistema, che per poter essere ridistribuite dovevano essere rilasciate in sorgente sotto GPL.

| << |  <  |