Mono (progetto)
Mono è un progetto open source coordinato da Novell (precedentemente da Ximian) per creare un insieme di strumenti compatibili con il Framework .NET, secondo gli standard ECMA (Ecma-334 e Ecma-335).
I più importanti di questi strumenti sono il compilatore C# e il Common Language Runtime.
Mono funziona sui sistemi operativi GNU/Linux, UNIX, Mac OS X, e Windows.
Mentre Microsoft ha reso disponibile una versione di .NET per FreeBSD chiamata la Shared source CLI, la licenza di Microsoft non è di software libero e può essere insufficiente per i bisogni degli utenti (in particolare, proibisce esplicitamente l'utilizzo commerciale). Per questo ed anche per limitare la diffusione di C# e le relative librerie Mono nell'ambiente Linux è stato creato il linguaggio Vala.
La macchina virtuale di Mono contiene un motore JIT per vari processori: x86, SPARC, PowerPC, ARM, s390 (in modalità a 32 bit) e x86-64 e SPARC a 64 bit. La VM può eseguire una compilazione just-in-time o può pre-compilare il codice in codice nativo. Per altre architetture hardware esiste solo un interprete.
Un progetto simile è DotGNU Portable.NET.
Indice |
[modifica] Storia
Nel 2000 la società Ximian, fondata e diretta da Miguel de Icaza, specializzata in software open source, aveva intenzione di costruire strumenti di sviluppo software che accrescessero la produttività di sviluppo del software multipiattaforma. Appena la Microsoft presentò il Framework .NET, la Ximian se ne interessò, e il 19 luglio 2001 annunciò il progetto open source Mono alla conferenza O'Reilly.
Quasi tre anni dopo, il 30 giugno 2004 fu rilasciata la versione 1.0.
Attualmente è disponibile la versione 2.0.
Al LinuxWorld 2006, a Boston, Mono ha vinto il premio come miglior piattaforma di sviluppo.
[modifica] Mono e i brevetti della Microsoft
Hanno avuto luogo molte discussioni riguardo al fatto che Microsoft potrebbe distruggere il progetto Mono tramite brevetti. Il team Mono ha riconosciuto questo rischio ma mette in atto strategie al fine di evitarlo, come si legge dalle loro FAQ:
- "Il Framework .NET si divide in due parti: le tecnologie coperte dall'ECMA/ISO e le altre tecnologie sviluppate sopra di esse come ADO.NET, ASP.NET e Windows.Forms. Mono implementa le parti ECMA/ISO, essendo questo un progetto che permette l'implementazione di blocchi a livelli più alti come ASP.NET, ADO.NET e Windows.Forms"
- Gli elementi controversi sono i sottoinsiemi ADO.NET, ASP.NET e Windows.Forms. Questi sono convenienti per quanti necessitano piena compatibilità con la piattaforma Windows, ma non sono richiesti per la piattaforma open source Mono, cosí come l'integrazione con l'attuale ottimo supporto per Linux. La strategia di Mono riguardo queste tecnologie è la seguente: (1) aggirare i brevetti usando tecniche di implementazione differente che mantengono la API, ma cambiano i meccanismi. Se ciò non è possibile, vorremmo (2) rimuovere le parti di codice coperte da brevetti, oltre che (3) trovare dei precedenti che possano rendere inutilizzabili i brevetti stessi"[1]
Microsoft ha comunque annunciato che non perseguirà legalmente le implementazioni open source del MS.NET Framework, tra le quali appunto c'è Mono[2].
[modifica] Progetti correlati
Numerosi progetti sono stati creati per permettere agli sviluppatori di utilizzare Mono nel proprio ambiente di sviluppo:
- Gtk# sono binding per utilizzare il framework Mono all'interno delle librerie GTK+.
- gecko# sono binding per inserire nelle applicazione il layout engine usato in Mozilla (Gecko).
- Tao, una collezione di binding per la grafica ed i giochi
[modifica] Software sviluppato con Mono
I seguenti programmi utilizzano le API Mono e C#:
- Banshee è un programma di gestione e riproduzione musica per GNOME
- Beagle è uno strumento per la ricerca desktop.
- Bless è un editor esadecimale.
- CDCollect è una applicazione per la catalogazione di CD.
- F-Spot è un programma di gestione fotografie sviluppato da Novell.
- Galaxium è un programma di instant messaging per MSN.
- GLyrics è un programma per la ricerca di testi musicali.
- Gnome Do è un lanciatore per Linux (simile a Quicksilver).
- iFolder 3 (della Novell) permette la condivisione di file attraverso molteplici computer e con altri utenti tramite peer-to-peer o attraverso server groupware di Novell.
- Imendio Blam! è un aggregatore di news e feed RSS buono tra l'altro per la lettura di feed planet come Planet Gnome.
- MonoDevelop è un IDE per la creazione di applicazioni Mono. Originariamente è stato un port di SharpDevelop per Gtk#, ma oggi viene sviluppato indipendentemente.
- Muine è un riproduttore musicale con una interfaccia utente progettata per essere intuitiva, sviluppato da Jorn Baayen il quale ha già collaborato allo sviluppo di Rhythmbox.
- Second Life, il mondo virtuale creato da Linden Lab, si dice stia per passare dall'utilizzo del Linden Scripting Language (LSL) a Mono, in un futuro prossimo.
- SkyNET è una mappa stellare.
- smuxi è un client IRC per utenti esperti scritto usando Gtk#/Gnome#, SmartIrc4net e Nini.
- Tomboy è una applicazione desktop per annotazioni che utilizza un sistema di link simile al Wiki.
- Virtuoso Universal Server, della OpenLink Software, è un ambiente multipiattaforma per Mono/.NET/C#, JSP, Perl, Python, PHP, e altri ambienti runtime.
[modifica] Note
- ^ FAQ http://www.mono-project.com/FAQ:_Licensing#Patents FAQ.
- ^ PI: Microsoft non farà guerra a Linux
[modifica] Voci correlate
[modifica] Collegamenti esterni
- La mailing list italiana
- (EN) Mono il sito ufficiale
- (EN) Mono Community
- (EN) Una breve storia di Mono
- (EN) I blog degli sviluppatori di Mono
- (EN) Mono Forum
- (EN) Ximian Forum
- (EN) Mono Live LiveCD
- (EN) Monoppix