Microsoft macht .NET Open Source

Keine Zeit? Hier die Kurzversion in 30 Sekunden.
- Am 12. November 2014 kündigte Microsoft auf der Connect()-Konferenz an, den serverseitigen .NET-Stack als Open Source auf GitHub zu stellen (MIT-Lizenz) und für Linux und Mac OS X bereitzustellen.
- Die Compiler-Plattform Roslyn ist schon seit April 2014 offen; Visual Studio Community 2014 ist für Einzelentwickler und kleine Teams kostenlos.
- Für Java-Entwickler ist Plattformunabhängigkeit nichts Neues, für C#-Entwickler ist sie ein echter Kurswechsel.
- Mono bleibt vorerst der bewährte Weg; praktisch nutzbar wird das Neue erst in einiger Zeit.
Diese Woche kam eine Nachricht, bei der ich zweimal nachgelesen habe, ob sie echt ist. Auf der Connect()-Konferenz hat Microsoft angekündigt, .NET als Open Source freizugeben. Da ich je nach Aufgabe mal mit Java, mal mit C#, PHP oder C++ arbeite, interessiert mich, wie das aus den verschiedenen Blickwinkeln aussieht.
Was genau angekündigt wurde
Der serverseitige Teil von .NET, den Microsoft .NET Core nennt, soll auf GitHub veröffentlicht werden, unter der MIT-Lizenz. MIT heißt: Man darf so ziemlich alles damit machen, auch in kommerziellen Produkten, solange der Lizenzhinweis drinbleibt. Und dann der Satz, bei dem ich zweimal hinschauen musste. Linux und Mac OS X sollen offiziell unterstützt werden. Allerdings steht da „geplant“, und das meine ich ernst: Einiges ist schon veröffentlicht, anderes soll folgen, und die Unterstützung für die anderen Betriebssysteme ist keine fertige Lieferung, sondern ein Plan.
Dazu passen zwei Dinge, die schon vorher passiert waren oder gleichzeitig verkündet wurden. Roslyn, die Compiler-Plattform für C# und Visual Basic, ist seit April offen. Und Visual Studio Community 2014 ist eine kostenlose Ausgabe mit vollem Funktionsumfang für einzelne Entwickler, Open-Source-Projekte und kleine Teams. Zusammen ergibt das ein Bild: Microsoft versucht, Entwickler dort abzuholen, wo sie ohnehin sind, und senkt Hürden, die bisher sehr real waren.
Was das für C#-Entwickler heißt
Wer C# schreibt, war bisher an Windows gebunden, jedenfalls wenn es um Produktivsysteme ging. Wer einen Server unter Linux betreibt, hatte wenig Spielraum. Das könnte sich ändern. Man kann sich vorstellen, dass eine Webanwendung in C# auf einem günstigen Linux-Server läuft, ohne dass man Lizenzfragen für das Betriebssystem klären muss. Ich halte das für einen großen Schritt, auch psychologisch. Dass Quellcode öffentlich einsehbar ist, hilft zudem bei der Fehlersuche, wenn eine Bibliothek sich seltsam verhält.
Gleichzeitig sollte man nicht so tun, als wäre morgen alles anders. Bestehende Anwendungen hängen oft an Dingen, die ohnehin nur unter Windows existieren: Windows Forms, WPF, COM, eine bestimmte Datenbank oder Komponenten von Drittanbietern. Der neue Stack richtet sich in erster Linie an die Serverseite, und er ist nicht mit dem vollen .NET Framework identisch. Wie viel von der gewohnten Klassenbibliothek in der neuen Welt landet, wird sich zeigen.
Warum jetzt?
Man kann viel darüber spekulieren, was Microsoft zu diesem Schritt bewegt hat. Ich vermute, dass mehrere Dinge zusammenkommen. Ein Großteil der Serverlandschaft läuft auf Linux, und die Entwicklerwerkzeuge laufen immer häufiger auf dem Mac. Wer eine Plattform anbietet, die nur auf einem Betriebssystem funktioniert, verliert Entwickler, die gar nichts gegen die Sprache haben. Dazu kommt, dass Open-Source-Bibliotheken längst zum Alltag gehören. Aber das ist meine Deutung, keine bestätigte Aussage, und es gibt sicher auch geschäftliche Gründe, die von außen nicht sichtbar sind.
Interessant finde ich, dass die Frage der Lizenz offenbar ernst genommen wurde. Die MIT-Lizenz ist eine der unkompliziertesten, die es gibt. Bei einer restriktiveren Lizenz hätte ich mir deutlich mehr Sorgen gemacht, ob Firmen damit überhaupt arbeiten dürfen.
Der Vergleich mit Java
Aus Java-Sicht wirkt die Meldung beinahe vertraut. Die JVM läuft seit Jahren auf allen gängigen Systemen, und OpenJDK ist als freie Implementierung etabliert. Server unter Linux sind für Java-Entwickler der Normalfall. Dass C# jetzt in diese Richtung geht, ist eher ein Aufholen als eine Revolution. Man kann es aber auch anders lesen: Die Sprachen selbst haben sich in den letzten Jahren ohnehin angenähert, und die Frage, welche Plattform man wählt, wird künftig stärker von Werkzeugen und Ökosystem abhängen als von der Betriebssystemfrage.
Ein Punkt, bei dem Java weiter vorne liegt, ist die Erfahrung. Hunderte Frameworks, Build-Werkzeuge und Betriebsmodelle sind dort über Jahre gewachsen. Ein neuer .NET-Stack muss das erst aufbauen.
Es gab natürlich schon Wege, C# außerhalb von Windows zu nutzen. Mono ist seit Jahren eine freie Implementierung, sie läuft auf Linux und Mac OS X und wird zum Beispiel für mobile Entwicklung benutzt. Wer jetzt ernsthaft C# unter Linux betreiben will, ist mit Mono weiterhin am besten bedient. Wie sich das Verhältnis zum neuen Microsoft-Stack entwickelt, ist für mich noch offen. Dass beide Projekte zusammenarbeiten, wurde angedeutet, ich möchte aber nicht raten, wie genau.
Was ich konkret im Blick behalte
Drei Fragen entscheiden für mich, ob daraus mehr wird als eine schöne Schlagzeile. Erstens: Wie stabil und vollständig läuft der Stack tatsächlich unter Linux, nicht nur in Vorführungen? Zweitens: Ziehen die Bibliotheken und Frameworks nach, die man im Alltag braucht, etwa für Datenzugriff und Webanwendungen? Drittens: Wie geht das Projekt mit Beiträgen von außen um? Quellcode öffentlich zu stellen ist das eine, Pull Requests ernsthaft zu prüfen und einzubauen das andere.
Meine Einschätzung
Ich halte das für einen echten Kurswechsel, vielleicht den größten seit Jahren bei Microsoft. Vor ein paar Jahren hätte ich es für unwahrscheinlich gehalten. Das Wort Open Source stand dort lange eher für Konkurrenz.
Trotzdem würde ich vorsichtig bleiben. Eine Ankündigung ist noch kein Produkt. Bis der Stack auf Linux so stabil läuft, dass man Produktivsysteme darauf betreibt, dürfte einige Zeit vergehen, und wie gut er im Alltag funktioniert, kann ich heute nicht sagen. Ich lasse mir das Repository auf jeden Fall in Ruhe anschauen, und sobald etwas Lauffähiges unter Linux existiert, probiere ich es aus. Prognosen darüber, ob das .NET zur ernsthaften Alternative für Webserver macht, spare ich mir. In ein, zwei Jahren wissen wir mehr.
Beitragsbild: eigene Collage mit Logos von Wikimedia Commons (Visual-Studio-Logo (2013): Microsoft (Vektorisierung: Cronoxyd), CC BY-SA 3.0); die Marken gehören ihren Inhabern. Die Collage steht ebenfalls unter CC BY-SA 3.0.
Christian Ackermann
Softwareentwickler (C++, C, Java, C#) aus der Oberpfalz, bloggt seit 2001 über Linux, Technik und Kochen.