Diese Kolumne berichtet über aktuelle Entwicklungen innerhalb des GNU-Projekts und versucht, Einblicke in die zugrunde liegende Philosophie zu vermitteln. In dieser Ausgabe: GNU Grep, GNU UnRTF, QTreemap, Dap, GNUComm, GNU ccRTP, ccAudio, ccScript.
Willkommen zu einer neuen Ausgabe der Brave GNU World. In diesem Monat wird es nach der Vorstellung eines Klassikers und eines nützlichen Konvertierungswerkzeugs für Formate aus der Windows-Welt relativ schnell technisch, allerdings bleibt trotzdem die Hoffnung, dass diese Ausgabe auch für weniger technisch orientierte Leser interessant geraten ist.
Lebendiger Klassiker
Das GNU-Grep-Projekt[5] hat mit Bernhard Rosenkraenzer einen neuen Maintainer erhalten. Vermutlich ist der größte Teil der GNU/Linux-Benutzer bereits mit GNU Grep in Berührung gekommen. Grep durchsucht Files oder auch die Standardeingabe nach bestimmten Mustern, üblicherweise sind das Textstücke, und gibt Zeilen aus, die dieses Muster enthalten. Typische Anwendungen sind das Durchsuchen und Bearbeiten von Texten und die Beschränkung der Ausgabe anderer Programmen auf relevante Informationen.
GNU Grep implementiert neben den Standardfeatures auch Extras wie rekursives Durchsuchen von Verzeichnissen oder eine wortbasierte Ausgabe. Da es bereits seit vielen Jahren auf einer großen Zahl von Systemen im Einsatz ist, kann über seine Praxistauglichkeit kein Zweifel mehr bestehen. Das präzise Alter des Projekts ist mir zwar nicht bekannt, das Change-Log jedoch geht zurück bis auf die Release 2.0 aus dem Jahr 1983. Der erste Copyright-Vermerk der FSF stammt aus dem Jahr 1988, also rund drei Jahre vor dem Beginn des Linux-Kernels. Bei GNU Grep zeigt sich, wie lebendig freie Software auch noch in solch hohem Alter ist.
Mittlerweile haben über 80 Leute an GNU Grep mitgearbeitet und die Entwicklung steht noch immer nicht still. So sind beispielsweise kleine Änderungen zur vollständigen POSIX.2-Konformität sowie einige neue Optionen geplant. Dazu zählen eine »–max-count«-Option, ein Schalter für Perl-kompatible reguläre Ausdrücke (PCRE) oder eine Highlighting-Option für farbige Kennzeichnungen.
Auch ein so altes, gefestigtes und weit verbreitetes Paket benötigt Hilfe, vor allem beim Test der Portierungen auf andere PLattformen als GNU/Linux und FreeBSD und beim Suchen von Bugs und dem Überprüfen des Mulitbyte-Supports.

