Menu

Haiku e i cloni

 haikuos3

Haiku

A pochi giorni dall'annuncio che la PalmSource stava per comprare BeOS nasce il progetto OpenBeOS a cura del BeUnited Group. L'obiettivo principale è quello di consegnare il controllo del sistema alla comunità degli utenti BeOS evitando così che la PalmSource o un'altra compagnia possa deciderne il destino. OpenBeOS riceve da subito l'appoggio di numerosi sviluppatori, interessati a portare avanti questo ambizioso progetto basato sui componenti opensource DeskbarTracker,  messi a disposizione da Be Inc. prima della sua acquisizione. Il progetto viene sviluppato per aree ed il 19 Giugno 2004, durante il WalterCon, diventa ufficialmente Haiku.

Oltre a Haiku tra i progetti opensource che si richiamano a BeOS, figurano: "Blue Eyed OS" guidato dal Guillaume Maillard e "Cosmoe" accumunati dall’utilizzo del kernel Linux.

Il destino post PalmSource

Prima dell'acquisizione da parte di Palm, Be Inc. stava testando alcuni nuovi componenti per BeOS R6. Tra questi BONE(BeOS Networking Environment), pensato per funzionalità di networking all’altezza di Linux/Unix e Windows NT/2000, una GUI migliorata, ed il nuovo Engine Grafico basato su OpenGL ed i relativi driver video per l’accelerazione 3D.

La release R6 non viene mai rilasciata ma, sul Web, compare BeOS R5.1 (codename Dano), una versione sperimentale ed illegale contenente tutti gli ultimi sviluppi pre-Palm. Con molta probabilità tale versione venne “rilasciata” da un ex dipendente della stessa Be.

PalmSource non è comunque minimamente toccata da questa diffusione abusiva rimarcando il più assoluto disinteresse per la sorte di BeOS, anche se, stranamente, nega al nascente BeUnited Group le licenze del sorgente per la creazione di un filone OpenSource. Fatto ancora più assurdo se si pensa che yellowTAB, società tedesca guidata da Bernd Korz che in precedenza aveva un accordo con Be Inc. per la distribuzione di Be OS R5, decide di continuare il progetto BeOS senza alcun accordo di licenza. Il prodotto di yellowTab viene chiamando Zeta ed è basato sulla R5.1.

 zeta2

Zeta OS

Nel 2005 PalmSource viene acquisita da ACCESS che si dimostra più attenta a BeOS, almeno nella tutela del copyright. Infatti, in via confidenziale, invia varie comunicazioni alla yellowTAB affinché interrompa lo sviluppo e la distribuzione non autorizzata di Zeta OS.

Nel 2006 yellowTAB fallisce e Zeta passa alla tedesca Magnussoft che mette insieme un team per assicurarne l’evoluzione e, nello stesso tempo, inizia a lavorare al porting di alcuni giochi raggiungendo un accordo per la distribuzione di Wonderbrush. Tuttavia le vendite di Zeta non sono quelle attese e la Magnussoft ben presto non è più in grado di finanziare il team di sviluppo diretto dallo stesso Korz.

Nei primi mesi del 2007 David “Lefty” Schlesinger (Director of Open Source Technologies di ACCESS) in una intervista dichiara che Zeta non è mai stato autorizzato da PalmSource o dalla ACCESS, e che quindi può essere ritenuto una versione piratata di BeOS. Schlesinger ha invece parole di apprezzamento per Haiku (clone OpenSource) definendolo un “lavoro originale” e non sottoposto a vincoli di copyright derivanti dall’originale BeOS.

Zeta, comunque, scompare definitivamente dalla scena e Korz, nonostante prometta di rispondere ad ACCESS tramite i suoi avvocati, non si è più fatto vivo, dandole così indirettamente ragione. La comunità di utenti nata intorno a BeOS rivolge a questo punto tutte le attenzione verso Haiku.

BeOS diventa maturo

Durante il MacWorld dell'agosto 1996 viene mostrato, per la prima volta al pubblico, il sistema operativo BeOS (vers. DR 7/DR.8) funzionante su un Power Macintosh.

 bedesktopdr8

BeOS DR8

La stessa Apple resta impressionata dal sistema tant’è che, per superare la grave crisi in cui era precipitata, avvicina Be inc. con l’intenzione di acquisirla completamente e fare di BeOS il suo nuovo sistema operativo. Questa mossa permette a Gassée di far conoscere la sua società al grande pubblico e giocare il ruolo forte nelle trattative con la sua ex compagnia.

L’acquisizione però non va in porto poiché le due società non riescono a raggiungere velocemente un compromesso economico che soddisfi entrambe. A complicare il tutto, però, è la comparsa di un soggetto terzo noto ad entrambi: si tratta di Steve Jobs che riesce a convincere i vertici della Mela ad acquistare NeXT (fondata dopo essere stato licenziato dalla stessa Apple) per 400 milioni di dollari, quasi il doppio di quanto chiesto da Be Inc .

BeOS continua comunque il proprio percorso e viene rilasciato al pubblico a metà del 1997 come Preview Release (PR1), mentre nel mese di ottobre viene rilasciata la PR2. In realtà tali release hanno finito loro stesse per diventare la Versione 1 e la Versione 2 non essendoci stato un rilascio di release non PR (le preview release sono assimilabili alle Release Canditate e quindi alla PR2 doveva seguire la versione 1).

La Migrazione obbligata verso Intel

Una volta tornato alla Apple e ri-acquisito il ruolo di CEO, Jobs blinda le specifiche dei nuovi sistemi (PowerMac G3) impedendo, di fatto, alla Be di portare avanti lo sviluppo di BeOS per PowerMac. A questo punto la migrazione verso l’Intel x86 diventa obbligatoria nonostante fino ad allora fosse stata ritenuta impossibile o, comunque, molto improbabile. Nel marzo del 1998 arriva la Versione R3di BeOS sia per i "vecchi" sistemi Apple che per gli Intel, con supporto limitato ad un numero esiguo di schede audio e video. A novembre dello stesso anno, soprattutto per migliorare la compatibilità hardware e risolvere alcuni problemi di stabilità, arriva laversione R4a cui fa seguito, la R4.1 per i Pentium III e, a distanza di un anno, la R4.5.

Nel frattempo la società però è con l’acqua alla gola, avendo accumulato debiti per oltre 54 milioni di dollari, e cerca di risollevarsi diversificando la sua produzione. In particolare viene avviato lo sviluppo di una versione di BeOS adatta al mercato dei palmari: nasceBeIA (Be Internet Appliance). Il nuovo progetto assorbe tutte le risorse residue tanto da relegare in secondo piano il sistema desktop e spingere Be ad offrire gratuitamente, nel marzo del 2000, la versione R5 in una edizione personal, denominata BeOS 5 Personal Edition. La scelta è un tale successo (oltre un milione di download) che Be Inc. investe nel rilascio della versione Professional, a pagamento, e nello sviluppo di due minor upgrade: la 5.0.1 e la 5.03 del 27 Marzo 2000 che, di fatto, è l'ultima versione ufficiale rilasciata di BeOS.

 beos5

BeOS 5

Purtroppo per Be sia BeIA, in seguito ai mancati accordi con Compaq e Sony, che R5 Pro si rilevano un ulteriore fallimento commerciale. E’ allora che PalmSource (produttore di PalmOS) si fa avanti ed il 13 Novembre 2001 acquisisce completamente Be inc. e le relative tecnologie divenendo quindi proprietaria anche di BeOS.

beia_evilla_sony 

BeIA su Evilla Sony

Come nota va detto che l’arrivo su piattaforma Intel fu fortemente contrastata da Microsoft (leader assoluta) che utilizzò tutta la sua influenza per evitare la fornitura di BeOs da parte dei distributori OEM. Nel febbraio 2001 Be Inc. citò in giudizio la Microsoft ed il 5 settembre del 2003 ottenne dalla casa di Redmond un pagamento 23,25 milioni di dollari in cambio della caduta delle accuse di comportamento lesivo della concorrenza.

BeOS: uno sguardo all'interno

BeOS è un sistema Unix like che affonda le radici nel sistema operativo (sconosciuto ai più): Xinu ("Xinu Is Not Unix", acronimo ricorsivo).

Xinu-logo

Xinu Logo

Xinu è un sistema operativo Unix-like, sviluppato da Douglas Corner per motivi didattici presso l’università di Pudue (Indiana, USA) negli anni 80. Il nome oltre ad essere ricorsivo è esattamente Unix letto al contrario. Il sistema fu portato su molte piattaforme, tra cui:  DEC LSI-11 e VAX,  Sun-2 and Sun-3 workstations, Intel x86, PowerPC G3 e MIPS, oltre ad essere usato per alcuni modelli di stampanti Lexmark.

La scelta di Xinu permette a BeInc di evitare, fin dalle fasi iniziali, tutti quei problemi legati alla necessità di mantenere completa compatibilità con librerie e applicazioni preesistenti, causa principale delle difficoltà che si possono riscontrare in tutti i sistemi operativi esistenti, che ha permesso, inoltre, di cercare liberamente nuove soluzioni e di implementare nuove funzionalità senza vincolo alcuno.

BeOs è strutturato su 3 livelli: il Kernel, i server e i kit, con le applicazioni che operano allo stesso livello dei kit.

