Mono-Projekt

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von DotGNU)
Wechseln zu: Navigation, Suche
Mono-Projekt
Logo von Mono
Entwickler Xamarin (zuvor Novell)
Aktuelle Version 3.6.0[1]
(12. August 2014[1])
Betriebssystem Unix/BSD-Derivate, GNU/Linux, Windows, Mac OS X und Solaris 8
Kategorie Laufzeitumgebung
Lizenz MIT/X11; teilweise:GPLv2/LGPLv2
Deutschsprachig nein
www.mono-project.com

Mono (vom griechischen monos für „allein“ oder „einzig“ sowie spanisch für „Affe“) ist eine .NET-kompatible Entwicklungs- und Laufzeitumgebung für plattformunabhängige Software, basierend auf dem CLI-Standard sowie der Programmiersprache C# und ergänzt durch die Integrierte Entwicklungsumgebung MonoDevelop. Vorangetrieben wurde das Open-Source-Projekt primär durch Mitarbeiter des Softwareunternehmens Novell, später dann Xamarin.

Hintergründe und technische Details[Bearbeiten]

Mono selbst erhält seine Existenzberechtigung zum einen aus seiner Plattformunabhängigkeit, seiner relativ freien Verfügbarkeit (unter Open-Source-Lizenzierung) und dem Bestreben einer signifikanten Zahl Entwicklern, ihre Abhängigkeit vom Großkonzern Microsoft in Software-Angelegenheiten zu minimieren.

Microsoft dagegen bietet seine Laufzeitumgebung .NET ausschließlich für seine eigenen Windows-Betriebssysteme an. Von Microsoft gibt es weiterhin eine Variante von .NET namens Rotor, welche neben Windows auch für FreeBSD und Mac OS X verfügbar ist. Dennoch war das Unternehmen Ximian einst der Ansicht, dass es mit einer eigenen Entwicklung in diesem Bereich Erfolg haben könnte, insbesondere weil ihm die von Microsoft angebotenen Lizenzbedingungen für viele Bereiche zu restriktiv erschienen.

Mit Mono ist es prinzipiell möglich, Programme, welche für die Microsoft .NET-Umgebung erstellt wurden, auch ohne Neuübersetzung unter unixähnlichen Betriebssystemen auszuführen. Ebenso lassen sich damit auch auf anderen Betriebssystemen Programme entwickeln, die mit Microsoft .NET lauffähig sind.

Mono bietet ab der Version 2.10 die Kompatibilität mit den nicht-windowsspezifischen Bibliotheken von .NET 2.0. Anwendungen, die auf .NET 3.0 oder höher basieren, sind derzeit unter Mono unter Umständen nicht lauffähig, da bislang nur eine Teilmenge umgesetzt ist. Es fehlen Windows Presentation Foundation, Windows Workflow Foundation und teilweise Windows Communication Foundation.[2] Des Weiteren ist der Zugriff auf windowsspezifische Funktionalitäten mittels P-Invoke oder COM Interop, d. h. die Verwendung von Bibliotheken, die nicht in IL-Code, sondern in normalem, prozessorspezifischen Assemblercode vorliegen, nicht gestattet. Zwar kann auch Mono auf Bibliotheken zugreifen, die in C oder C++ geschrieben sind, allerdings sind die meisten dieser Bibliotheken plattformabhängig.

Aktuell können Anwendungen auf Basis des .NET 4.5 Profils von Mono ausgeführt werden. Einschränkungen gibt es jedoch in verschiedenen Teilbereichen des Frameworks [3]. Explizit ausgenommen wurde die Unterstützung der Windows Presentation Foundation, die auf absehbare Zeit nicht reimplementiert werden wird. XAML sollte im Rahmen von Moonlight unterstützt werden, dessen Entwicklung allerdings eingestellt wurde. Der Support für Mac OS X auf x86-64[4] verbleibt bis auf weiteres im Bereich „unstable“. Windows x64 wurde vergessen.

Andererseits bietet Mono gegenüber .NET auch Zusatzfunktionen, die sich im Namespace Mono.* befinden, beispielsweise Schnittstellen für betriebssystemnahe Funktionen unter Unix (Mono.Unix.Native) oder die Mono.Cecil.dll, mit der man Änderungen an bereits compilierten Code vornehmen kann.

Des Weiteren ist die Generierung von Native Code (aus der exe oder dll) mit Hilfe von mono --aot=full einfach und transparent möglich. Unter .NET dagegen werden Administrator-Rechte für den Aufruf von NGEN benötigt und das Ergebnis landet in einem Native Image Cache mit kryptischem Dateinamen.

Geschichte[Bearbeiten]

Das von Miguel de Icaza mitgegründete Unternehmen Ximian (am 4. August 2003 von Novell gekauft) setzte sich die Entwicklung einer Reihe von .NET-kompatiblen Entwicklungswerkzeugen zum Ziel, einschließlich eines C#-Compilers und einer Common Language Runtime für den Betrieb unter Windows, GNU/Linux, verschiedenen Unix-Derivaten sowie Mac OS X.

Miguel de Icaza interessierte sich für die .NET-Technologie, seit im Dezember 2000 die ersten .NET-Informationen verfügbar wurden. Im Februar 2001 begann er zu Übungszwecken einen C#-Compiler der Programmiersprache in C# zu schreiben. Im April 2001 konnte er auf einer GNOME-Konferenz eine erste Version präsentieren.

Bei Ximian gab es intern viele Diskussionen über die Entwicklung von Tools zur Produktivitätssteigerung, um mehr Anwendungen in kürzerer Zeit erstellen und die Entwicklungskosten reduzieren zu können. Nach einer Machbarkeitsstudie entstand das Mono-Team. Wegen der begrenzten Anzahl der Mitarbeiter war es Ximian allerdings nicht möglich, einen vollständigen .NET-Ersatz zu schreiben, also wurde das Mono-Open-Source-Projekt gegründet, welches auf der O'Reilly-Konferenz im Juli 2001 bekanntgegeben wurde.

Drei Jahre später, am 30. Juni 2004, wurde Mono 1.0 veröffentlicht.

Mit der am 6. Oktober 2008 veröffentlichten Version 2.0 wurden die wichtigsten Eigenschaften von .NET 2.0 hinzugefügt und es gibt mit dem Projekt Olive auch eine Initiative, die neueren Technologien von .NET 3.0 und .NET 3.5 zu implementieren. Zudem wurde der C#-Compiler um die Sprach-Eigenschaften von C# 3.0 erweitert (hierbei handelt es sich in erster Linie um die Unterstützung von LINQ), sowie ein neuer XAML-Parser entwickelt. Allerdings weisen die Entwickler ausdrücklich darauf hin, dass die Windows Presentation Foundation wohl vorerst wegen der enormen Komplexität nicht implementiert wird. Ebenfalls mit der Version 2.0 ist nun auch ein Visual-Basic-8.0-Compiler mit an Bord.[5]

Mit der am 9. Dezember 2009 veröffentlichten Version 2.4.3 wurde – neben einigen Fehlerkorrekturen – der freie C#-Compiler mit allen wesentlichen Funktionen von C# 4.0 ergänzt.[6]

Anfang 2011 stellte der neue Novell-Eigentümer Attachmate die Weiterentwicklung des Mono-Projektes ein und entließ mit 2. Mai 2011 30 Mono-Entwickler.[7] Nils Brauckmann (der neue Suse-Chef) nannte als Grund die geringe Nachfrage bei den Kunden.[8] Wenige Tage nach dem Stopp des Mono-Projekts bei Novell gründete Miguel de Icaza das Unternehmen Xamarin, das sich in Zukunft der Entwicklung von Mono widmen soll.[9] Die meisten zuvor bei Suse angestellten Mono-Entwickler wechselten zu Xamarin.

In weiterer Folge gewährte SUSE Xamarin eine unbefristete Lizenz zur Nutzung und kommerziellen Verwertung von Mono, MonoTouch für iOS und Android[10] sowie den Mono Tools for Visual Studio.[11]

DotGNU und Portable.NET[Bearbeiten]

Vergleichbar war das DotGNU-Projekt, das eine alternative Grundlage für die Erstellung von Webservices und von C#-Applikationen bilden wollte, die im Rahmen des .NET-Frameworks programmiert werden. Vorbild war dabei der Erfolg von GNU/Linux als Lizenzmodell für herstellerunabhängige Software.

Das Portable.NET-Projekt war ein Teilprojekt des DotGNU-Projekts zur Erstellung freier Software-Werkzeuge, um Programme für die Common Language Infrastructure (auch kurz CLI genannt) übersetzen und ausführen zu können. Die ursprüngliche Zielplattform war GNU/Linux, aber mittlerweile funktioniert Portable.NET auch unter Microsoft Windows, Mac OS X sowie diversen Unix-Varianten.

