OpenBSD è un sistema operativo libero, open source, multipiattaforma, di tipo unix-like, derivato dalla Berkeley Software Distribution (4.4BSD). Nasce nel 1995 circa grazie a Theo de Raadt, che gestisce il progetto da Calgary in Canada. Il logo nonché la mascotte del progetto è Puffy, un Tetraodontidae, comunemente noto come pesce palla. Il team di sviluppo concentra i propri sforzi sulla portabilità, sulla standardizzazione e la correttezza del codice sorgente, sulla sicurezza proattiva e su un sistema di crittografia integrato: a tal proposito basti pensare che OpenSSH è stato creato ad-hoc proprio per OpenBSD e dal medesimo team di sviluppo. I punti di forza pertanto possono essere individuati nell'estrema cura sia della correttezza sia della sicurezza del codice sorgente, nonché nella qualità della documentazione a supporto del progetto stesso; la gestione iniziale del sistema, così come l'installazione, sono affidate alla shell di default ksh (Korn shell).

Storia L'idea della realizzazione di un nuovo sistema operativo prende corpo nel 1995 grazie all'informatico Canadese di origine sudafricana, Theo de Raadt, residente a Calgary nello stato di Alberta, a quel tempo già cofondatore nonché senior developer di NetBSD, il quale si allontanò dal gruppo di lavoro nel 1994, dopo non precisati dissidi interni alla squadra.

La fase iniziale del progetto attirò numerosi sviluppatori da tutto il mondo, interessati alla realizzazione di un sistema operativo, BSD derivato, che ponesse al centro del sistema stesso la sicurezza. I primi accorgimenti furono di lavorare in un repository CVS (Concurrent Versions System) pubblico in sola lettura in modo tale che il codice fosse sempre a disposizione di chiunque volesse visionarlo. Il primo commit, ovvero lo stato iniziale di un progetto allorquando i file che contraddistinguono il software sono inseriti nel ramo principale, è stato di fatto l'immissione in OpenBSD dell'albero dei sorgenti di NetBSD, ed è datato sabato alle 16:36 UTC-7. Il , con la pubblicazione della versione 5.8, OpenBSD ha festeggiato venti anni di vita.

Descrizione Il sistema operativo OpenBSD è largamente utilizzato sia dagli ISP (Internet Service Provider) sia nei sistemi embedded, è stato il primo Sistema Operativo a implementare il protocollo IPsec (IP security), largamente utilizzato nelle VPN (Virtual Private Network). Resta una delle scelte principali nella realizzazione di sistemi ad elevata sicurezza, come firewall, grazie al suo PF (Packet Filter), nonché nei sistemi di controllo delle intrusioni IDS (Intrusion Detection System), così come nelle soluzioni server o come router.

OpenBSD è usato, così come tutti i sistemi operativi unix-like, anche come workstation per l'uso quotidiano, mediante l'installazione del server grafico X.org infatti si può avere un ambiente grafico basato su finestre, sul quale l'utente può scegliere se caricare o un window manager (fluxbox, Awesome, blackbox, Openbox, Enlightenment, etc.) oppure un desktop environment (KDE, GNOME, Xfce). Di default col server grafico X.org il sistema prevede cwm, un window manager leggero ma molto efficiente, scritto dal team di sviluppo di OpenBSD e comparso la prima volta nella versione 4.2.

Da FreeBSD, un altro sistema operativo storico della famiglia BSD, ha ereditato il concetto di port, che nel corso degli anni è stato adattato al progetto e del quale è divenuto un cardine imprescindibile. OpenBSD mette a disposizione degli utenti migliaia di applicazioni binarie precompilate, ovvero ciascun software viene in primis portato sulle diverse architetture, dopodiché si procede alla realizzazione del pacchetto binario per ciascuna di esse. La pacchettizzazione del software è utile agli sviluppatori per tener traccia delle applicazioni che necessitano di aggiornamento, modifica o rimozione. Per ciò che concerne il compilatore predefinito, OpenBSD ha utilizzato sin dall'inizio gcc (GNU Compiler Collection), ossia il compilatore creato da Richard Stallman in seno al Progetto GNU, tuttavia il sia LLVM (Low Level Virtual Machine) sia clang sono stati caricati nel cvs di OpenBSD, precisamente in current.

