En C# kompiler kaldet MCS (Mono C# compiler). MCS er
skrevet i C# og kører på Linux med Mono runtimen og på Windows med både .NET
runtimen og Mono runtimen.
Det er ikke Ximian, der som
sådan udvikler Mono, men det er dem, der har startet projektet, og ud over at
de har stået for nogle af de centrale dele af Mono, har de også sørget for at
samle trådene i projektet. Men samlet udgør de under 10% af de involverede
udviklere.
Der bliver udviklet både en JIT-baseret version beregnet
på afvikling på X86 platformen (til Linux og Windows), samt en fortolker der
skal kunne bruges på andre platforme.
Intentionen er, at Mono implementationen skal indeholde alt, hvad der ligger i Microsofts implementation. D.v.s. implementationer af teknologier så som ASP.NET, ADO.NET, WinForms etc. Og det er målet, at de samme programmer (inkl. System.Windows.Forms-baseret GUI) skal
kunne køre uændret både på Microsofts .NET implementation under Windows og på Mono implementationerne under Windows, Linux og de andre operativsystemer, som det er meningen med tiden skal have Mono understøttelse. Så hvis ellers intentionerne for projektet bliver
opfyldt (og det må tiden jo så komme til at vise, om de bliver) vil det være muligt v.h.a. Visual Studio .NET eksempelvis at udvikle en applikation i VB.NET, kompilere den til IL-kode og efterfølgende at afvikle den under Linux. En forudsætning for at denne perfekte kompatibilitet kan opnåes
er, at applikationerne ikke direkte benytter sig af faciliteter
i det underliggende operativsystem. D.v.s. at de ikke laver API-kald (det der i
.NET betegnes som P/Invoke). Selv om en applikation ikke i sig selv laver API-kald,
kan den stadig laves, så den ikke er porterbar, hvis den benytter .NET
komponenter, der kalder specifikke og unikke operativsystem faciliteter. Men det vil altså i
dets essens være en beslutning, som den enkelte udvikler træffer - ikke en som
skyldes .NET teknologiernes udformning. Så er kommende operativsystem portabilitet
noget, man prioriterer højt, bør man holde sig fra komponenter, der har bindinger
til underliggende operativsystem faciliteter (eller som baserer sig på andre
komponenter der har). Og det kan f.eks. også gælde for komponenter i Microsoft-namespacet. I praksis betyder det nok, at man enten skal have en garanti fra ens komponent-leverandør om, at komponenterne vil kunne benyttes under andre operativsystemer eller ultimativt, at man har direkte adgang til koden.
Af operativsystemer der vil blive understøttet nævnes:
Windows, Linux, HP-UX, Solaris, MacOS og "andre" (hvad det så måtte være). Inden
vi ser fuld understøttelse af alle disse operativsystemer kommer der dog nok til
at gå en rum tid.
Licens
De forskellige dele af Mono projektet er under
forskellige licensbetingelser, hvilket desværre godt kan være lidt forvirrende. C# kompileren er under GNU GPL licens.
Runtime libraries er under GNU Library GPL licens. Og klassebibliotekerne er
under MIT X11 licens.
Status
Status for Mono projektet er per 10. september 2002: