Microsoft und Open Source

Vom Saulus zum Paulus

18.02.2009 von Markus Franz
Als Reaktion auf die wachsende Konkurrenz aus dem Open-Source-Lager hat Microsoft einen strategischen Schwenk vollzogen. Die Windows-Company offeriert mittlerweile selbst ein breites Portfolio offener Software.

Microsoft ist mit proprietärer Systemen groß geworden. Doch die Open-Source-Community bringt den weltgrößten Softwarehersteller zunehmend in Bedrängnis. Auf dem Server hat sich Linux etabliert; zudem arbeiten auch immer mehr Desktops unter dem freien Betriebssystem. Hatten die Strategen aus Redmond Open Source anfangs noch als Krebsgeschwür verteufelt, steht Microsoft seit Ende 2007 offenen Technologien bereitwilliger gegenüber. Die diversen Kartellverfahren seit den 90er Jahren dürften dazu nicht unwesentlich beigetragen haben.

Gründe für Open Source

Microsoft lebt zu großen Teilen von Windows und der gesamten Betriebssystemfamilie, aber auch von den Office-Produkten und Datenbank-Servern. Bei anderen Infrastrukturkomponenten und Frameworks konnte sich der Softwareriese bisher nicht wirklich durchsetzen. Gegen die aufeinander abgestimmten Programme aus dem eigenen Haus treten tausende freie Tools und Applikationen an, die unabhängig voneinander entwickelt werden und frei verfügbar sind.

Mit CodePlex stellt Microsoft eine Hosting-Plattform für Open-Source-Projekte bereit.

Dadurch sieht sich Microsoft - wie jeder Anbieter proprietärer Software - zwei unterschiedlichen Herausforderungen gegenüber: Zunächst ist es für Kunden von Vorteil, wenn der Quellcode der gekauften Software frei verfügbar ist. So kann man nicht nur sicherstellen, dass die Anwendung sicher ist und keine unbekannten Hintertüren eingebaut wurden. Gleichzeitig lässt sich eine Investition besser schützen, wenn die angeschaffte Software mit anderen Applikationen besser zusammenarbeitet. Schwierig für Microsoft ist zudem die Tatsache, dass von vielen Open-Source-Lösungen nicht nur der Quelltext offen liegt, sondern diese auch wirklich kostenfrei sind - also keine Lizenzkosten anfallen, sofern der Benutzer keinen Support benötigt.

Einblick in den Quellcode

Als ersten Schritt in Richtung Open Source propagiert Microsoft seit dem Jahr 2005 die sogenannte Shared-Source-Initiative. Darunter gibt es zwei Programmsparten: Das Product Source Program ist nur für wertvolle Kunden (Most Valuable Professionals) zugänglich. Dabei erhält ein ausgewählter Kreis Einblick in den Quellcode der aktuellen Produktfamilien um Microsoft Windows und Microsoft Office. Regierungen und große Unternehmen können so sicherstellen, dass in Microsoft-Software keine Hintertüren eingebaut sind, welche die Sicherheit von Betriebsgeheimnissen gefährden. Es wird auch leichter, speziell entwickelte Software an die Windows-Plattform anzupassen.

Für ein breiteres Publikum gedacht ist die Sparte Reference-Source-Program. Hier erhält jeder Interessierte einen Einblick in die .NET-Basisklassen, Windows Forms, Windows Presentation Foundation sowie ASP.NET und weitere Framework-Technologien. Das erleichtert vor allem Programmierern das Debugging eigener Applikationen und ermöglicht insgesamt eine bessere Anpassung von Software für Windows. Mit Microsoft Visual Studio 2008 hat der Riese aus Redmond eine Funktion implementiert, mit der man direkt den Quellcode herunterladen und in Visual Studio betrachtet kann - bequemer geht es nicht.

Im akademischen Umfeld erlaubt Microsoft mit dem Microsoft Windows Academic Program einen tiefen Einblick in den Kernel und die internen Konzepte von Windows. Der Hersteller gibt hier Universitäten und anderen Forschungseinrichtungen weltweit Dokumentationsmaterial an die Hand, das in Forschung und Lehre frei verwendet werden darf.

Beide letztgenannten Programme zielen darauf ab, die Interoperabilität mit Microsoft-Software zu verbessern und durch ein tieferes Verständnis der Konzepte hinter den großen Produktlinien Windows und Office den eigenen Inhouse-Support besser zu qualifizieren. Sinn ergibt die Initiative aber nur für mittlere und große Unternehmen, die Software von Microsoft einsetzen.

