Firmenbrief

20.06.2012

Microsoft und Open Source - vom Gegner zum Förderer


Microsoft möchte sich zunehmend der Open-Source-Welt öffnen und hat aus diesem Grund das bisherige Microsoft Interoperability Strategy Team in eine eigenständige Tochtergesellschaft ausgelagert. Das neue Unternehmen heißt Microsoft Open Technologies Inc. und soll sich ausschließlich auf die Kooperation mit der Open Source Community konzentrieren. Microsoft möchte mit diesem Schritt sowohl engere Beziehungen zu der Open Source Community als auch zu Open Source-Entwicklern knüpfen. Jean Paoli, aktuell der General Manager des Teams und einer der Schöpfer des XML-1.0-Standards, wurde zum Geschäftsführer von Open Tech ernannt. Paoli führt damit ein Team von 75 Angestellten.

Diese Neugründung soll aber nichts an dem Vorgehen ändern, wie Microsoft bisher mit Open-Source-Communities wie der Apache Software Foundation und der Outercurve Foundation sowie mit Komitees für offene Standards (z.B. W3C, OASIS, IETF und DMTF) verfährt. Die neue Geschäftsstruktur soll es Microsoft aber ermöglichen, einfacher und schneller Open Source-Software zu veröffentlichen, an aktuellen Open Source-Aktivitäten teilzuhaben und Vorschläge seitens der Community zu akzeptieren.

Microsoft war nicht immer ein wahrer Freund der Open Source-Bewegung. Zuletzt hat das Unternehmen jedoch verstärkt mit der Community zusammengearbeitet. So wurde beispielsweise kürzlich der Quellcode von ASP.NET MVC, dem ASP-NET Web API und den ASP.NET Web Pages unter eine Open Source-Lizenz gestellt. Auch an der Entwicklung des Open Source-Betriebssystems Linux war Microsoft in letzter Zeit  maßgeblich beteiligt.

Bereits im Jahr 2009 hatte Microsoft 20.000 Zeilen Gerätetreibercode zu Linux beigesteuert. Als es im Jahre 2011 dann darum ging, einen Linux-Treiber für die Hyper-V Virtualisierungsplattform zu entwerfen, übernahm der Microsoft-Entwickler K. Y. Srinivasan diese Aufgabe.

Darüber hinaus ist Microsoft auch an anderen Open-Source-Projekten, wie beispielsweise Hadoop oder an Samba, beteiligt. Hadoop ist ein freies, in Java geschriebenes Framework für skalierbare, verteilt arbeitende Software. Es basiert auf dem MapReduce-Algorithmus von Google sowie auf Vorschlägen basierend auf dem Google-Dateisystem. Mit Hadoop kann man Anwendungen mit großen Datenmengen auf Computerclustern ausführen, ein Beispiels dafür sind mehr als 21 Petabyte, die Facebook im Mai 2010 verarbeitete. Am 23. Januar 2008 wurde Hadoop zum Top-Level-Projekt der Apache Software Foundation.

Die bereits im Dezember 2011 angekündigte Unterstützung für Hadoop wurde jetzt von Microsoft erweitert. Das Infrastruktursystem läuft als Beta auf der hauseigenen Cloud-Plattform Azure. Microsoft verspricht eine einfache und schnelle Installation der Systeme. Hadoop-Infrastrukturen können dann über Microsoft Managementwerkzeuge (wie System Center 2012) verwaltet werden. Über Konnektoren lassen sich Datenbanken wie MySQL- und SQL-Database über die Hadoop-Werkzeuge abfragen. Später soll Hadoop auch auf Windows Server laufen.

Mit einem Update für Azure hat Microsoft auch seine Cloud-Plattform für weitere Open Source-Software angepasst. Windows Azure unterteilt sich in Compute, Storage, AppFabric, Virtual Network, CDN und Marketplace.

Die Nutzer der Microsoft-Cloud können nun neben Windows Servern auch  Opensuse 12.1, CentOS 6.2, Ubuntu 12.04 und Suse Linux Enterprise Server 11 SP1 installieren und nutzen. Die Betriebssysteme können in herkömmliche virtuelle Maschinen im VHD-Format (Virtual Hard Disk) installiert werden. Das ermöglicht die Migration in lokale Serverinfrastrukturen und in  Virtualisierungssoftware von Drittanbietern, die ebenfalls das VHD-Format unterstützt.

Über das Azure Virtual Network lassen sich solche lokal gespeicherten virtuellen Maschinen dann per VPN wieder mit in Azure laufenden VMs verbinden. In Virtual Network lassen sich IP-Adressen und Routing verwalten. Damit erweitert Microsoft Azure sein Plattform-as-a-Service-Angebot (PaaS) um Infrastructure-as-a-Service (IaaS). Die Kommandozeilenwerkzeuge für den Zugriff auf Azure von Mac OS X und Linux wurden ebenfalls erweitert und angepasst.

Auch als Software-as-a-Service-Plattform erhält Azure weitere Updates. Auf Azure gehostete Webseiten können bereits seit längerem ASP.NET, Node.js, oder PHP nutzen. Diese erhalten neue Bibliotheken, darüber hinaus gibt es neue Bibliotheken sowohl für Python als auch für Java. Mit dem Verwaltungswerkzeug Azure Web Sites lassen sich Open-Source-Anwendungen wie Wordpress, Joomla, Dotnetnuke, Umbraco oder Drupal einfach installieren.

Das erste freie Produkt aus dem Haus Microsoft Open Technologies ist Redis (Remote Dictionary Server) für Windows. Wie im Microsoft Interoperability-Blog (interoperability@microsoft) nachzulesen ist, hat Microsoft einen Windows-Port des NoSQL-Stores Redis auf Basis der Version 2.4.11 fertiggestellt. Redis ist eine In-Memory-Datenbank mit einer einfachen Schlüssel-Werte-Datenstruktur (Key Value Store) und gehört zur Familie der NoSQL-Datenbanken. Man kann es sich als eine zweispaltige Tabelle vorstellen, in der eine Spalte den Schlüssel enthält und die andere Spalte den eigentlichen Wert, auf den über diesen Schlüssel zugegriffen wird.

Redis ist eine in C implementierte single-threaded In-Memory-Datenbank. Redis erlaubt neben dem Speichern von Strings auch komplexere Datentypen wie Listen, Mengen, sortierte Mengen und Hashes. Als In-Memory-Datenbank hält Redis alle Daten im Hauptspeicher. Dieser ist über Virtual Memory erweiterbar, hier können  seltener benutzte Datensätze ausgelagert werden.

Die einfache Struktur der Datenbank eignet sich somit weniger für komplexe Datenstrukturen. Der große Vorteil von Redis ist primär der Leistungsgewinn gegenüber konventionellen, relationalen Datenbanken wie z. B. MS SQL oder MySQL. Mehr als 100.000 Schreibvorgänge und 80.000 Lesevorgänge pro Sekunde sind mit Redis auf Standardhardware möglich.

Weil Windows das notwendige Fork/Copy-on-Write-Feature des Linux-Kernels fehlt, haben die Windows-Entwickler die entsprechende Copy-on-Write-Funktionalität für Redis auf der Anwendungsebene nun nachprogrammiert und zur Verfügung gestellt (https://github.com/MSOpenTech/Redis).