Aus Linux-Magazin 04/2001

Die monatliche GNU-Kolumne

Diese Kolumne berichtet über aktuelle Entwicklungen innerhalb des GNU Projektes und versucht, Einblicke in die zugrundeliegende Philosophie zu vermitteln. In dieser Ausgabe: GNU-Darwin, Get_file, GNU Global, HeaderBrowser, GNUTLS und GNU.FREE Georg C. F. Greve

Willkommen zu einer weiteren Ausgabe von Georg’s Brave GNU World. Diesen Monat macht ein Versuch den Anfang, GNU in die Apple-Welt zu tragen.

GNU-Darwin

Das GNU-Darwin [5] Projekt beschäftigt sich damit, das GNU-System nach Darwin [6] zu portieren, dem Kern des proprietären MacOS X. Darwin basiert auf FreeBSD und Mach 3.0 und läuft momentan auf PowerPC-Architekturen. Apple arbeitet jedoch auch an einer Portierung für die Intel-Architekturen.

Somit wird nach GNU/Linux und GNU/Hurd bald ein drittes GNU-basiertes System verfügbar sein.

Natürlich besteht der Sinn von GNU-Darwin nicht darin, die Nutzung von proprietärer Software zu fördern. Es soll vielmehr eine weitere Brücke zwischen Macintosh-Plattform und freier Software schaffen. Dem Anwender wird schnell klar werden, dass es für seinen Rechner mehr freie als proprietäre Software gibt.

Software, die auf GNU-Darwin entwickelt wurde, ist deutlich besser für die Interoperabilität mit MacOS X geeignet und kann daher freie Software stärker in die Macintosh-Welt hineintragen.

Die große Menge verfügbarer Unix-basierter freier Software sowie die einzigartigen Möglichkeiten für heterogene Strukturen und parallele Entwicklung sind schlagkräftige Argumente dafür, sich für GNU-Darwin anstatt MacOS X zu entscheiden.

Auf der anderen Seite bietet GNU-Darwin dem LinuxPPC-Projekt gegenüber etliche Vorteile, weshalb im Moment eine Benutzermigration zu GNU-Darwin beobachtet werden kann. Zunächst mal ist GNU-Darwin (wie auch GNU/Hurd) Microkernel-basiert und besitzt dadurch Fähigkeiten, die der Linux-Kernel nicht besitzt. Weiterhin wird der Hardware-Support für Darwin direkt von Apple gewährleistet und gefördert, da es auch die Basis für Mac OS X darstellt. Es ist hier also eine bessere Unterstützung zu erwarten.

Doch wie so oft gibt es auch hier ein leider relativ großes Problem: Obwohl die Beiträge des GNU-Darwin-Projektes der GNU General Public License unterstehen, ist Darwin selber von Apple unter der Apple Public Source License (APSL) herausgegeben worden.

Diese qualifizierte sich in Version 1.1 aus drei wichtigen Gründen [7] nicht als freie Software:

Zunächst einmal war untersagt Modifikationen für den Hausgebrauch zu machen, ohne diese öffentlich zu machen. Das Recht, Dinge nur für den persönlichen Gebrauch ändern zu können, hängt nach Verständnis des GNU-Projektes eng mit dem Recht auf Privatsphäre zusammen, weshalb die GNU General Public License dies bewusst zugesteht.

Zudem waren der Entwickler und auch nicht-wissenschaftliche Anwender einer modifizierten Version gezwungen, eine bestimmte Organisation – in diesem Fall Apple – zu informieren. Diese zentrale Kontrolle widerspricht dem Gedanken freier Software.

Und schließlich gab es eine Klausel, die es Apple erlaubt, die Lizenz zurückzuziehen sofern Copyright- oder Patentklagen gegen Apple eingereicht werden, was jeden Anwender auf dieser Welt abhängig von dem extrem problembehafteten US-Patentsystem macht.

In der im Januar 2001 herausgegebenen Version 1.2 der APSL ist ein großer Teil der Probleme gelöst worden. Die Möglichkeit, private Änderungen nicht veröffentlichen zu müssen, gibt es jedoch immer noch nicht, und die damit verbundene Missachtung der Privatsphäre auch besteht weiterhin.

Die APSL nähert sich schrittweise von der proprietären Seite der NPL an, die eindeutig eine freie Software-Lizenz ist, wenn sie auch eine vollständige Proprietarisierung des Codes duldet. Würde die APSL mit der NPL gleichziehen, so wäre das noch immer unschön, da sie auch dann noch inkompatibel mit der meist verwandten Lizenz für freie Software, der GPL, wäre.