Im Laufe der Jahre haben sich unter der Shared Source Initiative eine ganze Reihe von Lizenzen entwickelt - die wichtigste Lizenz ist dabei die "Micosoft Reference Source License", die nicht als offizielle Open-Source-Lizenz anerkannt ist. Sie gestattet lediglich den Einblick in den Quellcode zu Referenzzwecken, ohne jede aktive Nutzung von Ausschnitten oder darin enthaltener Konzepte in jeder Weise zu gestatten.

Echte offene Lizenzen von Microsoft

Daneben offeriert Microsoft aber auch zwei richtige Open-Source-Lizenzen, die von der OSI (Open Source Initiative) offiziell als freie Lizenzen anerkannt wurden. Die Microsoft Public License (MS-PL) ist das beste Beispiel, dass sich Microsoft durchaus konsequent in Richtung Open Source bewegt: Der Quellcode von Software unter dieser Lizenz muss frei verfügbar sein und darf jederzeit für kommerzielle und nicht-kommerzielle Zwecke weitergegeben werden, sofern das neue Werk erneut unter die MS-PL gestellt wird. Binaries, also kompilierter Code, dürfen sogar unter jeder Lizenz weitergegeben werden, die mit der MS-PL kompatibel ist.

Die Microsoft Public License ist die erste Lizenz von Microsoft, die vollständig zur GNU Public License (GPL) kompatibel ist. Seit Oktober 2007 ist so offiziell bestätigt, dass die Linux- und Windows-Communities ein Stück näher zusammenrücken. Ebenfalls anerkannt als offizielle Open-Source-Lizenz wurde die Microsoft Reciprocal License (MS-RL). In Anlehnung an die GNU Lesser Public License (LGPL) ist die MS-RL für Frameworks oder Bibliotheken gedacht, die das geistige Eigentum an der darunter veröffentlichten Software weiter schützen sollen.

Plattformen für die Community

Neben den Initiativen im eigenen Haus versucht Microsoft, das vielzitierte Open-Source-Ökosystem um die eigenen Produkte und Technologien aufzubauen. Dazu betreibt der Hersteller mit CodePlex und Port25 zwei ausgereifte Plattformen im Internet, die Impulse in der Open-Source-Szene setzen sollen.

CodePlex ist das Gegenstück zu SourceForge: Die Website agiert als kostenloser Hosting-Provider für Communities, die gemeinsam an Open-Source-Projekten arbeiten. Jeder Entwickler kann sich dort einen Zugang einrichten und mit Gleichgesinnten gemeinsam an Quellcode arbeiten. Unterstützung bieten dabei integrierte Wikis, Diskussionsforen, Lizenzmanagement, Möglichkeiten zur Verwaltung von Bug- und Support-Tickets sowie umfangreiche Statistiken über das eigene Projekt und dessen Mitarbeiter. Am interessantesten ist aber, dass auf dem Server der Microsoft Visual Studio Team Foundation Server arbeitet, über den man komfortabel gemeinsam Quellcode verwalten kann. Besondere Beachtung schenkt Microsoft dabei auch der Anbindung von Subversion-Clients, die sich im Linux-Umfeld als Standard für die Softwareentwicklung etabliert haben: CodePlex hat eine voll funktionsfähige Schnittstelle für Subversion, sodass man Quellcode auch über Betriebssystemgrenzen hinweg gemeinsam entwickeln kann und insbesondere nicht an Visual Studio als Entwicklungsumgebung gebunden ist. Sogar Eclipse freundet sich so leicht mit CodePlex-Projekten an. CodePlex selbst wurde in C# und ASP.NET implementiert und läuft im Hintergrund mit dem Team Foundation Server.

Wer sich mehr für die grundsätzliche Richtung zu den Themen Open Source, Interoperabilität, freie Technologien und Plattformen interessiert, ist bei Port25 richtig. Das unter dem Technet-Label gestaltete Onlineangebot wird regelmäßig mit Fachartikeln und Tipps aufgefüllt. Microsoft möchte so eine Community für die eigene Strategie bilden, mit der man aktiv diskutieren kann. Das funktioniert bei Port25 recht gut: Die Website verzeichnet nach eigenen Angaben ein hohes Wachstum an Besucherzahlen. Microsoft stellt dort in den Bereichen Server und Entwickler regelmäßig Lösungen vor, die Benutzern der eigenen Software die Zusammenarbeit mit Linux, Unix und anderer freier Software erleichtert. Eine Schlüsselrolle spielt Port25 auch bei der Unterstützung von Open-Source-Events und der Apache-Foundation.