Abbildung 1: Die Darstellung von Verzeichnisstrukturen als Flächen mit QTreemap ist zunächst ungewohnt. Der Vorteil: Die Größeninformationen sind ebenfalls darstellbar.
Formatumwandlungen mit GNU UnRTF
GNU UnRTF[6] ist ein neues GNU-Projekt von Zachary T Smith, das Dokumente im Rich-Text-Format (RTF) in andere Formate transferiert. RTF wird gern als Transferformat von Windows-Nutzern eingesetzt, aber auch andere Textprozessoren verwenden es, um Texte mit Formatinformationen zu speichern.
Dank dieses Projekts ist es möglich, solche Texte in reinen Text, HTML, Latex und Postscript umzuwandeln. Als Lizenz verwandte Zachary von Anfang an die GNU General Public License, allerdings kann es sein, dass der eine oder andere dem Projekt bereits unter seinem früheren Namen »rtf2htm« begegnet ist. Baustellen sind augenblicklich die Routinen zur Umwandlung zwischen verschiedenen Zeichensätzen sowie die Ausgabe nach Latex. In Zukunft sollen auch noch mehr Zielformate unterstützt werden. Einsatzfertig ist das Projekt jedoch auf jeden Fall schon heute.
QTreemap macht Strukturen sichtbar
Das QTreemap-Projekt[7] von Alexander Rawass implementiert Treemaps in einem Qt-Widget unter der GNU Lesser General Public License. Tiefe Hierarchien oder Bäume werden üblicherweise als Strukturen dargestellt, die per Mausklick aufgeklappbar sind. Treemaps sind im Gegensatz dazu eine Möglichkeit, Hierarchien vollständig auf einen Blick zu präsentieren.
Da sich das Prinzip leichter anhand eines Beispiels erschließt, sei es mit Hilfe von KDirstat [8] erläutert, das sich QTreemaps bedient, um die Festplattennutzung zu visualisieren. Treemaps werden in rechteckigen Gebieten dargestellt, wobei die gesamte Fläche der Gesamtgröße der zu visualisierenden Partition entspricht. Verzeichnisse und Files erhalten anteilige Flächen proportional zu ihrer Größe. Ein Verzeichnisbaum, der ein Drittel des verfügbaren Plattenplatzes einnähme, erhielte also ein Drittel der verfügbaren Darstellungsfläche. Ein Unterverzeichnis dieses Baums, das die Hälfte seines Inhaltes ausmacht, beansprucht wiederum die Hälfte seiner Fläche und so weiter.
Treemaps bieten sich besonders für Situationen an, in denen die Größe der einzelnen Elemente wichtig ist, zum Beispiel für Dateisysteme, Netzwerkverkehr oder Inhalts- und Organisationsmanagement. QTreemap unterstützt die klassischen Treemaps, quadratische Treemaps und farbige Markierungen, deren Auswahlmuster auch mit regulären Ausdrücken festgelegt werden kann.
Die erzeugten Treemaps lassen sich als XML laden und speichern, aber auch als Bitmap ablegen. Zu den speziellen Problemen zählen nach Ansicht des Autors die KDE-spezifischen Schwierigkeiten sowie das Fehlen des Cushion-Algorithmus, der in Sequoia View, dem zu QTreemap inspirierenden proprietären Programm, vorhanden ist, aber leider nicht implementiert werden konnte.
Statistik mit Dap
Das Statistik-Paket Dap[10] ist erst seit kurzem ein offizieller Teil des GNU-Projekts. Dap steht für Data analysis and presentation; seine Entwicklerin – Susan Bassein – gibt es unter der GNU General Public License heraus. Dap stellt grundlegende Funktionen zum Datenmanagement, zur Analyse und grafischen Darstellung zur Verfügung, wie sie üblicherweise in der statistischen Beratung, Datenauswertung und im Unterricht verwandt werden. Außerdem ist es hilfreich dabei, Datensätze zu verwalten. Susan selbst erstellt mit Dap die Zahlscheine ihrer Angestellten. Dap ist in C geschrieben und Nutzer mit Erfahrung in C sollten nach dem Studium der Beispiele daher keinerlei Probleme mit dem Einstieg in Dap haben.
Da das GNU-Projekt mit dem Programm R bereits über ein Statistik-Paket verfügt, gibt es jetzt also einen zweiten Ansatz. Der wichtigste Unterschied: R ist objektorientiert, Dap hingegen prozedural aufgebaut. Wer Erfahrung mit den verbreiteten proprietären Programmen S oder S-plus hat, wird also eher mit R zurechtkommen, Kenner des proprietären SAS sollten sich bei Dap schneller zu Hause fühlen. Für sehr große Datensätze ist Dap zudem etwas besser geignet, da es zeilenorientiert arbeitet. R hingegen liest komplette Dateien auf einmal in den Speicher.
Unzufrieden ist Susan damit, dass Dap über weniger statistische Tests als R verfügt und zudem nicht auf Geschwindigkeit optimiert ist. Konsequenterweise will sie diese Aufgaben als Nächstes angehen. Dap ist jedoch bereits seit drei Jahren im praktischen Einsatz und damit ausreichend erprobt, Statistikern mit wenig Lust auf Objektorientierung sei Dap wärmstens empfohlen.
Metaprojekt GNUComm
Das GNUComm-Metaprojekt[11] will eine vollständige, flexible Kommunikationsumgebung auf Basis interoperativer Komponenten herstellen. Auch Bayonne[12], der in Ausgabe 16[13] vorgestellte Telefonie-Server, ist ein Teil des GNUComm-Metaprojekts. Besonderer Wert wird bei GNUComm auf die Integration mit dem GNU-Enterprise-Projekt[14] gelegt. GNU Enterprise soll eine Komplettlösung für Enterprise Resource Planning (ERP) werden und damit freie Software auch in diesen Bereich tragen; nähere Informationen dazu waren bereits in der Ausgabe 24[15] der Brave GNU World zu finden. Die folgenden drei Projekte haben alle das Ziel, das Metaprojekt GNUComm voranzubringen.
GNU ccRTP
Das ccRTP-Projekt[16] implementiert den RFC-Standard des Real-Time Transport Protocol (RTP) zur Übertragung zeitabhängiger Daten (Audio oder Video) über das Netz. Typischerweise geschieht das mit Hilfe von UDP-Paketen. Die Streams werden paketweise übertragen, wobei die einzelnen Pakete Zeitinformationen enthalten, um sie korrekt zuzuordnen. Implementiert wird dies bei ccRTP objektorientiert in einer C++- Klassenbibliothek unter der GPL. Die Autoren, David Sugar und Frederico Montesino Pouzols, möchten ccRTP zur vielseitigsten, performantesten und dem Standard am besten entsprechenden RTP-Implementation machen.
GNU ccRTP unterstützt bereits jetzt Multicasting sowie Point-to-Point-Übertragung, multiple Input-Streams und das Real-Time Control Protocol (RTCP). Die Umstellung auf IPV6 ist vorbereitet und sogar Echtzeit-Paketfilterung sowie gemischte Datenströme sind möglich, was RFC2833-Signalisierung innerhalb eines Datenstroms erlaubt. Auch die für Video benötigten hohen Übertragungsraten sowie teilweise Paketrekonstruktion oder Class-of-Service-Routing sind möglich; die Bibliothek ist also bereits für eigene Clients und Server einsetzbar.
In Arbeit sind das Resource Reservation Protocol (RSVP) und der RTCP-Support. Danach soll das Projekt angemessen dokumentiert werden. Hilfe von Echtzeit-Spezialisten sowie gute Dokumentations-Autoren sind sehr willkommen.
Verarbeitung von Audiosignalen
Das ccAudio-Projekt[17] wurde ebenfalls von David Sugar begonnen. Wie der Name suggeriert, geht es um eine Allzweck-Bibliothek zur Manipulation von Audiodaten. Wie auch ccRTP, hat ccAudio die Form einer C++-Klassenbibliothek unter der GPL. Zurzeit unterstützt ccAudio den Zugriff auf Audiodaten vom Filesystem über Libsndfile sowie andere Bibliotheken und stellt grundlegende Funktionen zur Verarbeitung von Audiosignalen bereit. Es behandelt Audiodaten als diskrete Samples und kann mit RIFF-Headern umgehen, unterscheidet zwischen verschiedenen Kodierungsformaten, versteht Endian-Byteorder und mehrere Kanäle. Es läuft auf Unix-artigen Systeme und Win32.
Künftig sollen dynamisch ladbare Software-Codecs besser unterstützt werden und mehr Audio-Codecs zur Verfügung stehen. Unter Umständen kommen noch Fourier-Transformation (FFT) sowie verschiedene Formen des Audio-Mischens und -Transformierens hinzu. Hilfreich wäre vor allem jemand mit größerer Erfahrung im Audio-/Signal-Processing.
Echtzeitskripting für GNUComm
Das ccScript-Projekt [18] wird von GNU Bayonne und anderen GNUComm-Teilen zum Skripten der Benutzerinteraktion verwandt. Es ist – wie auch GNU Common C++, ccRTP und ccAudio und Bayonne selbst – ein Projekt unter Leitung von David Sugar, der damit zu einem Penta-Maintainer wird, wie er erfreut feststellte. Gewissermaßen ist ccScript Assembler-Skriptsprache in Form einer C++-Klassenbibliothek, es garantiert eine genau festgelegte Ausführungsgeschwindigkeit.
Letztlich handelt es sich um eine Virtual Machine (VM) für Echtzeitanwendungen unter Berücksichtigung von Zuständen und Zustandsänderungen. Bis auf Operationen, bei denen dies nicht möglich ist, etwa Datenbankanfragen, sind alle Operationen in ccScript deterministisch. Daher kann es nicht mit komplexen oder unbestimmten Ausdrücken umgehen.
Als Nächstes ist eine Vereinfachung der Syntax geplant. Außerdem sollen mehr Teile der Sprache in ladbare Pakete ausgegliedert werden. Dringend gesucht ist wieder Hilfe bei der Dokumentation, die bisher kaum vorhanden ist.
Und zum Schluss: Logos gefragt
Zum Schluss noch der Hinweis, dass das GNUTLS-Projekt (GNU Transport Layer Security Library) nach einem neuen Logo sucht und dafür den “GNUTLS Logo Contest”[19] ausgerufen hat. Wer sich also mit einem Logo im GNU-Projekt verewigen möchte, hat hier die Gelegenheit.
Natürlich bitte ich wie immer um Anregungen, Ideen, Kommentare, Kritik und Informationen über neue Projekte an die übliche Adresse[1]. (uwo)
Der Autor |
|
Dipl.-Phys. Georg C. F. Greve beschäftigt sich seit etlichen Jahren mit freier Software und kam früh zu GNU/Linux. Nach Mitarbeit im GNU-Projekt und seiner Aktivität als dessen europäischer Sprecher hat er die Free Software Foundation Europe initiiert, deren Präsident er nun ist. Mehr Informationen finden sich unter [http://gnuhh.org]. |