Die Situation ist also durchaus mit dem Status von KDE vor wenigen Jahren vergleichbar. Auch hier geht es um ein sauberes Free-Software-Projekt, welches auf einem schwachen Fundament aufbaut und somit Gefahr läuft, durch juristische Probleme gekippt zu werden.

Daher setzt sich das GNU-Darwin-Projekt auch dafür ein, Darwin unter der GNU General Public License herauszugeben. Zu diesem Punkt bittet Michael L. Love, einer der Mitwirkenden, um Unterstützung aus der Community, da nach Verständnis der Entwickler GNU-Darwin erst dann wirklich frei ist, wenn Darwin der GPL untersteht.

Die technischen Aufgaben in nächster Zukunft umfassen die Portierung weiterer Pakete nach GNU-Darwin sowie die Erstellung einer CD-Distribution. Auf lange Sicht sollen dann die speziellen Fähigkeiten von GNU-Darwin für interessante Projekte verwandt werden.

Da das Team im Moment nur aus sechs aktiven Entwicklern besteht, bietet sich hier Interessierten ein weites Betätigungsfeld. Speziell Entwickler mit Erfahrung in Sachen Mozilla, SDL, Gnome und Audio-Support (ALSA) werden im Moment mit offenen Armen empfangen.

Damit komme ich zu einigen kleineren, aber dennoch sehr nützlichen Projekten.

Get_file

Von Daniel E. Singer stammt Get_file [8], ein einfacher, in Bourne Shell geschriebener Fileselector. Der Nutzen des Projekts ist jedem sofort ersichtlich, der einmal in eigenen Shell-Skripten eine Fileauswahl durch den Benutzer treffen lassen wollte. Dies ist sicherlich der Hauptzweck von Get_file und daher wird es normalerweise durch andere Skripte aufgerufen – es kann jedoch auch als Kommandozeilen-Werkzeug eingesetzt werden.

Da es komplett als Bash-Skript vorliegt, muss es nicht kompiliert werden und ist einfach anzupassen. Es verfügt zudem über die Möglichkeit, Escape-Sequenzen verschiedene Arten von realen oder selbsterstellten Objekten zuzuordnen, kann File-Modes ändern, Programme ausführen und mit Wildcards umgehen. Zudem besitzt es eine Online-Hilfe. Auch wenn es als Shellskript nicht sehr effizient ist, so dürfte dieses Projekt doch vor allem für “On the fly”-Lösungen durchaus seine Vorteile besitzen.

Auch Gimp läuft schon auf GNU-Darwin.

Auch Gimp läuft schon auf GNU-Darwin.

GNU Global

GNU Global [9] ist ein System zur übersichtlichen Verwaltung und Referenzierung von Sourcecodes, ein so genanntes “Source code tag system”. Geschrieben wurde es von Shigio Yamaguchi, der es unter der GNU General Public License veröffentlichte. Das machte es unkompliziert, es vor kurzem als offizielles GNU-Projekt aufzunehmen.

Große Mengen an “flachem” Sourcecode, der zudem über mehrere Verzeichnisse verteilt ist, neigen dazu, extrem unübersichtlich zu werden. GNU Global referenziert C-, C++-, Yacc- und Java-Sourcecodes, um sie dann über Shell-Kommandozeile, Less, Nvi, Elvis, Emacs oder über das Web als Referenzmaterial bereitzustellen. Dies erleichtert gerade bei großen Projekten die Übersicht und den Einstieg in die Entwicklung.

GNU Global verfügt bereits über eine durchaus beeindruckende Menge an Features. Es kann nicht nur Objekt-Definitionen, sondern auch Referenzierungen lokalisieren, durchsucht die Pfade von Bibliotheken, versteht POSIX Regular Expressions, besitzt ein kompaktes Format und vieles mehr. Doch existieren auch noch Probleme.

Das größte davon ist momentan, dass die Erkennung von Datentyp- und Makro-Definitionen noch nicht vollständig automatisiert funktioniert. Dies zu ändern ist das erste Ziel für die weitere Entwicklung. Daneben wird die Unterstützung weiterer Editoren und Sprachen angestrebt.

Da GNU Automake in der aktuellen CVS-Version nun auch über ein GTAGS-Target (das von GNU GLOBAL verwendete Tag-File-Format) verfügt, kann davon ausgegangen werden, dass die Verwendung von GNU GLOBAL in naher Zukunft sehr problemlos möglich sein wird.

In eine ähnliche Richtung bewegt sich auch das nächste Projekt, obwohl hier unterschiedliche Schwerpunkte gesetzt werden.

HeaderBrowser

