Open Source im professionellen Einsatz
Linux-Magazin 11/2011
© Bidouze Stéphane, 123RF

© Bidouze Stéphane, 123RF

Von Dotnet über Novell-Suse zu Xamarin und mobilen Devices: Mono

Affentheater

Vom ehemaligen Besitzer allein gelassen, vom eigenen Vater adoptiert und mit dem Symbol eines Affen versehen: Mono durchlebt stürmische Zeiten. Wozu das Dotnet für Linux in der Lage ist, beweist eindrucksvoll ein deutscher Datenbankhersteller. In Zukunft wird Mono wohl verstärkt in Jackentaschen verschwinden.

2035

Im Mai 2011 schockte eine Meldung die Entwicklergemeinde: Attachmate kaufte nicht nur Novell, sondern stellte auch die Entwicklung von Mono ein. Das komplette Programmiererteam, einschließlich des Mono-Vaters und Gnome-Gründers Miguel de Icaza, musste gehen. Angeblich war die Nachfrage bei den Kunden zu gering, das Mono-Projekt somit letztendlich nicht profitabel (siehe Kasten "Was ist Mono?", [1]).

Was ist Mono?

Mono ist eine freie Implementierung des C#-Compilers und der zugehörigen Laufzeitumgebung. Das System lässt sich grob mit Java vergleichen: Der Compiler übersetzt den Quellcode in einen Bytecode, den wiederum die Laufzeitumgebung ausführt. Damit Letzteres möglichst schnell geschieht, nutzt diese so genannte Common Language Runtime (CLR) einen Just-in-Time-Compiler.

Bibliotheken fürs GUI

Ein paar Klassenbibliotheken erleichtern die Programmierung von grafischen Benutzeroberflächen, die Netzwerk-Kommunikation und Datenbankabfragen. Alle Bestandteile sind weitgehend kompatibel zum ursprünglich von Microsoft entwickelten Dotnet-Framework. Im Idealfall lassen sich unter Mono geschriebene Programme ohne eine erneute Übersetzung unter Dotnet ausführen und umgekehrt. Mono läuft derzeit unter Linux, Mac OS X, Solaris, Windows, mehreren BSD-Varianten und sogar auf Videospiel-Konsolen wie Nintendos Wii oder der Playstation 3. Spezielle Versionen gibt es zudem für Android (Mono for Android) und Apples I-OS-Geräte (Mono Touch).

Die Komponenten des Mono-Pakets stehen meist unter der LGPLv2, einzelne Teile aber auch unter anderen Open-Source-Lizenzen, etwa der MIT-Lizenz. Alternativ bietet Xamarin auf Nachfrage eine kommerzielle Variante an. Eine Ausnahme bilden Mono Touch und Mono for Android, sie sind Closed Source und verlangen je nach Ausführung einen mehr oder weniger tiefen Griff in die Firmenkasse.

Zu Mono gehört auch Moonlight, eine freie Implementierung von Silverlight. Salopp formuliert verbirgt sich dahinter Microsofts Gegenstück zu Adobes Flash. In Arbeit ist derzeit Moonlight 3, das mit Silverlight 3 gleichziehen soll. Microsoft ist hier allerdings schon bei Version 5 angelangt.

Nicht das Ende

Kurze Zeit sah es sogar danach aus, als wäre dies das Ende der ebenso geliebten wie gehassten Entwicklungsplattform. Der folgende Artikel unternimmt eine Bestandsaufnahme und sortiert die Fakten. Das Linux-Magazin hat dafür mit Mono-Entwicklern und Protagonisten wie Miguel de Icaza (siehe Interview im Kasten "Es bricht mir das Herz") gesprochen. Zwei weitere Interviews – mit F-Spot-Programmierer Timothy Howard und Daniel Kirstenpfad vom Datenbank-Entwickler Sones – stehen im Online-Plus-Bereich des Linux-Magazins in voller Länge zur Verfügung.