Unterm Strich sieht Microsoft CodePlex eher als externes Projekt, auf dem sich die Community austoben kann. Der Hersteller selbst stellt dort aktiv Quellcode einzelner Projekte ein, die als Open-Source-Software freigegeben sind. Port25 dagegen ist eher ein Kommunikations- und Diskussionskanal, über die Open-Source-Teams bei Microsoft auf eigene offene Anwendungen und Technologien hinweisen und Anregungen aus der Community aufnehmen.

Freie .NET-Programmiersprachen

Einen ersten Namen hat sich Microsoft im Open-Source-Umfeld mit der Öffnung der .NET-Plattform für etablierte Sprachen aus dem Linux-Umfeld gemacht. Zunächst war .NET nur als Framework für die Integration unterschiedlicher Microsoft-Technologie gedacht: Von Visual Basic über C++ bis hin zu Schnittstellen wie Corba sollten alle Tools und Frameworks auf eine einheitliche Plattform transportiert werden, die fit für zukünftige Entwicklungen ist. Dabei hat Microsoft von Anfang an vorgesehen, dass .NET-Applikationen auch in anderen Programmiersprachen geschrieben werden sollen.

Einer der wichtigsten Vertreter freier Skriptsprachen ist IronPython, die Implementierung des Python-Interpreter für die .NET-Plattform. Python ist eine auf Linux/Unix sehr beliebte Skriptsprache, die immer mehr das alte Perl für kleine administrative Aufgaben ersetzt. Aber auch große Applikationen werden in Python implementiert, es gibt mit Zope sogar einen richtigen Application Server. Die Liste der Anwender beginnt bei der Nasa und endet bei Wetterdiensten im Web. Auch wenn die Entwicklung immer der offiziellen Python-Distribution etwas hinterher hinkt und es derzeit noch keine Implementierung von Python 3.0 gibt, ist IronPython spannend. Die Sprache ist einfach zu erlernen, zwingt zu sauberer Objektorientierung und fördert das Rapid Prototyping. Viele verschiedene Programmierparadigmen lassen sich damit problemlos umsetzen.

IronPython ist selbst komplett in C# geschrieben und läuft nicht nur auf dem Microsoft .NET Framework. Stattdessen zielt es auch auf Novell Mono.NET. Die Kombination Mono mit IronPython auf Linux dürfte aber sicher nur für eine Minderheit der Anwender interessant sein. Besonders nützlich ist IronPython, da der Interpreter selbst relativ einfach in volle .NET-Applikationen eingebettet werden kann - und so Python-Skripte als Vermittler zwischen .NET-Objekten eingesetzt werden können. Die einzige Schwäche von IronPython liegt in der unvollständigen Implementierung der Standardbibliothek der C-basierenden Ausgabe: Hier gibt es immer wieder kleinere Lücken.

Ebenso spannend ist IronRuby: Die erste .NET-Ruby-Implementierung steht seit Ende 2007 öffentlich zur Nutzung bereit. Ruby selbst ist seit längerem eine interessante Skriptsprache. Sie verbindet ebenfalls die Flexibilität von Perl mit einem soliden Objektmodell und ist gleichzeitig interpretiert, sodass schnelle Entwicklung und Änderungen möglich sind - und Entwickler genießen weiterhin dynamische Typisierung und ähnliche Annehmlichkeiten. Ruby bietet native Unterstützung für Unicode und skaliert auch auf Mehrkernprozessoren über effizientes Threading. Ruby on Rails ist ein spannendes Framework für die Entwicklung Web-basierender Anwendungen. Mit IronRuby kommen alle diese Vorteile auf die .NET-Plattform. Als Entwickler hat man die Freiheit, sich die jeweils beste Sprache für die jeweilige Aufgabe auszusuchen. Die Open-Source-Community kann in gewohnter Python-/Ruby-Weise auch auf der .NET-Plattform professionell arbeiten.

Sowohl IronPython als auch IronRuby, werden aktiv durch Mitarbeiter von Microsoft entwickelt und auf CodePlex als Projekt vorangetrieben. Beide Projekte sind ebenfalls richtige Open-Source-Software unter der MS-PL oder MS-RL. Die Visual-Studio-Integration von IronRuby schlägt IronPython um Längen. Microsoft selbst arbeitet an weiteren Sprachen unter einer Open-Source-Lizenz, jedoch sind diese bei Microsoft Research noch in der frühen Entwicklung. Praktischen Nutzen werden auf mittlere Sicht nur Silverlight oder Moonlight bringen, mit denen sich Rich-Client-Anwendungen entwickeln lassen - dann sogar in IronPython oder IronRuby für den Client. ActiveState, ein bekannter Anbieter von Tools für Skriptsprachen, bietet mittlerweile auch eine .NET-Implementierung von Perl, die aber von zweifelhafter Qualität ist.

Singularity: Das freiere Windows

Neben den vielen freien Projekten rund um die .NET-Plattform arbeitet Microsoft an weiteren interessanten Initiativen. Besonders zu erwähnen ist dabei das Betriebssystem Singularity, das als Konzeptstudie bei Microsoft Research seit dem Jahr 2003 entwickelt wurde. Ideen und Lösungen aus diesem Projekt sollen später in Microsoft Windows einfließen. Grundsätzlich ist es aber beeindruckend, dass Microsoft erstmals ein komplettes weiteres Betriebssystem entwickelt und noch dazu im Quellcode freigibt: Singularity steht seit März 2008 zum Download auf CodePlex bereit und ist nur etwa 56 MB groß.

Das Betriebssystem kann im nicht-kommerziellen und akademischen Bereich völlig frei eingesetzt werden, die kommerzielle Nutzung ist jedoch verboten. Grundkonzept des von Singularity ist es, wo immer möglich auf Managed Code zu setzen. Diese Idee, die schon das .NET-Framework erfolgreich gemacht hat, stellt zur Laufzeit eine hohe Systemsicherheit bereit und ermöglicht ein hocheffizientes System, das sparsam mit Ressourcen umgeht. Den bisher recht monolithischen Windows-Kernel hat man durch einen schlanken Microkernel ersetzt, der als einzige Komponente des neuen Systems als kompilierte Anwendung für die jeweilige Prozessorachitektur vorliegt. Kernel, Treiber und zusätzliche Tools sind alle in Managed Code - vorzugsweise einer .NET-Sprache - geschrieben und liegen für die Common-Language-Runtime vor.

Die sogenannten Software-isolated Processes trennen so weit wie mögliche alle Prozesse des Systems voneinander, sodass eine extrem hohe Sicherheit herrscht. Buffer Overflows oder Viren und Trojaner werden es auf Singularity zumindest ein Stück schwerer haben. Singularity ist bisher aber ein reines Forschungsprojekt, es gibt noch keine grafische Oberfläche. Das System selbst ist in Assembler, C# und Sing# geschrieben - letzteres ist eine spezielle Abwandlung von Spec#, das sich widerum an C# und C++ anlehnt. Selbst nach der viel beachteten Freigabe im März 2008 entwickelt Microsoft das Projekt auf CodePlex weiter - erst kürzlich ist die Version 2.0 des Singularity Research Development Kit erschienen.

Kostenloses Content Management

Neben dem Betriebssystem und der .NET-Plattform als eierlegende Wollmilchsau für Anwendungen jeder Art veröffentlicht Microsoft auch komplette Tools für die Open-Source-Gemeinde. Dazu gehört unter anderem das Projekt Oxite, das auf CodePlex kostenfrei heruntergeladen werden kann. In nur knapp 1200 KB bündelt Microsoft eine Plattform für Blogging, die es durchaus mit etablierten Blogging- oder Content-Management-Systemen im Web 2.0 aufnehmen kann. Der Quellcode steht mit der MS-PL unter der Lizenz mit den geringsten Verpflichtungen für alle Seiten - also ein richtiges Open-Source-Projekt von Microsoft.

