Die Computerwelt wächst zusammen

Freie Wahl für Betriebssysteme
Kommentare

„In der Zukunft wird die Bedeutung des Betriebssystems immer weiter sinken.“ – eine neue Aussage ist das bei Weitem nicht. Ich erinnere mich daran, solche oder ähnliche Statements bereits vor Jahren gehört zu haben. Dabei lag ihnen meist eine Beobachtung zugrunde, die ebenfalls schon alt ist: Man kann immer mehr im Browser machen.

Zweifellos ist die grundsätzliche Einschätzung des Stellenwerts der Browser auf modernen Computern korrekt. Vor einigen Jahren noch arbeitete ich selbst ungern „ernsthaft“ im Browser, hauptsächlich, weil solche Arbeit immer von Ungewissheit geprägt war. Zu oft habe ich diverse Webforen verflucht, die sich als Ablösung von einfachen und stabilen NNTP-Readern verkaufen wollten, aber nicht einmal einen funktionierenden Editor enthielten, der nicht beim ungeschickten Druck auf die Backspace-Taste plötzlich den gesamten mühsam geschriebenen Inhalt verlor.

Nun hat sich dieser Aspekt von Arbeit unabhängig vom Betriebssystem mittlerweile zum Glück stark verbessert. Ich selbst bin vor Jahren dem Weg von Google gefolgt, über die verschiedenen Office-Produktivitätsanwendungen zu Google Mail, Google Photos und vielen anderen. Alles im Browser, sehr praktisch. Vor ein paar Tagen habe ich von einem Kollegen gehört, der nach einem Mailclient suchte – an diese Gattung Anwendungssoftware habe ich seit Jahren nicht mehr gedacht, und bin sehr froh, sie hinter mir gelassen zu haben.

Der Browser machts

Die Idee „Browser als Betriebssystem“ ist sicherlich ein gangbarer Weg, zumindest für Endanwender. Mit Chrome OS und den nicht wenig erfolgreichen Chromebooks geht Google auch in diese Richtung. Produktivität funktioniert im Browser heute gut; mit Office-Paketen, Kommunikations- und Teamwork-Apps aller Art, und der Unterstützung der meisten großen Softwareschmieden, die sehr gern auf HTML und JavaScript als Plattform setzen. Natürlich gibt es praktische Grenzen, denn meine drei 4K-Bildschirme und meine virtuellen Maschinen werden vom Chromebook nicht unterstützt, und selbst mit der Scanneranbindung hapert es erheblich. Manchmal gehe ich den Weg, Cloud-VMs zu gewissen Zwecken zu verwenden, oder gar Cloud-IDEs wie Cloud9, aber der Komfort eines leistungsfähigen lokalen Systems ist für mich noch immer von Bedeutung.

Die Erkenntnis, dass das Betriebssystem selbst nicht mehr denselben Stellenwert wie in der Vergangenheit hat, zeigt sich allerdings auch abseits der Browser. Vor ein paar Jahren entschied sich Apple, für neue Versionen von OS X kein Geld mehr zu verlangen. Updates waren zuvor schon sehr günstig, wesentlich günstiger jedenfalls als bei Microsoft. Manche Anwender argumentieren, dass OS X nicht „umsonst“ ist, da es einen Mac erfordert – mag sein, aber Apple stellt sich speziell Entwicklern gegenüber traditionell ganz anders auf als Microsoft. Auch die IDE Xcode kommt gratis ins Haus und eine Mitgliedschaft im Mac Developer Program kostet 99 $ im Jahr.

Auf Unix-Plattformen gab es schon beinahe von Beginn an das Bestreben, Software möglichst systemunabhängig zu halten. Basierend auf der Sprache C, die seit 45 Jahren eine der meistverwendeten Programmiersprachen ist, wurde Software anfangs manuell portabel gehalten. Im Laufe der Jahre fanden sich Wege, die Kompatibilität von Code mit unterschiedlichen Zielplattformen teilweise zu automatisieren. Zum Beispiel wurde 1991 das Tool GNU Autoconf verfügbar, das eine Zielumgebung in Hinsicht auf unterstützte APIs untersuchen und Build-Skripte (Makefiles) erzeugen konnte. Zu dieser Zeit war es noch nicht im Sinne der Hersteller verschiedener kommerzieller Unix-Derivate, Software auf unterschiedlichen Plattformen verfügbar zu machen. Jedoch sorgten Entwickler selbst dafür, dass Werkzeuge und Programmiersprachen dies einfach machten und somit eine größere Investitionssicherheit erreicht werden konnte.

Äpfel …

Nun, zurück zum Betriebssystem: Der interessanteste Aspekt der Gegenwart besteht meiner Ansicht nach in der Konvergenz, die sich in den letzten Jahren beobachten lässt. Noch einmal zu Apple: Dort war OS X im Jahr 2001 als Unix-basiertes Desktopsystem eine bemerkenswerte Neuerung. Man hatte mit der Rückkehr von Steve Jobs dessen Firma NeXT gekauft und OS X aus den Mach- und BSD-Ursprüngen des Systems NeXTSTEP entwickelt. Im Gegensatz zu reinen Unix-Systemen hatte der Mac natürlich auch auf OS-X-Basis eine stabile und einheitliche grafische Oberfläche, was dem Markt für kommerzielle OS-X-Software schnell auf die Sprünge half. Im Jahr 2008 kaufte ich selbst ein cooles schwarzes MacBook, mit dem (und dessen Nachfolgern) ich viele Jahre lang sehr zufrieden arbeitete.

Die Entwicklung der Unix-Integration auf dem Mac ging etwas seltsame Wege. Auf der einen Seite entwickelten sich im Laufe der Jahre große Repositorys von Unix-Software, direkt auf dem Mac installierbar (suchen Sie nach Fink und Homebrew, wenn Sie interessiert sind), was auf die Einfachheit der Portierungsarbeiten zurückzuführen ist. Auf der anderen Seite hingegen entfernte sich Apple im Laufe der Zeit etwas von den Unix-Grundlagen, wie etwa dem Startsystem, dessen Mechanismen 2008 für mich als Unix-Kenner noch leicht nachvollziehbar waren, danach aber in ganz andere Richtungen entwickelt wurden.

… Pinguine …

Linux war schon immer hauptsächlich offen, aber zu Zeiten meiner eigenen ersten Gehversuche 1993 war das nicht überdeutlich sichtbar. Das Projekt Wine wurde ebenfalls im Jahr 1993 gestartet und versprach, Windows-Anwendungen auf Linux lauffähig zu machen. Genauer gesagt hielt man sich bei der Kompatibilität an POSIX-konforme Systeme, sodass auch BSD und OS X als Zielplattformen verwendet werden konnten. Gerade im Januar 2017 gab es eine neue stabile Version (2.0! – zwei Hauptversionen in 24 Jahren!), in der die Liste der unterstützten Anwendungen unter anderem um Microsoft Office 2013 erweitert werden konnte.

… und Fenster

Interessanterweise verwendete Wine von Beginn an einen Ansatz, bei dem keine Emulation im üblichen Sinne betrieben wird, sondern lediglich Systemaufrufe „übersetzt“ werden. Ein ähnlicher Weg wurde vor kurzem bei Microsoft gegangen, um das Windows Subsystem for Linux in Windows 10 zu integrieren. Diese Umgebung funktioniert ziemlich gut für Anwendungen, die keine grafische Oberfläche haben, und da das Subsystem auf der Linux-Distribution Ubuntu basiert, ist die Versorgung mit Linux-Software gewährleistet. In der Historie von Windows ist dies sicherlich der bisher interessanteste Schritt dieser Art, aber bei weitem nicht der erste. Leider waren die Versuche, Windows NT mithilfe des Microsoft POSIX Subsystem und der Windows Services für UNIX ähnlich weltoffen zu gestalten, nicht von langer Dauer und wurden zuletzt in 2004 vorangetrieben.

Egal, ob Sie das Windows Subsystem for Linux verwenden oder etwa die Umgebung aus dem Projekt Cygwin, die seit vielen Jahren Unix-Werkzeuge auf Windows verfügbar macht – Sie werden mit Paketen arbeiten. Verschiedene Linux-Distributionen setzen bereits seit Langem auf Pakete oder Verwaltungswerkzeuge wie apt, dpkg, pacman, yum und viele mehr. Auch auf dem Mac ist dieser Ansatz gängig, wie bereits erwähnt. Für Windows können Sie ein Tool namens Chocolatey verwenden, und mit Windows 10 hat Microsoft das Framework OneGet (in Windows selbst langweilig als PackageManagement tituliert) eingeführt. Innerhalb des Windows Subsystem for Linux sind apt und dpkg verfügbar, wie man sie vom zugrunde liegenden Ubuntu kennt.

Oder halt virtuell

Eine andere Technologie, die Betriebssystemen Bedeutung nimmt, ist Virtualisierung. Bereits Ende der 90er Jahre begann ich selbst, Entwicklung ausschließlich in virtuellen Maschinen zu betreiben. Damals war der Grund dafür, dass meine Firma Software für viele unterschiedliche Kunden entwickelte und pflegte. Als CTO musste ich immer wieder Hand an Projekte legen, in denen mit verschiedenen Entwicklungsumgebungen gearbeitet wurde. Das war auf echter Hardware sehr beschwerlich, und so setzte ich auf das gerade erschienene VMware. Damit war es möglich, vollständige Umgebungen in Images abzubilden, die gesichert, ausgetauscht und beliebig wieder in Betrieb genommen werden konnten.

Interessant ist dabei, dass auch in diesem Bereich Konvergenz stattfand. Wie sich herausstellte, funktionierte VMware im letzten Jahrtausend wesentlich performanter auf Linux-Maschinen als auf Windows, und einige der damals erzeugten Images liegen noch heute auf meinem Fileserver. VMware und diese Images habe ich seitdem auf Windows, Linux und MacOS eingesetzt und konnte jeweils problemlos mit den VMs arbeiten. Allerdings ist es heute auch möglich, die virtuellen Maschinen ohne großen Aufwand für andere VM-Systeme zu konvertieren. Mit VirtualBox gibt es einen großen plattformübergreifenden Konkurrenten, mit Parallels, Hyper-V, QEMU/KVM und anderen viele weitere spezifische Lösungen. Darüber hinaus gibt es virtuelle Maschinen heute überall, etwa auch in Cloud-Umgebungen, in denen online auf sie zugegriffen werden kann.

Dienste paketieren

Mit Docker gibt es seit einiger Zeit eine Möglichkeit für Plattformunabhängigkeit, die sich technisch von virtuellen Maschinen unterscheidet. Zumindest in den Ursprüngen von Docker ist das deutlich zu erkennen. Linux-basierte Images werden erzeugt, und wenn diese auf Linux ausgeführt werden, findet zwar Isolation, aber nicht im eigentlichen Sinne Virtualisierung statt. Daraus ergab sich die Möglichkeit, mithilfe von Docker Dienste zu starten, die vom Hostsystem weitgehend unabhängig sind, aber gleichzeitig zum Beispiel Netzwerkports des Hostsystems nutzen können. Das ist für Entwicklungszwecke praktisch, eröffnet aber auch den Weg zu flexiblen Hostinglösungen, in denen einzelne Docker Images oder gar große, automatisch skalierbare Netzwerke von Instanzen auf einfache Weise gestartet und verwaltet werden können. Moderne Cloud-Umgebungen unterstützen dies, sodass ein Deployment von Diensten, die als Docker Images erzeugt werden, mit wenigen Kommandos erreicht werden kann.

Wenn Docker Images auf anderen Plattformen als Linux laufen, findet wiederum eine Art Virtualisierung statt. Allerdings ist dieser Vorgang transparent, und die Kommandos, mit denen ein Docker Image auf einem Mac oder einem Windows-PC gestartet wird, sind meist dieselben wie auf Linux. In jedem Fall sind Docker Images wesentlich weniger umfangreich als solche für vollständige virtuelle Maschinen. Gerade kürzlich ist das neue LinuxKit angekündigt worden, mit dem sich Images noch schlanker gestalten lassen als bisher und damit auch für speicher- und leistungskritische Umgebungen wie etwa im Bereich von Embedded Systems verwendet werden können.

Das System Docker enthält auch die Möglichkeit, Images in öffentlichen oder privaten Repositorys zu registrieren, sodass sie auf anderen Hosts einfach verfügbar gemacht werden können. Auch in diesem Bereich erinnert der Umgang mit Fremd-Images wiederum an Pakete, die automatisch heruntergeladen und aktualisiert werden können.

Freie Software, mal ganz anders

Als letzten Aspekt der Konvergenz möchte ich noch die Anstrengung erwähnen, die Microsoft unternimmt, um seine Entwicklungs- und Ausführungsumgebungen für .NET auf andere Plattformen zu bringen. Die Themen .NET Core und Visual Studio Code benötigen an diesem Punkt keine langen Erläuterungen. Aber die Strategien, die Microsoft in diesem Zusammenhang verfolgt, bestätigen einmal mehr die Bedeutung der Plattformunabhängigkeit, oder umgekehrt, die schwindende Bedeutung einzelner Plattformen.

Wie bereits beschrieben, machte ich selbst bereits in den 90er Jahren den Schritt, mit Linux als Basissystem zu arbeiten, nachdem ich zuvor rein interessehalber mit Unix-Derivaten wie MiNT auf dem Atari ST oder BSD, SunOS und AIX auf Universitätssystemen gearbeitet hatte. Entwicklungsarbeit zu virtualisieren, war aus praktischen Gründen sehr sinnvoll, und es ergab sich für mich die Freiheit, für Produktivitätsanwendungen beliebige Entscheidungen treffen zu können, ohne die Zielsysteme von Kundenprojekten dabei berücksichtigen zu müssen. Später entschied ich mich, mit Macs zu arbeiten, was für einige Jahre eine tolle Kombination von Unix-Grundlagen und höchst professioneller Anwendersoftware darstellte.

Vor einigen Monaten habe ich wieder den Weg zurück zu Linux gefunden, das mir unter heutigen Umständen und angesichts der Produktphilosophie von Apple jetzt als die produktivste Plattform erscheint. Gewisse Werkzeuge wie zsh und Emacs verwende ich nun seit Jahrzehnten, und natürlich arbeite ich regelmäßig an Projekten für Windows in virtuellen Maschinen, die mich zum Teil auch schon seit langer Zeit begleiten. Ich finde diese Freiheit toll und sie wächst immer weiter. Es war noch nie so einfach wie heute, individuelle Präferenzen mit dem ausführlichen Blick über den Tellerrand zu kombinieren!

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -