Mono projektet  

Mono-projektet annonceret:

Ximian laver en "free software" implementation af .NET til bl.a. Linux.

Den 9. juli 2001 annoncerede firmaet Ximian (www.ximian.com ), at de vil lave en open source implementation af .NET til Linux. Ximian har blandt andet lavet en meget rost version af GNOME Linux-brugergrænsefladen. .NET implementationen, der har fået navnet "Mono" (mono betyder abe på spansk), kan følges på www.go-mono.com.


Hvad dækker Mono egentlig over ?

Projektet vil fokusere mod at implementere følgende:

  • En Common Language Runtime (CLR) - d.v.s. en implementation af en virtuel maskine for Common Language Infrastructure (CLI) - inkl. faciliteter så som en just-in-time (JIT) kompiler, class loader, threading mekanisme og garbage collector.
  • En samling af sproguafhængige klassebiblioteker.
  • 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:

  • C# kompileren er i det store hele færdig - der mangler nogle enkelte features, men kun nogle få. Og der er kun 12 registrerede fejl.
  • Klassebibliotekerne er godt på vej, men der mangler stadig implementation af mange af klasserne.


    Links

  • Mono-projektet kan findes på www.go-mono.com.

  • I vores artikel Interview med Miguel de Icaza om .NET kan du læse mere om et interview, hvor Ximians leder af GNOME projektet har givet sit syn på .NET.

  • Læs mere om open source initiativer, der beskæftiger sig med .NET, i vores artikel Åben source .NET.

  • Der findes en udmærket FAQ, der besvarer nogle af de mange spørgsmål, der naturligt opstår i forbindelse med annonceringen af Mono. Bl.a. dementerer den interessant nok, at Mono bliver implementeret i COBOL. ;^)