Il kernel è effettivamente classificabile come un macrokernel (come la maggior parte dei kernel di derivazione Unix(tm) e non un microkernel (come ad esempio il kernel di QNX), altro errore abbastanza diffuso, dato che gestisce molteplici funzionalità al di là di quelli che sono i compiti di un microkernel tradizionale.

os_structure_mini

Tipologie di Kernel (click per ingrandire)

Il kernel è scritto quasi completamente in C ed offre un'API sempre basata sul C per gestirne le funzionalità, classificabili in 2 categorie: funzioni per manipolare gli oggetti fondamentali gestiti dal kernel, ovvero i team (processi), i thread, i semafori, le porte, le aree (la memoria), i file e funzioni per accedere nella maniera piu' astratta possibile all'hardware, funzioni comunque utilizzabili solo dai driver caricati dinamicamente dal kernel, proteggendo quindi il sistema da accessi più o meno accidentali a componenti critici del sistema.

Il kernel poi presenta una ulteriore peculiarità rispetto all'architettura tipica di unix, dato che è esso stesso multithreaded, caratteristica fondamentale per garantire al BeOS le ottime prestazioni realtime, come vedremo in seguito.

La compatibilità con lo standard Posix è garantita dalla presenza della libreria standard C, utilizzando l'implementazione GNU, che offre anche un buon supporto per le molteplici funzioni presenti nelle varie varianti di unix. La presenza di questa libreria è stata a sua volta fonte di confusione negli anni passati, in quanto molte persone associavano la sua esistenza alla presenza di un vero e proprio kernel Unix (idea rinforzata dal fatto che il terminale usato da BeOS si basa sul famoso Bash).

A livello del kernel, poi, vi sarà prossimamente un cambiamento importante in quanto il sistema di networking, attualmente in fase di riscrittura, verrà integrato direttamente nel kernel e non sarà più gestito da un server separato. Il motivo principale di questa decisione è legato alle prestazioni superiori che si possono ottenere con questo approccio che permette di trasferire i dati in tempi nettamente inferiori.

I server sono normali processi funzionanti a livello utente, che gestiscono tutte quelle funzionalità proprie del sistema operativo che non sono però controllate direttamente dal kernel. Il vantaggio di questa soluzione è una maggiore flessibilità e modularità del sistema (Be Inc. ha già saputo sfruttare questo vantaggio durante la fase di sviluppo di BeIA, la versione di BeOS per le Internet Appliances, potendo così creare agevolmente un sistema compatto semplicemente selezionando i componenti utili) e una maggiore solidità (se il server si blocca in generale è possibile riavviarlo senza danni al sistema, ad eccezione ovviamente delle funzioni che il server stesso stava svolgendo).

I kit rappresentano, infine, il punto di accesso al sistema da parte delle applicazioni, che non dialogano direttamente con i server, ma utilizzano le interfacce ad oggetti fornite dai kit per interagire con essi. I vantaggi di questo approccio sono ancora una maggiore modularità e flessibilità (non essendovi un legame diretto tra l'interfaccia e l'implementazione delle funzioni ad essa connesse, è possibile modificare in maniera anche profonda il funzionamento interno dei componenti del sistema senza intaccare la compatibilità con il software esistente; inoltre l'indipendenza dell'interfaccia dal resto del sistema ha permesso lo sviluppo di una API molto lineare, di facile comprensione ed utilizzo, dato che non è dovuta scendere a compromessi con problemi di compatibilità con il passato o complessità legate a dettagli di implementazione delle funzionalità di basso livello).

Le applicazioni infine si trovano allo stesso livello dei kit, in quanto durante il caricamento le applicazioni vengono linkate con le librerie di sistema che contengono il codice dei vari kit.

Il percorso di esecuzione delle funzioni del kernel e dei kit è differente: nel caso di funzioni gestite direttamente dal kernel, viene utilizzato il tradizionale metodo delle trap per passare da modo utente a modo supervisore e iniziare l'esecuzione della relativa funzione. Nel caso dei kit la maggior parte delle funzioni crea un messaggio che viene inviato ad un server per l'elaborazione, il quale, a seconda dei casi, restituisce una risposta che può essere sincrona o asincrona rispetto al messaggio inviato. L'operazione risulta quindi notevolmente più complessa, in quanto porta alla chiamata di più funzioni del kernel per scrivere e leggere il messaggio inviato ad una porta oltre ad un cambio di contesto (semplificando, il sistema deve interrompere l' esecuzione del thread che ha inviato il messaggio e attivare il thread che lo ha ricevuto); nonostante questo il sistema è in grado di gestire un elevato numero di messaggi al secondo garantendo ottimi tempi di risposta anche sotto notevoli carichi di lavoro, elemento chiave per ottenenere buone prestazioni a fianco della notevole flessibilità che questo approccio offre.

I due elementi chiave nell'architettura del sistema sono quindi l'uso esteso dei thread e dei messaggi: distribuendo i compiti su più thread è possibile migliorare notevomente i tempi di risposta del sistema e sfruttare più a fondo i sistemi multiprocessore, usando un efficiente sistema di scambio dei messaggi è possibile coordinare l'azione dei singoli thread scrivendo poco codice (a vantaggio delle prestazioni e della affidabilità dei programmi) e consumando di conseguenza una quantità di risorse molto limitata. Inoltre la possibilità di interrompere un thread quando sta eseguendo codice all'interno del kernel rende in pratica impossibili quegli irritanti blocchi temporanei (specie durante la riproduzione di brani audio o video) che si possono riscontrare su altri sistemi.

Altri articoli...

  1. BeBox
  2. BeInc e BeOS