XNU – Kernel Mac OS X

Questo articolo nasce da una mia recente rilettura della famosa diatriba Kernel Monolitico vs MicroKernel, tra il giovinastro Linus Torvalds ( Kernel Monolitico ) ed il professore rinomato  Andy Tanenbaum ( MicroKernel ). Vi rimando a questo link per avere una idea sul loro scambio di opinioni a riguardo

http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html

Da ormai tre anni ho scelto di usare Mac, in principo la scelta e’ stata dettata dalla necessita’ di liberare la mia scrivania da tutti quei fili penzolanti ( mia madre voleva uccidermi 😛 ) e dal fatto che iMac ha il suo fascino ( soprattutto da quando gira su IA64 ) e la sua eleganza. Con il passare del tempo sono rimasto ammaliato dalla bellezza e semplicita’ del Sistema Operativo di Cupertino, la potenza di un sistema BSD-based con un interfaccia accattivante e’ stata davvero una bella scoperta, fino ad arrivare a documentarmi sull’architettura alla base di tale sistema e cercare di capire qualcosa in piu’…

Architettura Kernel Mac OS X

Il cuore di Mac OS X e’ il kernel XNU, il quale puo’ essere visto come un insieme di piu’ componenti : il core basato su Mach 3, le features supplementari offerte da FreeBSD 5, la personalita’ di un Sistema Operativo basato su BSD ed un ambiente basato su un sistema object-oriented per quanto concerne i driver. In effetti il Kernel di Mac OS X e’ molto di piu’ che XNU, infatti esistono molti driver che non risiedono nel core di XNU ma derivano dai packages Darwin.

Leggi tutto “XNU — Kernel Mac OS X”

Guerra Tra Licenze Software: GPL vs BSD

Chiunque abbia smanettato o semplicemente usato qualche software Open-Source ( gratuito ), ha sicuramente letto da qualche parte questi due acronimi: GPL e BSD.

GPL ( General Public License ) e BSD ( Berkeley Software Distribution ) sono due tipi di licenze software, contratti tra il copyright ( chi ha scritto il codice) e l’utente finale che lo utilizza. Il loro compito e’ quello di specificare le condizione di utilizzo di un prodotto software.

Ad oggi esistono ben 73 licenze approvate, e come potete ben immagine molte di esse sono incompatibili tra loro 😛 per tale motivo districarsi e comprendere alcune di esse, nel nostro caso solo GPL e BSD, e’ di fondamentale importanza nello sviluppo di un Sistema Software che utilizza codice di terze parti.

GPL e’ una licenza copyleft, il che vuol dire che si offre la possibilita’: di eseguire,di avere i codidici sorgenti,di redistribuire e di modificare liberamente il codice con la sola restrizione/obbligo che il codice risultante eredita la stessa licenza dei codice sorgente originario, ovvero nel caso usassimo nel nostro programma un pezzo di codice ( Ex. importiamo staticamente una libreria ) con licenza GPL anche il nostro programma avra’ lo stesso tipo di licenza GPL del codice incorporato. Tale restrizione viene usata per assicurare la liberta’ del software. Nel caso in cui la libreria usata sia di tipo GPL e viene importata dinamicamente nel nostro progetto, in tal caso siamo liberi di scegliere quale licenza utilizzare.

BSD e’ una licenza permissive, a differenza della licenza GPL permette al codice redistribuito o modificato la possibilita’ di rendere il codice risultante con una licenza piu’ restrittiva dell’originale. Per esempio, il codice rilasciato con licenza BSD puo’ cambiare la licenza finale, per cui e’ possibile rendere commerciale il prodotto software.

Quando usiamo una licenza BSD, il nostro codice e’ free cosi’ come se fosse sotto licenza GPL. Tuttavia, una Software Farm puo’ prendere il nostro codice, incorporalo nel proprio prodotto proprietario, e ( in base alla diverse versioni della licenza BSD ) non riceveremo nessun compenso per il nostro lavoro. Se questo  e’ esattamente quello che volete, la licenza BSD fa a caso vostro 😀

Per cui state molto attenti quando rendete disponibile il vostro codice al pubblico.. e ricordatevi di questo piccolo post per scegliere quale licenza applicare 😀

Una piccola tabella riepilogativa che potra’ esservi molto utile nella comprensione immediata delle differenze fondamentali tra le due licenze piu’ diffuse.