Architetture supportate

L'installazione del sistema di base risulta essere estremamente solida e al contempo snella, sicché è possibile installarlo anche su piattaforme hardware non particolarmente performanti. Dalla versione 6.0, eccezionalmente pubblicata il , le architetture supportate con continuità risultano essere le seguenti:

alpha - Sistemi basati su alpha; amd64 - Sistemi basati su AMD a 64 bit; armv7 - Device basati su ARMv7;come ad esempio le schede BeagleBone, BeagleBoard, PandaBoard ES, Cubox-i, SABRE Lite, Nitrogen6x e Wandboard arm64 - Vari sistemi a 64-bit basati su ARM;in particolare le piattaforme di riferimento sono Pine64, Raspberry Pi 3 e Opteron A1100 hppa - Sistemi basati su PA-RISC (Hewlett-Packard Precision Architecture); i386 - Sistemi basati su Intel i386 e compatibili; landisk - Sistemi basati su SH4 IO-DATA Landisk; loongson - Sistemi basati su Loongson 2E, 2F; luna88k - Sistemi basati su Omron LUNA-88K, LUNA-88K2; macppc - Sistemi basati su Apple New World PowerPC; octeon - Sistemi basati su Cavium Octeon, MIPS64; sgi - Sistemi basati su SGI MIPS; sparc64 - Sistemi basati su Sun UltraSPARC a 64 bit;

Invece le architetture supportate in passato e che per diverse ragioni non seguono pubblicazioni stabili sono:

amiga - Sistemi basati su Amiga e DraCo con supporto MMU; arc - Sistemi ARC compatibili con MIPS R4k e R5k5; armish - Alcuni sistemi basati su ARM; aviion - Sistemi basati su Motorola 881x0 AViiON. prodotti da Data General; cats - Sistemi basati su StrongARM 110; hp300 - SIstemi Hewlett-Packard serie HP 9000, e workstation 300 e 400; hppa64 - Sistemi Hewlett-Packard Precision Architecture (PA-RISC) a 64 bit; mac68k - Sistemi basati su Motorola 680x0 e Apple Macintosh con supporto MMU; mvme68k - Sistemi basati su Motorola 680x0 con supporto VME; mvme88k - Sistemi basati su Motorola 881x0 e supporto VME; palm - PDA basati su Palm/PXA; pegasos - Macchine Pegasos di Genesi Sarl. PowerPC-based, chip VIA sulla scheda madre; pmax - Sistemi Digital basati su MIPS; socppc - Sistemi Freescale PowerPC SoC; solbourne - Sistemi Solbourne IDT Sparc-like S3000, S4000 e S4000DX; sparc - Sistemi classe Sun sun4, sun4c, sun4e e sun4m basati su SPARC; sun3 - Sistemi di classe Sun sun3; vax - Sistemi Digital VAX-based; zaurus - PDA Sharp Zaurus C3x00;

Versioni

Il sistema operativo OpenBSD comprende tre versioniIn seno al progetto OpenBSD le versioni sono definite "flavors" -release, è la versione del sistema operativo in uscita ogni sei mesi. Corrisponde al set di CD ufficiali, se fossero ancora commercializzati; -stable, è la versione release più le patch di sicurezza o di correzione bug catalogate nella pagina web denominata errataIn realtà il nome della pagina è composto dalla parola errata più il numero di versione; ad esempio la release 6.0 diventa errata60, la 6.1 diventa errata61, e così via. del sito web di OpenBSD. Le patch non sono mai particolarmente invasive e solitamente riguardano tutte le architetture; -current, è la versione in continuo sviluppo, utilizzata per lo più dagli OpenBSD developers. Ogni sei mesi la current sarà taggata come la prossima versione. Le modifiche possono essere sostanziali.

Il termine stable è riferito alla stabilità delle API (Application Programming Interface), ovvero le funzioni che consentono la comunicazione tra le applicazioni e il sistema operativo non subiscono modifiche, sicché il sistema per ciò che concerne le chiamate di sistema risulterà e resterà stabile in tal senso fino alla versione successiva. Discorso diverso invece per current, in tal caso infatti le API possono essere aggiornate, rimosse o realizzate di nuove, essa è infatti l'ultima versione disponibile, laddove ciascun sviluppatore contribuisce al miglioramento del sistema operativo. La release infine rappresenta l'immagine della current in un preciso momento. Tra una versione e l'altra gli sviluppatori di OpenBSD pubblicano, per ogni architettura supportata, anche le cosiddette snapshots, che sono una sorta di versione ad interim, caratterizzate dall'essere un'immagine del branch current in un preciso istante. Esse si rivelano particolarmente utili per testare nuove funzionalità o per la correzione di eventuali bug. Possono essere scaricate dagli stessi mirror predisposti al download delle versioni, alla voce snapshots.

Il processo di sviluppo

Il processo di sviluppo di OpenBSD vanta una certa libertà e una pressoché totale indipendenza nel design progettuale e delle relative tempistiche, per cui la crescita del sistema risulta essere del tutto autonoma rispetto agli abituali processi di sviluppo software. Tuttavia, nonostante autonomia e libertà, nello sviluppo del sistema operativo spicca la puntualità della pubblicazione di ogni nuova versione (semestrale), grazie a una metodologia produttiva collaudata da oltre vent'anni.

Vi è un periodo preparatorio prima che l'immagine di una current possa diventare la nuova pubblicazione ufficiale, tale periodo è definito soft-lock e si protrae nell'arco di circa tre settimane, durante il quale gli sviluppatori non potranno più modificare le API del sistema operativo, purtuttavia lo sviluppo continua, dopodiché si passa alla fase dei build dei packages per ogni tipo di architettura e di seguito viene annunciato il vero e proprio lock. Durante il periodo di lock, che può durare una o due settimane al massimo, si eseguono soltanto operazioni relative al testing e al bugfix del codice, pertanto non è consentito alcun commit. Allorquando anche questa fase sarà portata a termine, sarà creato un nuovo branch nel cvs che identificherà la nuova pubblicazionr stable del sistema operativo, di conseguenza l'albero dei sorgenti tornerà ad essere unlock, ovvero pronto per nuovi aggiornamenti e modifiche. È proprio in questo periodo peraltro che avvengono le modifiche più consistenti al sistema, che corrisponde alla fase immediatamente successiva all'unlock e in corrispondenza degli hackathon.

Lo sviluppo del sistema operativo non è pianificato mediante una timeline rigorosa, avviene piuttosto a seconda delle esigenze degli sviluppatori che, essendo tutti volontari, offrono il proprio contributo liberamente e senza vincoli, dedicando ciascuno di essi il proprio tempo libero agli aspetti tecnici che maggiormente gli aggradano o rispetto ai quali hanno maggior esperienza. Ogni developer non ha alcuna limitazione rispetto al numero di commit da inoltrare al cvs dell'albero dei sorgenti, tuttavia ciascuna modifica, prima del commit, deve essere sottoposta agli altri sviluppatori per essere valutata e quindi approvata. Tale modo di procedere garantisce che anche il cambiamento più banale sia stato controllato e testato da diversi sviluppatori.

Sicurezza Uno standard di sicurezza così elevato è stato raggiunto mediante un processo capillare di Code Audit, il team OpenBSD infatti è fortemente focalizzato verso un modello di sicurezza robusto, unito al tipico modello di sviluppo aperto. Nel mondo dei sistemi operativi, quelli Unix in particolare, OpenBSD è stato il primo a far proprio il concetto di full disclosure, cioè l’esposizione totale, mediante forum, mailing-list, siti e quant'altro, dei problemi relativi a difetti o bug del software. In seno ai core developers, infatti, vi è un team di audit composto da alcuni sviluppatori che si occupano, quotidianamente, di analizzare riga per riga il codice sorgente del sistema operativo, cercando bug e vulnerabilità. Grazie a questo processo è stato possibile scoprire nuove categorie di problemi legati alla sicurezza, facendo in tal modo da apripista verso un nuovo modo di concepire lo sviluppo dei sistemi operativi stessi. I risultati sono talmente evidenti che OpenBSD si è guadagnato sul campo l’appellativo di "secure by default".