Der HeaderBrowser [10] von Amaury Bouchard ist ebenfalls ein Projekt zur besseren Dokumentation von Sourcecode. Angelehnt ist es an den HeaderViewer von NeXT, den Amaury von Anfang an für sehr gelungen hielt. Daher entschied er sich, für Unix-basierte Systeme ein noch besseres, wenn auch daran angelehntes, Projekt zu implementieren.

Ähnlich wie auch GNU Global hebt der HeaderBrowser die “flache” Struktur des Sourcecodes auf und erzeugt eine navigierbare Dokumentation der API eines Programmes durch Verarbeitung der Header-Files. Der HeaderBrowser unterstützt dabei augenblicklich C und C++ als Sprachen und besitzt Ausgabeschnittstellen nach HTML, Texinfo, und Man-Pages.

Die Pläne für die Zukunft beinhalten auch eine alphabetische Navigation in den Funktionen. Als Lizenzen kommen für den HeaderBrowser ausschließlich die GNU General Public License (GPL) und seine Dokumentation, die GNU Free Documentation License (FDL) zur Anwendung. Das Programm ist also frei im besten Sinne.

GNUTLS

Bei GNUTLS [11] handelt es sich wieder um ein recht junges GNU Projekt. Ziel des Projekts ist die Implementation einer “Transport Layer Security” (TLS) Bibliothek unter der GPL, die Zugang zu den SSL 3.0 und TLS 1.0 Layers gewähren wird. Diese Bibliothek soll es Entwicklern ermöglichen, problemlos einen Security-Layer zu implementieren.

Augenblicklich ist GNUTLS der OpenSSL-Bibliothek noch unterlegen, weil letztere besser getestet und in der Praxis bereits bewährt ist. Allerdings ist GNUTLS vom Layout her Thread-Safe und hat ein deutlich einfacheres Interface. Zudem ist es gut, eine Implementation im GNU-Projekt zu haben, die eindeutig und ausdrücklich kompatibel mit der GNU General Public License ist.

Im Moment ist GNUTLS noch nicht für den echten Einsatz geeignet. Zunächst einmal fehlt noch ein ASN.1-Parser für x509-Zertifikate. Das wird sich bald ändern, denn der Autor, Nikos Mavroyanopoulos, arbeitet bereits daran.

Auch die im Internet-Draft “Wireless Extensions to TLS” spezifizierten Erweiterungen sollen implementiert werden und es wird Support für OpenPGP-Zertifikate angestrebt, etwas was bisher durch keine TLS-Implementation geleistet wird. Aus offensichtlichen Gründen basiert GNUTLS auf der Libgcrypt, die Teil des GNU Privacy Guard Projektes von Werner Koch ist, dessen Förderung durch die deutsche Regierung viel Aufmerksamkeit erregt hat.

Damit komme ich zu einem Projekt, das immense Bedeutung für jeden von uns hat.

GNU.FREE

Das “Free Referenda & Elections Electronically” (FREE) Projekt [12] wurde ebenfalls kürzlich offiziell ins GNU-Projekt aufgenommen. Es wurde ursprünglich von dem Informatik-Fachbereich der Universität Warwick in den USA gestartet und wird nun hauptsächlich von Jason Kitcat betreut. Bei dem Projekt geht es darum, ein sicheres und die Privatsphäre bewahrendes elektronisches Wahlsystem zu schaffen.

Das Projekt ist (inklusive Konzeption) zwei Jahre alt, was den unmittelbaren Verdacht ausräumt, es handele sich um eine Reaktion auf das Wahldebakel in Florida. Allerdings hat diese Wahl dazu geführt, dass die Prinzipien der Demokratie und die Fragen nach Stimmabgabe und Zählung wieder stärker ins Bewusstsein der Öffentlichkeit gerückt sind.

Nun gibt es zu E-Democracy viele unterschiedliche Meinungen und auch ich bin mir nicht sicher, ob es gut ist, ein noch unmittelbareres System zu etablieren, da es Demagogen noch mehr Handlungsfreiheit einräumt. Die Frage, ob Electronic Voting erstrebenswert ist, ist meiner Ansicht nach nicht ausreichend geklärt.

Dennoch sagt die Erfahrung, dass es vermutlich in absehbarer Zeit eine starke Entwicklung zu E-Democracy hin geben wird, und ich denke, wir können es uns nicht leisten, aufgrund von Zweifeln am Sinn dieser Entwicklung diese zu ignorieren.