"Es bricht mir das Herz"

Miguel de Icaza hat das Gnome-Projekt gegründet und führt heute die Firma Xamarin und das Mono-Projekt an.

Im Interview am Rande von Microsofts Build-Konferenz 2011 erzählt er, warum er sein iPad liebt und was Xamarin und das Mono-Projekt bewegt.

Linux-Magazin: Warum haben Sie mit Xamarin ein Unternehmen gegründet und keine nicht-kommerzielle Mono-Stiftung?

Icaza: Ich selbst habe nur leider nicht die Zeit für beides. Und ein Not-for-Profit-Unternehmen kann schwerlich die Gehälter für unsere 35 hochqualifizierten Entwickler aufbringen. Aber ich helfe gerne in einer Foundation mit, ich wäre sicher auch ein gutes Mitglied im Board.

Linux-Magazin: Warum hat Xamarin gegenüber Kunden schon öfter Nein sagen müssen? Weil die Manpower nicht reichte?

Icaza: Wir wollen in erster Linie Produkte entwickeln und verkaufen. Bei Novell war das genauso. Bei der Gründung von Xamarin erkannten wir aber den Bedarf. Trotzdem steht der Support nicht im Mittelpunkt unseres Interesses. Ein Start-up ohne viel Kapital kann sich das aber nicht immer aussuchen, und deshalb entstand wohl oft der falsche Eindruck. Aber wir wollen definitiv ein Produkt entwickeln und vermarkten, nicht Support und Consulting.

Klar verraten wir hier den Open-Source-Ansatz, das ist traurig. Aber das Schöne an Mono Touch und Droid bleibt: Es bezahlt unsere Rechnungen.

"Himmlische Verknüpfung": Mono und iPad

Linux-Magazin: Warum setzt Xamarin auf mobile Plattformen? Ist Dotnet nicht eng mit dem Desktop verbandelt?

Icaza: Nein. Dotnet ist ein Runtime-Environment mit einer großen Anzahl an Bibliotheken. Manche davon sind für Desktops, manche für Server, andere für exotische Sachen, zum Beispiel für Xbox-Spiele. Auf jeden Fall ist es universell für Microsoft. Wir glauben an Dotnet, wir lieben es sogar, aber wir lieben auch unsere Plattform, den Linux-Server, iPhones, iPads und Android. Und Dotnet auf dem iPad, das halten wir eben für eine wahrhaft himmlische Verknüpfung, ebenso Dotnet auf Linux. Das schließt ja Perl oder Python nicht aus, im Gegenteil, da ist Platz für alle Sprachen. Allerdings muss man konstatieren, dass Low-Level-Sprachen eben fehleranfälliger sind als zum Beispiel Dotnet.

Der mobile Markt ist natürlich auch sehr interessant, weil Dotnet eine gute Performance bei hohem Programmierkomfort bieten kann. Deshalb konzentrieren wir bei Xamarin uns auf Dotnet für Nicht-Microsoft-Plattformen. Mit Mono Touch und Mono Droid lässt sich gutes Geld verdienen. Das ist zwar schade, weil der Open-Source-Ansatz verloren geht, aber es hilft, die Rechnungen zu bezahlen. Wir sind knapp 40 Leute und wir konzentrieren uns auf Mobiles. Aber wir arbeiten auch an allgemeinen Sachen, sowohl Server als auch Linux.

Mono immer mehr im Backend

Linux-Magazin: Wenn man sich die Statistiken von Sones anschaut (Abbildung 2), dann scheint Mono ja auch im Backend sehr erfolgreich zu sein. Die Graph DB läuft mit dem neuen Garbage Collector auf Mono schneller als auf Dotnet, wo sie ursprünglich entwickelt wurde.

Icaza: Ehrlich? Das wusste ich gar nicht, das ist ja ein sehr schöner Erfolg. Tja, Mono haben wir ursprünglich für den Desktop entwickelt, für den Linux-Desktop, um genau zu sein. Leider ist aber die Bedeutung des Linux-Desktops stark zurückgegangen. Das ist sehr, sehr traurig, es bricht mir das Herz. Ich bin immer ein Linux-Typ gewesen – ich habe Gnome gestartet! – und schauen Sie sich an, womit ich jetzt herumrenne. [Er zeigt auf sein iPad, Abbildung 3.]

Abbildung 3: Der Gnome-Gründer und Mono-Vordenker Miguel de Icaza glaubt nicht mehr an die Zukunft des Linux-Desktops.

Und genauso ironisch ist doch, dass – bei all dem, was Microsoft so getrieben hat in den letzten Jahrzehnten – am Ende Java vor Gericht gelandet ist. Ausgerechnet Java! Aber ich bin weg davon, jetzt machen wir mobile Applikationen. Und am Wochenende, in meiner freien Zeit, da arbeite ich an Mono für den Mac. Ich mag das, was Steve Jobs macht, das gefällt mir sehr.

Linux-Magazin: Microsoft hat hier auf der Build-Konferenz vor wenigen Stunden mit dem Windows-RT-API und der Metro-Oberfläche für Windows 8 weitreichende Neuheiten vorgestellt. Haben die auch Konsequenzen für Mono?

Icaza: Nein, das glaube ich nicht. Windows RT betrifft eher Anwendungsprogrammierer für Windows, das hat wohl keine Folgen für Mono. Noch vor drei oder vier Jahren hätte ich gesagt: Cool, lasst uns ein RT4Linux-Projekt starten, damit RT-Applikationen auch auf Linux laufen. Windows RT ist eine fantastische Technologie, eine tolle Zwischenschicht für C# und Javascript, aber eben nur für Windows. Sie ist auch nicht so fortschrittlich wie etwa das Cocoa-Framework von Apple. Das macht sie auf dem Mac überflüssig, und deshalb macht ein RT für andere Plattformen wenig Sinn.

Vom Fehler, das perfekte System zu wollen

Heute schaut die Lage für den Linux-Desktop eben schlechter aus: Open Source hat zwar viele Vorteile, aber auch einige Nachteile. Es ist ein Fehler, das perfekte System bauen zu wollen. Es ist ein Fehler, APIs so oft zu ändern, weil man glaubt, durch die Verfügbarkeit des Sourcecode die Anwendungen schnell nachziehen zu können. Aber wenn man wie bei Linux alle sechs Monate APIs ändert, bleiben irgendwann nur sehr wenige Anwendungen übrig.

Ich rede nicht von Inkompatibilitäten, sondern davon, dass Subsysteme wie Sound, Grafik oder Printer überarbeitet und erneuert werden. Das macht es Herstellern sehr schwer, Anwendungen herauszubringen, die funktionieren. Ich habe zu Hause ein Suse-11.2-System laufen, mit dem ich sehr zufrieden bin. Aber versuchen Sie mal, dafür einen aktuellen Chrome zu bekommen – und die 11.2 ist gerade mal anderthalb Jahre alt!

Linux-Magazin: Hat der Linux-Desktop Ihrer Meinung nach keine Zukunft?

Icaza: Linux hat heute keine vertrauenswürdige Plattform. Nein, ich glaube nicht mehr daran, dass Linux auf dem Desktop Perspektiven hat. Nicht weil es das grundsätzlich nicht könnte, sondern weil die Community Standards allzu schnell über den Haufen wirft und neu designt. Wir müssen es erst noch lernen, dass es okay ist, proprietäre Software zu integrieren, und dass es nicht in Ordnung ist, die APIs zu ändern und damit Geschäftsmodelle zu zerstören.

"Für den Linux-Desktop kämpfen lohnt nicht"

