                           Panoramica su BSD

  Greg Lehey

   <grog@FreeBSD.org>

   FreeBSD e un marchio registrato della FreeBSD Foundation.

   AMD, Am486, Am5X86, AMD Athlon, AMD Duron, AMD Opteron, AMD-K6,
   Athlon, Elan, Opteron, e PCnet sono marchi della Advanced Micro
   Devices, Inc.

   Apple, AirPort, FireWire, Mac, Macintosh, Mac OS, Quicktime, e
   TrueType sono marchi della Apple Computer, Inc., registrati negli
   Stati Uniti e in altri paesi.

   Linux e un marchio registrato di Linus Torvalds.

   Motif, OSF/1, e UNIX sono marchi registrati e IT DialTone e The
   Open Group sono marchi del The Open Group negli Stati Uniti e in
   altri paesi.

   Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer
   Pages, JDK, JRE, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade,
   Sun Enterprise, Sun Fire, SunOS, e Ultra sono marchi o marchi
   registrati della Sun Microsystems, Inc. negli Stati Uniti e in
   altri paesi.

   XFree86 e un marchio della The XFree86 Project, Inc.

   Molti dei nomi identificativi usati dai produttori e dai venditori
   per distinguere i loro prodotti sono anche dei marchi. Quando
   questi nomi appaiono nel libro, e il FreeBSD Project e al corrente
   del marchio, vengono fatti seguire dal simbolo "(TM)" o "(R)".

   Nel mondo open source, la parola "Linux" e quasi sinonimo di
   "Sistema Operativo", ma non si tratta del solo sistema operativo
   UNIX(R) open source. Secondo l'Internet Operating System Counter,
   ad Aprile del 1999 il 31.3% delle macchine connesse in rete ha in
   esecuzione Linux. Il 14.6% fa girare BSD UNIX. Alcuni dei piu
   grandi operatori del web, come Yahoo!, usano BSD. Il server FTP
   piu affollato del mondo nel 1999 (ora defunto), ftp.cdrom.com, usa
   BSD per trasferire 1.4 TB di dati al giorno. Chiaramente questo
   non e un mercato di nicchia: BSD e un segreto ben mantenuto.

   Dunque, qual e il segreto? Perche BSD non e conosciuto meglio?
   Questo documento risponde a questa e ad altre domande.

   In questo documento, le differenze tra BSD e Linux verranno
   evidenziate cos`i.

   Traduzione a cura di Gabriele Renzi <surrender_it@yahoo.it>.

     --------------------------------------------------------------

1 Cos'e BSD?

   BSD sta per "Berkeley Software Distribution". E il nome delle
   distribuzioni di codice sorgente dell'Universit`a della
   California, Berkeley, che erano originariamente estensioni al
   sistema operativo UNIX del settore Ricerca della AT&T. Molti
   progetti open source di sistemi operativi sono basati su una
   versione di questo codice sorgente noto come 4.4BSD-Lite. Inoltre,
   essi comprendono un gran numero di pacchetti provenienti da altri
   progetti Open Source, incluso, in particolare, il progetto GNU.
   L'intero sistema operativo comprende:

     * Il kernel BSD, che gestisce lo scheduling dei processi,
       l'utilizzo della memoria, il supporto multiprocessore (SMP), i
       driver dei vari dispositivi, ecc.

       Diversamente dal kernel Linux, ci sono differenti kernel BSD
       con differenti caratteristiche.

     * La libreria C, le API di base per il sistema.

       La libreria C BSD e basata su codice proveniente da Berkeley,
       non dal progetto GNU.

     * Utilit`a come shell, file manager, compilatori e linker.

       Alcune delle applicazioni derivano dal progetto GNU, altre no.

     * L'X Window System, che gestisce la visualizzazione grafica.

       L'X Window System usato nella maggior parte delle versioni di
       BSD viene mantenuto da uno dei due progetti separati, il
       progetto XFree86(TM) e il progetto X.Org. Questo e lo stesso
       codice usato da Linux. BSD in genere non specifica un "desktop
       grafico" come GNOME o KDE, anche se questi sono disponibili.

     * Molti altri programmi ed utilit`a.

     --------------------------------------------------------------

2 Cosa, un vero UNIX(R)?

   I sistemi operativi BSD non sono cloni, ma derivati open source
   del sistema operativo UNIX dell'AT&T Research, che e anche
   l'antenato del moderno UNIX System V. Questo potrebbe sorprendere.
   Come e potuto accadere questo, se la AT&T non ha mai rilasciato il
   suo codice come open source?

   E vero che lo UNIX AT&T non e open source, e nel senso del
   copyright BSD in definitiva non e UNIX, ma d'altro canto l'AT&T ha
   importato sorgenti da altri progetti, in maniera rilevante dal
   Computer Sciences Research Group dell'Universit`a della California
   a Berkeley, CA. Iniziato nel 1976, il CSRG ha iniziato a
   rilasciare nastri con il loro software, chiamandolo Berkeley
   Software Distribution o BSD.

   Le versioni iniziali di BSD consistevano principalmente di
   programmi utente, ma questo cambio drammaticamente quando il CSRG
   sottoscrisse un contratto con la Defense Advanced Projects
   Research Agency (DARPA) per migliorare i protocolli di
   comunicazione della loro rete, ARPANET. I nuovi protocolli furono
   conosciuti come Internet Protocols, e in seguito come TCP/IP, ai
   nomi dei protocolli piu importanti. La prima implementazione
   distribuita in maniera estesa fu parte di 4.2BSD, nel 1982.

   Nel corso degli '80, sorsero un certo numero di compagnie che
   producevano workstation. Molti preferirono usare UNIX su licenza
   piuttosto che sviluppare da soli un nuovo sistema operativo. In
   particolare, la Sun Microsystems rilicenzio UNIX ed implemento una
   versione commerciale di 4.2BSD, che chiamo SunOS. Quando alla AT&T
   stessa fu permesso di vendere UNIX commercialmente, cominciarono
   con una implementazione ridotta all'osso nota come System III,
   presto seguita da System V. Il codice fondamentale di System V non
   comprendeva la parte di rete, dunque tutte le implementazioni
   includevano software addizionale tratto da BSD, incluso il
   software legato al TCP/IP, ma anche utilit`a come la shell csh e
   l'editor vi. Complessivamente, questi miglioramenti furono
   conosciuti come le Estensioni Berkeley.

   Il nastro BSD conteneva codice AT&T e dunque richiedeva una
   licenza per il sorgente UNIX. Dal 1990, il finanziamento del CSRG
   si stava esaurendo, e se ne stava per affrontare la chiusura.
   Alcuni membri del gruppo decisero di rilasciare il codice BSD, che
   era Open Source, senza il codice proprietario della AT&T. Cio
   accadde infine con il Networking Tape 2, in genere noto come
   Net/2. Net/2 non era un sistema operativo completo: mancava circa
   il 20% del codice del kernel. Uno dei membri del CSRG, William F.
   Jolitz, scrisse il codice rimanente e lo rilascio all'inizio del
   1992 come 386BSD. Allo stesso tempo, un altro gruppo di ex membri
   del CSRG formo una compagnia chiamata Berkeley Software Design
   Inc. e rilascio una versione beta di un sistema operativo chiamato
   BSD/386, che era basato sugli stessi sorgenti. Il nome del sistema
   operativo e cambiato di recente in BSD/OS.

   386BSD non divenne mai un sistema operativo stabile. Invece, due
   altri progetti se ne distaccarono nel 1993: NetBSD e FreeBSD. I
   due progetti presero inizialmente direzioni divergenti, a causa
   della differente pazienza nell'attendere miglioramenti a 386BSD:
   la gente di NetBSD comincio all'inizio dell'anno, e la prima
   versione di FreeBSD non fu pronta fino alla fine dell'anno. Nel
   frattempo, i codici erano diventati abbastanza differenti da
   renderne difficile la fusione. Inoltre, i progetti avevano
   obiettivi differenti, come vedremo in seguito. Nel 1996, OpenBSD
   si ramifico da NetBSD, e nel 2003, DragonFlyBSD si ramifico da
   FreeBSD.

     --------------------------------------------------------------

3 Perche BSD non e piu conosciuto?

   Per un certo numero di ragioni, BSD e relativamente sconosciuto:

    1. Gli sviluppatori BSD sono spesso piu interessati a ripulire il
       loro codice che a fagli pubblicit`a.

    2. Molta della popolarit`a di Linux e dovuta a fattori esterni al
       progetto Linux, come la stampa, e le compagnie formate per
       fornire servizi relativi a Linux. Fino a poco tempo fa, la
       varie versioni di BSD open source non avevano tali spinte.

    3. Gli sviluppatori BSD tendono ad avere piu esperienza di quelli
       di Linux, ed hanno meno interesse nel rendere il sistema
       facile da usare. I nuovi arrivati tendono a sentirsi piu a
       loro agio con Linux.

    4. Nel 1992, l'AT&T cito in giudizio BSDI, il produttore di
       BSD/386, sostenendo che il prodotto conteneva codice sotto
       copyright della AT&T. Il caso fu risolto in tribunale nel
       1994, ma lo spettro della causa continua a perseguitare alcune
       persone. Nel marzo 2000 un articolo pubblicato sul web
       sosteneva che il caso era stato "concluso recentemente".

       Un dettaglio che venne chiarito dall'azione legale fu il nome:
       negli anni '80, BSD era stato conosciuto come "BSD UNIX". Con
       l'eliminazione delle ultima vestigia del codice AT&T da BSD,
       si era perso anche il diritto di usare il nome UNIX. Per
       questo noterete riferimenti nei libri al "sistema operativo
       4.3BSD UNIX" ed al "sistema operativo 4.4BSD".

    5. C'e una certa percezione che il progetto BSD sia frammentato e
       belligerante. Il Wall Street Journal parlo di
       "balcanizzazione" dei progetti BSD. Come per l'azione legale,
       questa percezione si basa principalmente su vecchie storie.

     --------------------------------------------------------------

4 Paragone tra BSD e Linux

   Dunque qual'e l'effettiva differenza tra, diciamo, Debian Linux e
   FreeBSD? Per l'utente medio, la differenza e sorprendentemente
   piccola: entrambi sono sistemi operativi tipo UNIX. Entrambi
   vengono sviluppati da progetti non commerciali (questo non si
   applica a molte altre distribuzioni di Linux, ovviamente). Nella
   sezione seguente, daremo un'occhiata a BSD e lo paragoneremo a
   Linux. La descrizione si applica molto da vicino a FreeBSD, che
   conta per un 80% delle installazioni BSD, ma le differenza da
   NetBSD, OpenBSD e DragonFlyBSD sono piccole.

     --------------------------------------------------------------

  4.1 Chi possiede BSD?

   Nessuna persona o societ`a possiede BSD. Esso e creato e
   distribuito da una comunit`a di persone con grande preparazione
   tecnica e voglia di fare che contribuiscono da tutto il mondo.
   Alcuni dei componenti di BSD sono progetti open source a se stanti
   gestiti da diversi responsabili.

     --------------------------------------------------------------

  4.2 Come viene sviluppato ed aggiornato BSD?

   I kernel BSD vengono sviluppati ed aggiornati seguendo il modello
   di sviluppo open source. Ogni progetto mantiene un albero dei
   sorgenti liberamente accessibile in un Concurrent Versions System,
   un sistema di gestione delle versioni concorrenti, che contiene
   tutti i file sorgenti del progetto, inclusa la documentazione ed
   altri file inerenti. Il CVS permette agli utenti di "estrarre" (in
   sostanza, estrarre una copia di) ogni versione desiderata del
   sistema.

   Un grande numero di sviluppatori da tutto il mondo contribuisce al
   miglioramento di BSD. Essi sono divisi in tre grandi gruppi:

     * I contributor scrivono codice o documentazione. Non gli e
       permesso di effettuare il commit (aggiungere codice)
       direttamente all'albero dei sorgenti. Affinche il loro codice
       sia incluso nel sistema, esso deve essere rivisto e
       controllato da uno sviluppatore registrato, noto come
       committer.

     * I committer sono sviluppatori con accesso in scrittura
       all'albero dei sorgenti. Per poter divenire un committer, un
       individuo deve dimostrare abilit`a nell'area nella quale e
       attivo.

       E a discrezione del committer la volont`a di confrontarsi con
       qualcuno prima di effettuare cambiamenti. In generale, un
       committer con esperienza puo effettuare cambiamenti che sono
       ovviamente corretti senza interrogare nessuno. Ad esempio, un
       committer del progetto di documentazione puo correggere errori
       tipografici o grammaticali senza un confronto con altri.
       D'altro canto, dagli sviluppatori che stanno per effettuare
       cambiamenti profondi o complessi ci si aspetta che
       sottopongano i cambiamenti a revisione prima di renderli
       effettivi. In casi estremi, un membro del core team, con una
       funzione simile a un Capo Architetto, puo ordinare che i
       cambiamenti siano rimossi dall'albero, un processo noto come
       marcia indietro. Tutti i committer ricevono una lettera che
       descrive ogni modifica individuale, dunque non e possibile
       effettuare un commit segretamente.

     * Il Core Team. FreeBSD e NetBSD hanno ognuno un core team che
       gestisce il progetto. I core team si sono modificati nel corso
       del progetto, ed i loro ruoli non sempre sono ben definiti.
       Non e necessario essere uno sviluppatore per far parte del
       core team, anche se e normale che sia cos`i. Le regole per il
       core team variano da un progetto ad un altro, ma in generale
       chi ne fa parte ha piu autorit`a nell'indirizzamento del
       progetto rispetto agli altri membri.

   Questa organizzazione differisce da Linux in vari modi:

    1. Nessuna persona controlla il contenuto del sistema. In
       pratica, questa differenza e sopravvalutata, poiche il Capo
       Architetto puo richiedere che il codice sia rimosso, ed anche
       nel progetto Linux viene permesso a molte persone di
       effettuare cambiamenti.

    2. D'altra parte, c'e un deposito centrale, un punto singolo dove
       e possibile trovare i sorgenti dell'intero sistema, incluse
       tutte le vecchie versioni.

    3. I progetti BSD mantengono l'intero "Sistema Operativo", non
       solo il kernel. Questa distinzione e utile solo marginalmente:
       ne BSD ne Linux sono utili senza applicazioni. Le applicazioni
       usate su BSD sono spesso le stesse usate su Linux.

    4. Come risultato di un mantenimento formalizzato di un singolo
       CVS per l'albero dei sorgenti, lo sviluppo di BSD e chiaro, ed
       e possibile accedere ad ogni versione del sistema dal numero
       di release o dalla data. Il CVS permette anche aggiornamenti
       incrementali del sistema: ad esempio, il repository di FreeBSD
       viene aggiornato piu o meno 100 volte al giorno. La maggior
       parte dei cambiamenti sono piccoli.

     --------------------------------------------------------------

  4.3 Release di BSD

   FreeBSD, NetBSD and OpenBSD forniscono il sistema in tre "release"
   differenti. Come per Linux, alle release vengono assegnati dei
   numeri come 1.4.1 o 3.5. Inoltre, il numero di versione ha un
   suffisso che indica il suo scopo:

    1. la versione di sviluppo del sistema e chiamata CURRENT.
       FreeBSD assegna un numero alla CURRENT, ad esempio FreeBSD
       5.0-CURRENT. NetBSD usa uno schema di denominazione
       leggermente differente ed aggiunge un suffisso di una singola
       lettera che indica i cambiamenti nell'interfaccia interna, ad
       esempio NetBSD 1.4.3G. OpenBSD non assegna un numero
       ("OpenBSD-current"). Tutti gli sviluppi del sistema vanno in
       questo ramo.

    2. A intervalli regolari, tra le due e le quattro volte all'anno,
       i progetti fanno uscire una versione RELEASE del sistema,
       disponibile su CD-ROM e come libero download da siti FTP, ad
       esempio OpenBSD 2.6-RELEASE o NetBSD 1.4-RELEASE. La versione
       RELEASE e intesa per gli utenti finali ed e la versione
       normale del sistema. NetBSD fornisce anche patch release,
       versioni con solo piccole correzioni, con una terza cifra, ad
       esempio NetBSD 1.4.2.

    3. Quando vengono trovati dei bug in una versione RELEASE,
       vengono corretti, e le correzioni vengono aggiunte all'albero
       del CVS. In FreeBSD, la versione risultante viene detta
       STABLE, mentre in NetBSD ed OpenBSD continua a chiamarsi
       RELEASE. Caratteristiche minori possono essere aggiunte a
       questo ramo dopo un periodo di test nel ramo CURRENT.

   In contrasto, Linux mantiene due alberi di codice differenti: la
   versione stabile e la versione di sviluppo. Le versioni stabili
   hanno un numero di versione pari, come 2.0, 2.2 o 2.4. Le versioni
   di sviluppo hanno numero di versione dispari, come 2.1, 2.3 o 2.5.
   In ogni caso, il numero e seguito da un ulteriore numero che
   indica la versione esatta. Inoltre, ogni venditore aggiunge i suoi
   programmi utente o le sue utilit`a, dunque anche il nome della
   distribuzione e importante. Ogni venditore di distribuzione
   assegna anche un numero di versione alla distribuzione, dunque una
   descrizione completa dovrebbe essere una cosa del tipo "TurboLinux
   6.0 con kernel 2.2.14"

     --------------------------------------------------------------

  4.4 Quali versioni di BSD sono disponibili?

   In contrasto alle numerose distribuzioni Linux, ci sono solo
   quattro BSD open source. Ogni progetto BSD mantiene il suo albero
   dei sorgenti ed il suo kernel. In pratica, comunque, ci sono meno
   divergenze tra i codici dei programmi utente dei vari progetti di
   quante ce ne siano in Linux.

   E difficile catalogare gli obiettivi di ogni progetto: le
   differenze sono molto soggettive. Di base,

     * FreeBSD punta alle alte prestazioni e alla facilit`a d'uso per
       l'utente finale, ed e molto usato dai fornitori di contenuti
       web. Funziona su diverse piattaforme, inclusi i sistemi basati
       su i386 ("PC"), i sistemi basati sui processori AMD a 64-bit,
       i sistemi basati su UltraSPARC(R), i sistemi basati su
       processori Alpha della Compaq e i sistemi basati sulle
       specifiche NEC PC-98. Il progetto FreeBSD ha nettamente piu
       utenti degli altri.

     * NetBSD punta alla massima portabilit`a: "of course it runs
       NetBSD", ovviamente ci gira NetBSD. Funziona su macchine che
       vanno dai palmtop ai grossi server, ed e anche stato usato
       dalla NASA in alcune missioni spaziali. E una scelta
       particolarmente buona per il vecchio hardware non Intel.

     * OpenBSD punta alla sicurezza e alla purezza del codice: usa
       una combinazione dei concetti open source e un rigoroso
       controllo del codice per creare un sistema la cui correttezza
       sia dimostrabile, rendendolo la scelta di organizzazioni
       attente alla sicurezza come banche, borse e dipartimenti del
       governo statunitense. Come NetBSD, funziona su un gran numero
       di piattaforme.

     * DragonFlyBSD punta ad alte prestazioni e scalabilit`a sotto
       qualsiasi sistema dal singolo sistema mono-processore al
       sistema massicciamente clasterizzato. DragonFlyBSD ha diversi
       obbiettivi a lungo termine, anche se e concentrato nel fornire
       un'infrastruttura SMP facile da capire, mantenere e
       sviluppare.

   Ci sono anche altri due sistemi operativi BSD che non sono open
   source, BSD/OS e il Mac OS(R) X della Apple:

     * BSD/OS fu il pu antico dei derivati di 4.4BSD. Non fu open
       source, anche se le licenze per il codice sorgente erano
       disponibili ad un costo relativamente basso. Per molti aspetti
       assomiglia a FreeBSD. Due anni dopo l'acquisizione di BSDi da
       parte di Wind River Systems, BSD/OS non riuscii a sopravvivere
       come prodotto indipendete. Supporto e codice sorgente sono
       ancora disponibili da Wind River, anche se tutto il nuovo
       sviluppo e concentrato sul sistema operativo embedded VxWorks.

     * Mac OS X e l'ultima versione del sistema operativo per la
       linea Macintosh(R) della Apple Computer Inc.. L'anima BSD UNIX
       di questo sistema operativo, Darwin, e disponibile come un
       sistema operativo open source completamente funzionante per
       computer x86 e PPC. Il sistema grafico Aqua/Quartz e molti
       altri aspetti proprietari di Mac OS X rimangono comunque
       closed source. Numerosi sviluppatori di Darwin sono anche
       committer di FreeBSD, e viceversa.

     --------------------------------------------------------------

  4.5 Come differisce la licenza BSD dalla GNU Public?

   Linux e disponibile con licenza GNU General Public License (GPL),
   che e pensata per eliminare il software closed source. In
   particolare, ogni lavoro derivante da un prodotto rilasciato sotto
   GPL deve essere fornito anche con il codice sorgente, se
   richiesto. Al contrario, la licenza BSD e meno restrittiva: le
   distribuzioni dei soli binari sono permesse. Cio e particolarmente
   attraente per le applicazioni embedded.

     --------------------------------------------------------------

  4.6 Cos'altro dovrei sapere?

   Poiche sono disponibili meno applicazioni per BSD che per Linux,
   gli sviluppatori BSD hanno creato un pacchetto di compatibilit`a
   con Linux, che permette ai programmi per Linux di funzionare su
   BSD. Il pacchetto include sia modifiche al kernel, in modo da
   permettere l'esecuzione corretta di chiamate di sistema Linux, che
   file di compatibilit`a, come la libreria C. Non c'e una differenza
   notevole nella velocit`a di esecuzione tra una applicazione in
   esecuzione su una macchina Linux ed una applicazione in esecuzione
   su una macchina BSD con pari caratteristiche.

   La natura "tutto da una sola fonte" di BSD fa s`i che gli
   aggiornamenti siano molto piu semplici da gestire rispetto alla
   maggior parte dei casi in Linux. BSD gestisce gli aggiornamenti
   della versione di libreria fornendo moduli di compatibilit`a per
   le versioni precedenti, dunque e possibile eseguire binari di
   parecchi anni prima senza problemi.

     --------------------------------------------------------------

  4.7 Cosa dovrei usare, BSD o Linux?

   Cosa significa tutto questo in pratica? Chi dovrebbe usare BSD,
   chi dovrebbe usare Linux?

   Questa e una domanda molto difficile a cui rispondere. Qui ci sono
   alcune linee guida:

     * "Se non e rotto, non aggiustarlo": se usi gi`a un sistema
       operativo open source, e ne sei soddisfatto, probabilmente non
       c'e ragione di cambiare.

     * I sistemi BSD, in particolare FreeBSD, possono avere
       prestazioni notevolmente migliori di Linux. Ma questo non
       avviene in tutti i campi. In molti casi, c'e una differenza
       minima nelle prestazioni. In alcuni casi, Linux puo
       comportarsi meglio di FreeBSD.

     * In generale, i sistemi BSD hanno una reputazione migliore di
       affidabilit`a, principalmente come risultato di una base di
       codice piu maturo.

     * I progetti BSD hanno una reputazione migliore per quanto
       concerne qualit`a e completezza della loro documentazione. I
       diversi progetti di documentazione mirano a fornire
       attivamente documentazione aggiornata, in molte lingue, e
       coprendo tutti gli aspetti del sistema.

     * La licenza BSD puo essere piu attraente della GPL.

     * BSD puo eseguire la maggior parte dei binari Linux, mentre
       Linux non puo eseguire i binari BSD. Molte implementazioni di
       BSD possono anche eseguire i binari di altri sistemi di tipo
       UNIX. Come risultato, BSD puo rappresentare un percorso di
       migrazione piu semplice da altri sistemi rispetto a Linux.

     --------------------------------------------------------------

  4.8 Chi fornisce supporto, servizi, e training su BSD?

   BSDi / FreeBSD Mall, Inc. forniscono contratti di supporto per
   FreeBSD da quasi un decennio.

   Inoltre, ognuno dei progetti ha una lista di consulenti a
   pagamento: FreeBSD, NetBSD, e OpenBSD.

     --------------------------------------------------------------

        Questo, ed altri documenti, possono essere scaricati da
                ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

  Per domande su FreeBSD, leggi la documentazione prima di contattare
                        <questions@FreeBSD.org>.
        Per domande su questa documentazione, invia una e-mail a
                           <doc@FreeBSD.org>.
