Wie schön war die Zeit, als Fensterdekorationen noch eckig waren und keine Effekte und transparenten Hintergründe im Terminal von der eigentlichen Aufgabe ablenkten. GNUstep bietet all das – und feiert seinen 20. Geburtstag.
Bei GNUstep handelt es sich primär um eine Funktionsbibliothek für die Ausgabe auf dem Bildschirm, die auf dem X-Window-System aufsetzt. Daneben stellt es auch eine freie, plattformübergreifende und objektorientierte Programmierschnittstelle für Applikationen (API) dar. GNUstep [1] umfasst aber nicht nur die Interaktion über GUI-Fenster, sondern beherrscht auch die Anbindung von Remote Objects als Bestandteil sogenannter Enterprise Object Frameworks (EOF) und WebObjects. Diese Technologien stammen ursprünglich von NeXT [2], das Apple 1996 aufkaufte. GNUstep bietet eine vollständige, freie Implementierung namens GNUstep Database Library (GDL) [3], die über dieselbe Schnittstelle wie EOF verfügt. Die ersten Codezeilen von GNUstep wurden 1994 veröffentlicht, vier Jahre vor GTK+.
Das vergleichsweise überschaubare Entwicklerteam von GNUstep verfolgt das Ziel, eine freie, ausgefeilte und stabile Entwicklungsumgebung in Anlehnung an Cocoa zu erstellen und diese möglichst kompatibel zu halten. Cocoa und dessen Touchscreen-Variante Cocoa Touch dienen der Entwicklung von GUI-Programmen für Apple Mac OS X, den iPod und das iPad und haben ihren Ursprung im OpenStep-Standard [4] von NeXT und Sun Microsystems. Der wiederum spezifiziert eine objektorientierte Programmschnittstelle (API), die zwischen dem Kernel des Betriebssystems und den einzelnen Anwendungen vermittelt.
GNUstep umfasst heute ungefähr zwei Millionen Codezeilen (Abbildung 1), etwa zu gleichen Teilen in C und Objective-C geschrieben. Die Sprache Objective-C erweitert C um Elemente der objektorientierten Programmierung und nimmt dabei Anleihen an Smalltalk. Darüber hinaus bestehen mittlerweile von GNUstep aus auch Anbindungen zu Java, Ruby und Guile. Guile, ein Interpreter für den Lisp-Dialekt Scheme, fungiert als offizielle, werkzeugübergreifend nutzbare Sprache für die Erweiterungen des GNU-Projekts.
Gemessen auf der Basis des Constructive Cost Model stecken mittlerweile 535 Mannjahre Programmierleistung im GNUstep-Projekt. Der größte Entwicklungsschub erfolgte 2005 und 2006; viele Bugfixes, besonders für die 64-Bit-Plattformen, flossen 2014 ein. Die Analyseplattform Openhub betrachtet GNUstep inzwischen als ausgereift und ausgesprochen stabil.
Was kann GNUstep?
GNUstep schafft mit seinem Entwicklungsansatz die Voraussetzungen dafür, Programme ohne großen Aufwand auf andere Plattformen und Architekturen zu portieren. Damit offeriert das Projekt somit etwas Ähnliches wie GTK+ oder Wine – jedoch für Programme, die bis jetzt nur auf Apple-Plattformen laufen. Der Einsatz der großen Bibliothek aus einzelnen, wiederverwendbaren Softwarekomponenten ermöglicht Entwicklern, schnell anspruchsvolle Software zu bauen. GNUstep unterstützt derzeit GNU/Linux, NetBSD, OpenBSD, FreeBSD, Solaris, Darwin und Windows auf 32- und 64-Bit-PCs sowie ARM-Rechnern; Pakete für OpenSolaris befinden sich in der Validierung. Auf weniger leistungsfähige Geräte wie Mobiltelefone und Handhelds zielt ein Seitenast namens QuantumSTEP [5] ab.
Alle gängigen Linux-Distributionen führen GNUstep-Pakete samt Header-Dateien im Sortiment, um eigene Programme mit einer entsprechenden Anbindung zu entwickeln. Grundsätzlich lässt sich der Programmcode von GNUstep auf jeder POSIX-kompatiblen Unix-Plattform übersetzen, die über den GNU-C-Compiler GCC verfügt oder LLVM/Clang verwendet. Das GNUstep-Wiki [6] bietet eine ausführliche Dokumentation mit einer detaillierten Einführung in die API sowie die bestehenden Klassen.
Zu den zentralen Komponenten von GNUstep gehören das Foundation Kit und das Application Kit. Ersteres beinhaltet beispielsweise die Klassen für Zeichenketten, Zahlen, Arrays, Threads und Objekte. Beim Application Kit handelt es sich dagegen um eine Bibliothek für fensterbasierte, grafische Anwendungen. Es besteht wiederum aus den zwei Komponenten GNUstep GUI Library und GNUstep Backend. Letzteres realisiert ausschließlich das Ansteuern des Grafikdisplays.
The GNUstep Application Project
Der Kern des GNUstep-Projekts umfasst weder einen Desktop- noch einen Window-Manager. Dafür können Sie GNUstep problemlos mit Window Maker (siehe Kasten “Window Maker und GNUstep”), XFCE, GNOME oder KDE kombinieren. Dem modularen Prinzip folgend wurden die Arbeitsflächen- und Fensterverwaltung an andere Projekte delegiert, die auf den GNUstep-Bibliotheken aufbauen. Eine vollständige Übersicht zu den derzeit über einhundert Programmen pflegt das von Riccardo Mottola geleitete GNUstep Application Project [7]. Es verfolgt das Ziel, eine umfassende Zusammenstellung von Software mit Bindung an die GNUstep-Bibliotheken zu erreichen. Derzeit gibt es beispielsweise den PDF-Betrachter Vindaloo, das Adressbuch Addresses, das Kalenderprogramm SimpleAgenda (Abbildung 2), das Vektorzeichenprogramm Graphos, verschiedene Statusanzeigen (CPU-Last, Batteriestatus), einen FTP-Client, eine Uhr, den RSS-Reader Grr sowie diverse Spiele.
Über die Spezialanwendung DataBasin greifen Sie auf die gespeicherten Daten zu, die sich im cloudbasierten CRM Salesforce befinden. Auch die freie Groupware namens OpenGroupware sowie das ebenfalls freie, äußerst umfangreiche CRM IntarS aus Österreich binden die GNUstep-Bibliotheken ein. IntarS setzt dabei auf GNUstepWeb [8] und gibt sich so genügsam, dass für den Applikationsserver ein Raspberry Pi als Basismaschine ausreicht. Die Bedienung erfolgt ausschließlich über den Webbrowser.
Daneben finden Sie in der Zusammenstellung die komponentenbasierten Umgebungen Étoilé [9] und Backbone [10], zwei vollständige Desktop-Umgebungen mit klarer Linienführung und einheitlicher Bedienung aller GNUstep-Programme. Für beide Umgebungen stehen Schnappschüsse als vorgefertigtes Image für VirtualBox bereit, die einen guten ersten Einblick bieten (Abbildung 3).
Window Maker und GNUstep
Viele Anwender bringen Window Maker direkt mit GNUstep in Verbindung – es besteht jedoch kein direkter Zusammenhang über den Programmcode oder die Bibliotheken. Ganz im Gegenteil: Bei Window Maker handelt es sich um ein vollkommen eigenständiges Projekt, das ursprünglich nur zur Anbindung an GNUstep gedacht war. Derzeit nutzt es stattdessen lediglich dessen Symbol, stützt sich jedoch ansonsten auf vollkommen eigene Programm- und Grafikbibliotheken.
GNUstep im Praxiseinsatz
Fragt man GNUstep-Anwender nach den Vorteilen der Umgebung, fallen als Stichworte stets die vergleichsweise geringe Komplexität, die dadurch hohe Effizienz in der Benutzung, der überschaubare Ressourcenverbrauch sowie die Schlichtheit und Modularität der einzelnen Komponenten. In letzter Zeit gab es keine großen Änderungen an der API, sodass die bestehenden Programme weitestgehend unverändert benutzbar blieben. Das reduziert den Aufwand für die Weiterentwicklung und die Pflege von Software.
Besonders gefällt das auf das Wesentliche reduzierte Bedienkonzept, das sich auf dem Desktop häufig in der eingesetzten Kombination aus Window Maker und GNUstep zeigt. Die Programme verfügen über eine weitestgehend einheitliche Menüstruktur und klinken sich zudem ins Auswahlmenü ein. Auf den ersten Blick wirkt die Kombination ein wenig konservativ, lässt sich jedoch über Themes nach eigenem Gusto anpassen und funktioniert sehr stabil und zuverlässig auch auf älteren und schwachbrüstigen Rechnern.
Linux-Distributionen wie Debian, Ubuntu, Slackware, OpenSuse und Fedora führen Softwarepakete für GNUstep in ihrem Sortiment, sodass Sie diese bequem über die Paketverwaltung auswählen und installieren (siehe auch Kasten “Typische Stolperfallen”). Geht es Ihnen nur um den ersten Eindruck und das Ausprobieren, helfen Ihnen passende Images für VirtualBox weiter (Abbildung 4), wie das ALT Linux GNUstep Starter Kit [11] und das Live-Image von Window Maker [12].

Abbildung 4: GNUstep und Window Maker in der Virtualbox – hier handelt es sich um die Demo-VM von ALT Linux.
Verschiedene Organisationen und Unternehmen setzen GNUstep erfolgreich in Produktionsumgebungen ein und demonstrieren damit eindrücklich die Leistungsfähigkeit des Frameworks. Eine Übersicht dazu liefern die GNUstep Success Stories [13] und das GNUstep-Wiki unter dem Eintrag GNUstep in production [14]. Bei Brainstorm Mobile Solutions [15] beispielsweise arbeitet GNUstep Hand in Hand mit der relationalen Datenbank PostgreSQL und trägt so dazu bei, dass das Unternehmen bereits 4 Milliarden SMS an seine Kunden versenden konnte. Die Entwickler von Brainstorm trugen zudem konsequent zum Foundation Kit bei und verbesserten dessen Stabilität und Performance wesentlich.
Typische Stolperfallen
Beim Einrichten und Benutzen der GNUstep-Applikationen gibt es kleine Stolperfallen. So enden unter Debian und Ubuntu die Namen vieler GNUstep-Pakete auf .app, beispielsweise agenda.app (SimpleAgenda) oder zipper.app (Zipper), das Namensschema kommt aber nicht konsequent zum Zug. Erst mit ein wenig manueller Recherche über GAP und Aptitude finden Sie auch die restlichen Applikationen.
Unter Debian GNU/Linux, Ubuntu und Linux Mint fehlen für einige Pakete die Abhängigkeiten zum Paket gnustep-base-common. Hier ist es wichtig, zuerst GNUstep und erst danach die gewünschten Applikationen zu installieren. Möchten Sie nur einzelne Anwendungen ausprobieren, müssen Sie das Basispaket explizit hinterherschieben.
Viele GNUstep-Programme speichern Ihre Daten automatisch im Verzeichnis ~/GNUstep/, falls Sie nicht explizit einen anderen Ordner benennen. Das ist weder sofort offensichtlich noch immer der Fall. Ältere Programme legen Ihre Daten mitunter nicht als Text oder XML-Struktur ab, sondern – aus historischen Gründen – in einer binären Apple-Eigenschaften-Liste. Mit den Werkzeugen aus dem Paket libplist-utils wandeln Sie dieses Format beispielsweise in ASCII-Text um und bereiten die Daten so zur Weiterverarbeitung vor.
GNUstep auf Mobilgeräten
Golden Delicious Computers [16] setzt mit QuantumSTEP auf mobile Geräte und die häufig genutzte ARM-Plattform. Das schließt SBCs wie den Cubietruck mit ein, ebenso den Openmoko-Nachfolger GTA04, OpenPandora, den EeePC 701 und den Prototypen des Handhelds Pyra. QuantumSTEP gehört zu den technischen Vorreitern von Android und anderen Betriebssystemen für Smartphones und Handhelds, wird allerdings inzwischen von seinen “Kindern” stark in den Schatten gestellt.
Wie der QuantumSTEP-Maintainer Nikolaus Schaller nicht ohne Wehmut berichtet, wanderten viele Entwickler in Richtung iOS ab. “Die wollten alle Apps auf Apples App Store verkaufen (70 Prozent der Einnahmen). Das konnten wir nicht mal ansatzweise bieten.” Auf seiner Wunschliste steht daher, QuantumSTEP wieder mehr ins Blickfeld zu rücken und weiter voranzubringen, insbesondere auf ARM-Rechnern. Für Mitstreiter hat Schaller daher stets ein offenes Ohr.
Ausblick
Das GNUstep-Entwicklerteam trifft sich auf ausgewählten Linux-Veranstaltungen, so jedes Frühjahr auf der jährlichen FOSDEM in Brüssel und auf regionalen Events wie dem Alpenstep [17]. Da dieser Tage der 20. Geburtstag von GNUstep ansteht, gibt es in diesem Jahr ein besonderes Jubiläumstreffen. Es findet vom 23. bis 26. Oktober 2015 in Dublin statt. Weitere Informationen dazu erhalten Sie über die Webseite zum Event [18]. Wer zum Geburtstag in Dublin vorbeischaut, hat die seltene Gelegenheit, ein Stück von einem leckeren GNUstep-Jubiläumskuchen zu kosten – allein schon das sollte die Reise wert sein.
Im Moment arbeiten die Entwickler intensiv in den Bereichen WebKit und GORM. WebKit realisiert nicht zuletzt in webbasierten Applikationen die “responsive Programmierung”, über die sich die Darstellung dem jeweiligen Ausgabegerät und dessen Bildschirmgröße anpasst. GORM steht für Graphical Object Relationship Modeller und ermöglicht, eine komplette grafische Benutzeroberfläche zu entwickeln, ohne eine Zeile Programmcode schreiben zu müssen.
Aufgrund seiner Wurzeln im Apple-Umfeld integriert GNUstep auch Entwicklungen, die der Konzern aus Cupertino der Öffentlichkeit vorstellt, wie etwa die neue Programmiersprache Swift. Sobald Apple Swift als Open Source freigibt, wird das GNUstep-Projekt es unterstützen, ließ der GNUstep-Core-Developer Gregory Casamento bereits wissen. Nach mehr als zwei Jahren Entwicklungszeit hat zudem Jonathan Schleifer Mitte August 2015 ein großes Update seines Objective-C-Frameworks ObjFW veröffentlicht. Die Parallelentwicklung zu GNUstep bindet Server sowie kleinere Maschinen wie Nintendo DS und Wii mit ein.
Fazit
GNUstep zählt zu den wenigen Frameworks, mit denen Sie vollständig plattformübergreifend entwickeln und die versteckten Handschellen proprietärer Apple-Entwicklungsumgebungen hinter sich lassen können. Es erlaubt, Funktionen verstärkt auf Server auszulagern und so beispielsweise Spiele, die bis jetzt nur unter iOS laufen, für andere Plattformen zugänglich zu machen.
Obendrein erleichtert GNUstep Ihnen, Software auf Basis eines ethischen Ansatzes zu entwerfen. Dieser Idee hat sich Indie mit dem Projekt Heartbeat verschrieben, einer Kommunikationsplattform, die eine Privacy-orientierte Peer-to-Peer-Vernetzung ermöglichen möchte. Das Projekt befindet sich noch im Alpha-Stadium, erscheint aber bereits vielversprechend.
Danksagung
Die Autoren bedanken sich bei Wolfram Eifler und Nikolaus Schaller für deren Kritik und Anregungen im Vorfeld dieses Artikels.
Autoreninfo
Frank Hofmann (http://www.efho.de/) arbeitet in Berlin im Open-Source-Experten-Netzwerk Büro 2.0 als Dienstleister mit Spezialisierung auf Druck und Satz. Er ist Mitgründer des Schulungsunternehmens Wizards of FOSS und koordiniert seit 2008 das Regionaltreffen der LUGs aus der Region Berlin-Brandenburg.
Der gebürtige Kanadier Gerold Rupprecht wohnt seit 25 Jahren in Genf und hat sich auf Finanzsoftware sowie die Evaluierung und die Optimierung von IT-bezogenen Prozessabläufen spezialisiert. Er unterstützt das GNUstep-Projekt seit dem Jahr 2000, beispielsweise als Organisator auf der FOSDEM.
Glossar
-
EOF
-
Deutsch auch: Objektrelationale Abbildung. Dabei verwalten objektorientiert entwickelte Anwendungsprogramme ihre Objekte in einer relationalen Datenbank. Ähnliche Werkzeuge für andere Programmiersprachen sind Hibernate für Java, Doctrine für PHP sowie SQLAlchemy für Python.
-
Darwin
-
Apples freies Unix-Betriebssystem. Es bildet die unterste Schicht von Mac OS X.
-
LLVM
-
Low Level Virtual Machine. Eine modulare Compilerbau-Architektur mit eigenem Befehlssatz, die sich plattformunabhängig nutzen lässt.
Infos
[1] GNUstep-Projektseite: http://www.gnustep.org
[2] NeXT: https://de.wikipedia.org/wiki/NeXT
[3] GNUstep Database Library: http://www.gnustep.org/experience/GDL2.html
[4] OpenStep Specification (1994): http://www.gnustep.org/resources/OpenStepSpec/OpenStepSpec.html
[5] QuantumSTEP: http://www.quantum-step.com
[6] Entwicklerdokumentation im GNUstep Wiki: http://wiki.gnustep.org/index.php/Developer_Guides
[7] GNUstep Application Project: http://www.nongnu.org/gap/
[8] GNUstepWeb: http://www.gnustepweb.org
[9] Étoilé: http://etoileos.com/etoile/
[10] Backbone: http://www.nongnu.org/backbone/
[11] ALT Linux GNUstep Starter Kit: http://en.altlinux.org/Starterkits/gnustep
[12] Window Maker Live: http://wmlive.sourceforge.net/
[13] GNUstep Success Stories: http://wiki.gnustep.org/index.php/Success_Stories
[14] GNUstep in production: http://wiki.gnustep.org/index.php/GNUstep_in_production
[15] Brainstorm Mobile Solutions Ltd: http://brainstorm.co.uk/
[16] Golden Delicious Computers: http://www.goldelico.com
[17] Alpenstep: http://wiki.gnustep.org/index.php/European_GNUstep_Developer%27s_Meeting
[18] 20 Jahre GNUstep: https://badc0de.net/gs/2015/meetup/