Es gibt ja auch solche Anstrengungen: Vor vielen Jahren gab es mal die Linux Standard Base, wo sich alle Distributoren zusammengesetzt haben und Linux standardisiert haben. Damals war Red Hat vorne, hatte deshalb kein Interesse an Standardisierung und hat nicht mitgemacht. Jetzt hat Ubuntu die Nase vorn und sagt das Gleiche: "Wir dürfen uns nicht von Standards gängeln lassen."

Ich habe viele Jahre für den Linux-Desktop aufgebracht, aber ich glaube, er ist es nicht mehr wert, dafür zu kämpfen. Ich will aber auch niemanden davon abhalten. (Markus Feilner)

Bestandsaufnahme

Das Mono-Paket umfasst zahlreiche Bestandteile. Die folgenden Listen geben den aktuellen Stand bei Redaktionsschluss wieder.

Die Dotnet-Kompatibilität stellen folgende Komponenten sicher:

  • Der Kern: Mscorlib, System, System.Xml in den Dotnet-Versionen 1.1 und 2.0
  • System.Core (Version 3.5)
  • Webmatrix.Data zum Datenbankzugriff
  • Win Forms bildet die Windows Forms und System.Drawing nach (in den Versionen 1.1 und 2.0)
  • WCF (teilweise, die für Silverlight 2.0 benötigte Teilmenge ist komplett)
  • ASP.NET 1.1, 2.0, 3.5 (und MVC), 4.0
  • ADO.NET 1.1, 2.0
  • System.Transactions
  • LINQ (LINQ to SQL, allerdings noch nicht in vollem Umfang)

Aus Dotnet 4.0 sind schon enthalten:

  • System.Numerics
  • Parallel Framework und PLINQ
  • Client fürs Open-Data-Protokoll (von Microsofts Dotnet übernommen, steht unter der MS-PL-Lizenz)
  • Dynamic Language Runtime (von Dotnet übernommen, steht unter der MS-PL-Lizenz)
  • Managed Extensibily Framework (von Microsofts Dotnet übernommen, steht unter der MS-PL-Lizenz)

Zusätzliche An- und Einbindungen an:

  • GTK via GTK#
  • Gnome
  • Webkit
  • Gecko
  • Apache (Mod_mono)
  • Google Native Client
  • Mono.Cecil (eine Bibliothek zum Erzeugen und Inspizieren von CIL-Bytecode-Dateien)

Unterstützung für Compiler:

  • C# für die Sprachversionen 2.0, 3.0 und 4.0 einschließlich LINQ; ein Compiler für Version 5.0 ist derzeit in Arbeit
  • Visual Basic in den 2.0- und 4.0-Profilen
  • Integration des extern entwickelten F#- Compilers sowie Iron Ruby und Iron Python

Eingebaute Werkzeuge:

  • ECMA-kompatible Laufzeitumgebung (Common Language Runtime, CLR), die den CIL-Bytecode ausführen kann; sie unterstützt die Architekturen x86, PowerPC, ARM, Sparc, S/390, AMD64 und IA64
  • Profiler
  • Debugger
  • C#-Shell, die C#-Skripte in Unix ausführt
  • Entwicklungsumgebung Mono Develop, unter Windows integriert sich Mono auch in Visual Studio
  • Der Mono Migration Analyzer (MoMA) gibt erste Hinweise, ob ein aktuelles Dotnet-Programm unter Mono läuft, und wenn nicht, was dies verhindert [6]

Darüber hinaus gibt es zahlreiche weitere Bibliotheken von Drittanbietern, und zwar sowohl speziell für Mono als auch für Dotnet. Letztere funktionieren aber nur, wenn sie auf den Basisbibliotheken aufbauen beziehungsweise keine speziellen Windows-Funktionen aufrufen. Ein Beispiel ist die Razor-Bibliothek, die auch auf Mono 2.10 läuft und somit wiederum Microsofts Content-Managementsystem Orchard ausführen kann.

Auf der anderen Seite bietet das Tao-Framework eine Anbindung an Open GL als Alternative zu Direct X. Mono.Posix bietet Anbindungen für Posix-Anwendungen, Mono.Http erlaubt es, Webserver in Mono zu erstellen [7]. Mit Mono kompatible Compiler listet [8].

Aus Dotnet fehlen heute insbesondere:

  • WPF
  • WF
  • Cross-Process Transactions
  • System.Management
  • Entity Frameworks
  • Server für Open Data
  • Powershell

Sowie die veralteten:

  • System.Enterpriseservices
  • WSE (Extensions zu System.Web.Services)
  • Workflow Foundation 3 (WF3)
  • Code Access Security aus Dotnet 1.0

Mono: Der Neustart

Miguel De Icaza gründete nach seiner Suse-Karriere zusammen mit Nat Friedman im Mai 2011 das Unternehmen Xamarin ([2], nicht zu verwechseln mit ihrer alten Firma Ximian). Den beiden folgten weitere ehemalige Mono-Entwickler. Dummerweise verblieben die Rechte an den Mono-Produkten bei Attachmate beziehungsweise Suse. Das betraf insbesondere die profitablen Mono-Portierungen auf Android und iPhone.

Also begann Xamarin zunächst mit der Entwicklung eigener mobiler Mono-Varianten. Mitte Juli überließ Suse jedoch überraschend dem kleinen Start-up eine unbegrenzte und umfassende Lizenz an Mono, Mono Touch, Mono for Android (Mono Droid) und den Mono-Tools für Visual Studio [3].

Gleichzeitig übernahm Xamarin alle Supportverträge der ehemaligen Novell-Mono-Kunden sowie die Federführung beim Mono-Community-Projekt. Dieses Projekt entwickelt die quelloffene Desktop-Variante von Mono nebst C#-Compiler weiter. Auf der Mono-Homepage [1] war zum Redaktionsschluss aber noch Novell als Projektsponsor, Ansprechpartner und Anbieter von kommerziellem Support genannt, auch die entsprechenden Seiten bei Suse existierten weiterhin.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Entwickler planen Mono-Foundation

    Gerüchte gab es schon länger, jetzt bestätigt es Sones-CEO Richard Doll im Interview mit Linux-Magazin Online erstmals: Sones, die Kernentwickler von Mono um Miguel de Icaza und dessen neue Firma Xamarin arbeiten an einer Stiftung für das freie .NET-Projekt. Die soll den Namen Mono Foundation tragen und sich vor allem um die Entwickler und die Konferenzen kümmern.

  • Mono Develop 2.6 mit runderneuerter Git-Unterstützung

    Mono Develop, eine Entwicklungsumgebung für die freie Dotnet-Umsetzung Mono, ist in Version 2.6 mit zahlreichen neuen Features erhältlich.

  • Zwei Sones-Chefs über die Datenbank-Entwicklung mit Mono

    Die Datenbank Graph DB von Sones ist in .Net entwickelt, läuft aber dank Mono auch auf Linux - und seit Mono eine neue Speicherverwaltung mitbringt (Garbage Collector) sogar in vielen Fällen deutlich schneller als auf Windows. Das Linux-Magazin hat Daniel Kirstenpfad, Entwickler und CTO und Richard Doll, CEO von Sones zu dem Erfolg und Widrigkeiten bei der Portierung befragt und Erfahrungen, Tipps und Tricks fürs plattformunabhängige Entwickeln erhalten.

  • Xamarin SDK unter MIT-Lizenz verfügbar

    Anfang April hatte Microsoft es angekündigt, nun steht Xamarins SDK unter einer Open-Source-Lizenz auf einer eigenen Webseite. Das kündigte Miguel de Icaza auf der Evolve-Konferenz an. Auch Linux-Builds seien denkbar.

  • Mono 2.10.3 läuft auf Mac OS X Lion

    Die freie Dotnet-Implementierung Mono ist in Version 2.10.3 erhältlich, der ersten Release unter dem Dach der Firma Xamarin.

comments powered by Disqus

Ausgabe 01/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.