Im üblichen System würde sich kaum jemand finden, der es für eine gute Idee hält, einer kommerziellen Firma die Durchführung der Wahlen zu übertragen. Der Wähler gibt seine Stimme in einer Filiale der Firma ab und irgendwann zu Hause erfährt er, wer nun die Regierung bildet, ohne dass die Möglichkeit bestünde, die Ergebnisse nachzuprüfen. Überträgt man dies auf das Internet mit seinen deutlich größeren Manipulationsmöglichkeiten, wird es von vielen jedoch nicht mehr als problematisch empfunden.

Diese Erfahrung musste ich machen, als ich Anfang Februar auf der Transmediale in Berlin an einem Panel zu “Social Software” teilnahm. Dort wurde ein dem obigen Beispiel entsprechendes Projekt freudig begrüßt.

Soziale Software muss freie Software sein – nur so sind die Menschenrechte auch in einer immer stärker digitalen Kultur gewährleistet. Unabhängig also von der persönlichen Einstellung zu E-Democracy und allen Bedenken ist es wichtig, dass GNU.FREE existiert.

GNU Global zeigt wie übersichtlich Quellcode sein kann.

GNU Global zeigt wie übersichtlich Quellcode sein kann.

Damit zurück zur Technik

Das System wurde bewusst so ausgelegt, dass es gut skaliert. Bei der Planung hat Jason an Demokratien in der Größe von Indien (die größte Demokratie der Welt) gedacht – mit seiner Hilfe können also Wahlen von Vereinsabstimmungen bis hin zu Wahlen des Europäischen Parlaments stattfinden.

Natürlich waren für die Entwicklung die Bewahrung des Wahlgeheimnisses und die Sicherheit oberste Prioritäten. Nach Jasons Einschätzung leistet GNU.FREE dies bereits sehr gut. Bei korrekter Konfiguration dürfte es in seinen Augen außer der physikalischen Zerstörung der Server durch Feuer oder ähnliche Katastrophen nur wenig geben, was der Wahl gefährlich werden könnte. Aber dies dürfte auch für papierbasierte Verfahren ein Problem darstellen.

Die Ansprüche sind sehr hoch gegriffen und dafür ist es ein recht kleines Projekt. Neben Jason haben noch Rajagopal C.V., Thomas Müller, Ceki Gulcu, Neil Ferguson und Paul Voller an GNU.FREE mitgearbeitet. Daher ist zahlreiche Hilfe vor allem bei der Sicherheitsüberprüfung und dem Testen erwünscht, erbeten und wichtig.

Die Erhöhung der Sicherheit durch weitere Schichten der Verschlüsselung und Bugfixes ist daher auch konstantes Ziel von GNU.FREE. Daneben wird auch daran gearbeitet, weitere Wahlsysteme zu implementieren, da bisher reines ein Verhältniswahlsystem angewandt wird.

bis dann…

So, das war’s für diesen Monat. Wie üblich bitte ich um zahlreiche Kommentare und Projektmeldungen an die übliche Adresse [1] ( tfr)

Infos

[1] Ideen, Anregungen, Kommentare an die Brave GNU World: column@brave-gnu-world.org

[2] Homepage des GNU-Projektes: http://www.gnu.org

[3] Homepage von Georg’s Brave GNU World: http://brave-gnu-world.org

[4] “We run GNU” Initiative: http://www.gnu.org/brave-gnu-world/rungnu/rungnu.de.html

[5] GNU-Darwin Homepage: http://gnu-darwin.org

[6] Apple Darwin Homepage: http://www.publicsource.apple.com/projects/darwin

[7] Warum die APSL keine freie Software-Lizenz ist: http://www.gnu.org/philosophy/apsl.html

[8] get_file FTP Adresse: ftp://ftp.cs.duke.edu/pub/des/scripts/get_file

[9] GNU GLOBAL Homepage: http://www.tamacom.com/global

[10] HeaderBrowser Homepage: http://www.headerbrowser.org

[11] GNUTLS Homepage: http://gnutls.hellug.gr

[12] GNU.FREE Homepage: http://www.thecouch.org/free

Der Autor

Georg C. F. Greve fasst seit Kernel 0.9 nur noch GNU/Linux an und ist mit dem Xlogmaster zum GNU-Projekt gekommen. Nachdem seine interdisziplinäre Physik/Informatik-Diplomarbeit in der Nanotechnologie nun beendet ist, gilt sein Hauptaugenmerk dem Aufbau der Free Software Foundation Europe, der offiziellen Schwesterorganisation der von Richard M. Stallman gegründeten FSF in den USA. Außerdem wird er sich wieder dem Schreiben von Code zuwenden können. E-Mails erreichen ihn unter greve@gnu.org.
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben