4. Paragone tra BSD e Linux

Dunque qual'è l'effettiva differenza tra, diciamo, Debian Linux e FreeBSD? Per l'utente medio, la differenza è 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à possiede BSD. Esso è creato e distribuito da una comunità 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 è permesso di effettuare il commit (aggiungere codice) direttamente all'albero dei sorgenti. Affinché 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à nell'area nella quale è attivo.

    È a discrezione del committer la volontà di confrontarsi con qualcuno prima di effettuare cambiamenti. In generale, un committer con esperienza può effettuare cambiamenti che sono ovviamente corretti senza interrogare nessuno. Ad esempio, un committer del progetto di documentazione può 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, può 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 è 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 è necessario essere uno sviluppatore per far parte del core team, anche se è normale che sia così. Le regole per il core team variano da un progetto ad un altro, ma in generale chi ne fa parte ha più autorità 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 è sopravvalutata, poiché il Capo Architetto può richiedere che il codice sia rimosso, ed anche nel progetto Linux viene permesso a molte persone di effettuare cambiamenti.

  2. D'altra parte, c'è un deposito centrale, un punto singolo dove è 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 è utile solo marginalmente: né BSD né 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 è chiaro, ed è 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 più 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 è 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 è intesa per gli utenti finali ed è 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 è seguito da un ulteriore numero che indica la versione esatta. Inoltre, ogni venditore aggiunge i suoi programmi utente o le sue utilità, dunque anche il nome della distribuzione è 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.

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

  • FreeBSD punta alle alte prestazioni e alla facilità d'uso per l'utente finale, ed è 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®, i sistemi basati su processori Alpha della Compaq e i sistemi basati sulle specifiche NEC PC-98. Il progetto FreeBSD ha nettamente più utenti degli altri.

  • NetBSD punta alla massima portabilità: «of course it runs NetBSD», ovviamente ci gira NetBSD. Funziona su macchine che vanno dai palmtop ai grossi server, ed è anche stato usato dalla NASA in alcune missioni spaziali. È 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à sotto qualsiasi sistema dal singolo sistema mono-processore al sistema massicciamente clasterizzato. DragonFlyBSD ha diversi obbiettivi a lungo termine, anche se è 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® X della Apple:

  • BSD/OS fu il pù 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 è concentrato sul sistema operativo embedded VxWorks.

  • Mac OS® X è l'ultima versione del sistema operativo per la linea Macintosh® della Apple Computer Inc.. L'anima BSD UNIX® di questo sistema operativo, Darwin, è 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 è disponibile con licenza GNU General Public License (GPL), che è 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 è meno restrittiva: le distribuzioni dei soli binari sono permesse. Ciò è particolarmente attraente per le applicazioni embedded.

4.6. Cos'altro dovrei sapere?

Poiché sono disponibili meno applicazioni per BSD che per Linux, gli sviluppatori BSD hanno creato un pacchetto di compatibilità 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à, come la libreria C. Non c'è una differenza notevole nella velocità 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ì che gli aggiornamenti siano molto più semplici da gestire rispetto alla maggior parte dei casi in Linux. BSD gestisce gli aggiornamenti della versione di libreria fornendo moduli di compatibilità per le versioni precedenti, dunque è 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 è una domanda molto difficile a cui rispondere. Qui ci sono alcune linee guida:

  • «Se non è rotto, non aggiustarlo»: se usi già un sistema operativo open source, e ne sei soddisfatto, probabilmente non c'è 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'è una differenza minima nelle prestazioni. In alcuni casi, Linux può comportarsi meglio di FreeBSD.

  • In generale, i sistemi BSD hanno una reputazione migliore di affidabilità, principalmente come risultato di una base di codice più maturo.

  • I progetti BSD hanno una reputazione migliore per quanto concerne qualità 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 può essere più attraente della GPL.

  • BSD può eseguire la maggior parte dei binari Linux, mentre Linux non può eseguire i binari BSD. Molte implementazioni di BSD possono anche eseguire i binari di altri sistemi di tipo UNIX®. Come risultato, BSD può rappresentare un percorso di migrazione più 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>.