Wer heute einen Blog startet, muss sich mit einer Vielzahl von unterschiedlichen Standards und Protokollen auseinandersetzen: Pingbacks und Trackbacks, Unterstützung für den Austausch von Inhalten über RSS-Feeds, Support für das Open-Search-Format und die Integration mit externen Tools, über die Inhalte eingestellt werden können (externe Blogging Services). Gleichzeitig sollte die Blog-Software mehrere Blogs gleichzeitig hosten können, um unnötigen Administrationsaufwand zu vermeiden. Oxite bietet alle diese Features, die komplett in einer integrierten ASP.NET-Software umgesetzt wurden. Erstaunlich genau hält sich Microsoft an etabliere Standards und versucht gar nicht erst, neue eigene Konzepte zu etablieren. Im Hintergrund setzt Microsoft ebenfalls auf moderne Technik: Das Model-View-Controller-Konzept wurde mit ASP.NET-MVC konsequent bei Oxite umgesetzt. Dieses Architekturmodell fordert eine strickte Trennung zwischen den Daten, deren Präsentation und der Steuerung. Besonders Entwickler, die mit PHP und dem Zend-Framework oder Java Server Faces vertraut sind, finden sich so schnell in Oxite zurecht und können das System einfach anpassen.

Oxite hat durchaus das Potential, sich als Standardlösung für Blogging in der ASP.NET-Umgebung zu etablieren. Was WordPress auf PHP geschafft hat, kann Microsoft hier auf der hauseigenen Technologie noch schneller gelingen, weil Oxite ein richtiges Open-Source-Projekt ist. Das eigene Angebot Mix Online (http://visitmix.com/) arbeitet bereits mit Oxite, ebenso einige kleine andere Weblogs. Auf den großen Belastungstest muss man allerdings noch warten.

WPF und Silverlight

Auf CodePlex findet sich ein weiteres bekanntes Projekt: das Windows Presentation Foundation Toolkit, mit dem Entwickler schneller Desktop-Applikationen für Windows entwickeln können. Die Grundidee ist es, neben den Standard-Tools ein Set von Oberflächenkomponenten und Features bereitzustellen, die .NET sinnvoll ergänzen. Das Projekt ist allerdings noch in einem sehr frühen Stadium - spannend wird es hier erst ab Mitte 2009. Im Bereich Design und Oberflächenkomponenten ist Silverlight ebenfalls interessant - auch hierfür (und damit auch für das freie Moonlight) gibt es das Silverlight-Toolkit, das aus einer ganzen Reihe freier Controls und Komponenten besteht. Beide Projekte, WPF und Silverlight, werden auf CodePlex mit Komponenten und Features versorgt, die im normalen Release nicht sinnvoll untergebracht werden können oder sollen. Microsoft bietet neben den hier ausgewählten Beispielprojekten eine ganze Reihe weiterer Tools und Frameworks, die frei verfügbar sind.

Die wichtigste Vereinbarung, die Microsoft für die Open-Source-Community gebracht hat, war sicher die Kooperation mit Novell. Damit können Linux-Anwender nun sicher sein, dass in heterogenen Umgebungen die Systeme gut arbeiten. Diese Allianz hat eine Kettenreaktion ausgelöst: Microsoft gibt Stück für Stück die Spezifikationen für Protokolle, insbesondere für Windows Server, an Samba frei. Im Bereich der Virtualisierung unterstützen Microsoft-Lösungen jetzt auch Linux als Host und Gast, gleichzeitig hilft Microsoft Novell bei der Entwicklung von Mono.NET für Linux. Zusammen mit Sun arbeitet Microsoft an der Interoperabilität der Office-Suites: Der reibungslose Datenaustausch zwischen dem OpenDocument- und dem OpenXML-Standard gelingt nun über Plugins recht reibungslos. Auch mit der Apache Software Foundation arbeitet der Softwarekonzern seit einiger Zeit zusammen.

Microsofts Strategie für die Zukunft

Open Source ist für Microsoft eine der größten Herausforderungen seit der Unternehmensgründung. Die Windows-Company reagiert darauf mit einer Doppelstrategie: Einerseits gibt sie eigene Anwendungen als Open-Source-Software frei und verteilt sie ohne Lizenzkosten, sodass sich nach und nach eine Community um diese Systeme bildet. Andererseits sollen Windows und .NET als Plattformen für Open-Source-Systeme etabliert werden, um deren Verbreitung auszubauen.

Kerntechniken schützt Microsoft aber weiterhin mit Patenten und komplizierten Lizenzen. Den Quellcode dieser Systeme gibt das Unternehmen nur unter sehr restriktiven Konditionen zur Einsicht frei - ohne dabei die Weiterentwicklung oder eigene Anpassungen zuzulassen. Unterm Strich hat Microsoft erkannt, dass vor allem die Unternehmens-IT immer heterogen bleiben wird. Der Konzern versucht deshalb, sich mit einer neuen Offenheit gegenüber anderen Technologien bei seinen Kunden zu positionieren. (wh)