Der Fokus von Portable.NET lag auf Kompatibilität mit den Spezifikationen ECMA-334 und ECMA-335, die C# und die CLI beschreiben, sowie auf Kompatibilität mit der kommerziellen CLI-Implementierung .NET.

Die Arbeit am DotGNU-Projekt ist im August 2006 zum Erliegen gekommen. DotGNU wurde praktisch vom Mono-Projekt abgelöst.

Standardisierung und Patente[Bearbeiten]

Teile der Klassenbibliothek berühren möglicherweise Softwarepatente von Microsoft. Microsoft hat mit Novell[12][13] ein gegenseitiges Patentabkommen geschlossen, welches Novell und seine Kunden vor Rechtsansprüchen Microsofts schützt. Dieses beinhaltet auch einen Patentschutz für Mono.[14][15][16] Für (fast) alle anderen Nutzer besteht das Risiko jedoch weiterhin. Die Sicht der Entwickler auf das Problem brachte Torvalds auf den Punkt, als er sich durch Patentansprüche von SCO mit dem Thema konfrontiert sah: „Ich achte prinzipiell nicht auf Patente, denn das wäre Zeitverschwendung.“[17] Nicht ohne Grund sind Softwarepatente höchst umstritten und in der EU formal nicht gestattet.

Die grundlegenden Technologien sind teilweise durch Microsoft bei Ecma International und der ISO standardisiert worden. Microsoft garantiert eine Lizenzierung der ECMA-Teile auf RAND-Basis. Andere Teile, wie zum Beispiel Windows Forms, ADO.NET und ASP.NET sind hiervon jedoch ausgeschlossen.

Das Open Invention Network verteidigt Mono bei patentrechtlichen Auseinandersetzungen.

Aufgrund der Gefahr durch Patentklagen seitens Microsoft hat Richard Stallman, der ideologische Führer der Freie-Software-Bewegung, vor Mono gewarnt, nachdem einige Distributionen dazu übergegangen waren, Mono in die Standardinstallation aufzunehmen.[18] Microsoft hat mittlerweile .NET und C# unwiderruflich unter die Community Promise Vereinbarung gestellt und will auf Patentklagen verzichten.[19]

Siehe auch[Bearbeiten]

  • MonoDevelop, eine Entwicklungsumgebung auf Basis von Mono für Linux.
  • SharpDevelop, eine Open-Source-Entwicklungsumgebung für Windows, aus deren Quellcode MonoDevelop entstand.
  • C#, die primäre Mono-Sprache.
  • IKVM.NET

Literatur[Bearbeiten]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. a b Release Notes Mono 3.6
  2. Mono Compatibility (englisch) - Meldung des Mono-Projekts vom 20. März 2011
  3. [1]Mono Kompatibilitätsübersicht
  4. Mono 2.8 Second Public Preview (englisch) – Meldung bei der Mono-Entwickler-Liste, vom 20. September 2010
  5. .NET-Klon Mono in Version 2.0 erschienen – Artikel bei Heise online, vom 6. Oktober 2008
  6. Mono lernt C# 4.0 – Artikel bei Golem.de, vom 10. Dezember 2009
  7. Entlassungen bei Novell - Aus für Mono – Artikel beim Linux-Magazin, vom 4. Mai 2011
  8. Die neue Suse startet durch – Artikel bei Heise online, vom 19. Mai 2011
  9. Miguel de Icaza gründet Mono-Unternehmen – Artikel bei Golem.de, vom 17. Mai 2011
  10. Announcing Xamarin (english), Miguel de Icaza, zugegriffen: 17. Februar 2012
  11. Mono: Suse und Xamarin arbeiten zusammen – Artikel bei Heise online, vom 18. Juli 2011
  12. Microsoft kündigt Linux-Unterstützung an – Artikel bei Golem.de, vom 3. November 2006
  13. Microsoft und Novell: die Sache mit den Patenten – Artikel bei Heise online, vom 3. November 2006
  14. Joint letter to the Open Source Community (englisch) – Meldung von Novell und Microsoft
  15. Novell and Microsoft Collaborate (englisch) – FAQ zur Zusammenarbeit zwischen Microsoft und Novell
  16. Microsoft und Novell: Der Pakt im Detail – Artikel bei Golem.de, vom 3. November 2006
  17. SCO greift Linus Torvalds an – Artikel bei Heise online, vom 18. Juni 2003
  18. Richard Stallman hält Mono für gefährlich – Artikel bei Golem.de, vom 29. Juni 2009
  19. Microsoft: Keine Patentklagen wegen .Net und C# – Artikel bei Golem.de, vom 7. Juli 2009