[DE |
EN |
FR |
JA |
ES |
KO |
PT]
Willkommen zu einer neuen Ausgabe der Brave GNU World. Diesen Monat wird es nach der Vorstellung eines Klassikers relativ schnell technisch, allerdings steht zu hoffen, daß diese Ausgabe auch für weniger technische Leser interessant geraten ist.
Das GNU grep [5] Projekt hat mit Bernhard Rosenkraenzer einen neuen Maintainer erhalten, was zum Anlaß dienen soll, ein paar Zeilen über dieses Projekt zu schreiben.
Vermutlich ist der größte Teil der GNU/Linux Benutzer bereits mit GNU grep in Berührung gekommen, bzw. verwendet es täglich. Dennoch mag es Leute geben, denen das Projekt noch unbekannt ist, daher kurz ein paar Worte zu seiner Funktion.
Grep durchsucht Files oder aber die Standardeingabe nach bestimmten Mustern, üblicherweise Textstücken, und gibt Zeilen aus, die diesem Muster entsprechen bzw. es enthalten. Es ist auch möglich, dies über mehrere Files zu tun, um festzustellen, welche Files dieses Muster enthalten. Die Anwendungen reichen dabei vom Bearbeiten von Texten und Auffinden von Passagen bis zur Beschränkung der Ausgabe von anderen Programmen auf relevante Informationen.
Grep gehört mit Sicherheit zu den Standardkommandos eines unixartigen Systems und GNU grep implementiert neben den Standardfeatures z.B. auch noch rekursives Durchsuchen von Verzeichnissen oder eine rein wortbasierte Ausgabe.
Da es bereits seit vielen Jahren auf einer großen Zahl von Systemen im Einsatz ist, kann über seine Praxistauglichkeit kein Zweifel bestehen. Das präzise Alter des Projekts ist mir nicht bekannt, das ChangeLog jedoch geht zurück bis zum Jahr 1993, als die Release 2.0 herausgebracht wurde und der erste Copyright-Vermerk der FSF stammt aus dem Jahr 1988, also drei Jahre vor Beginn des Linux-Kernels. Interessant schien dieses Feature auch gerade weil es sich um ein so altes Projekt handelt, denn es zeigt, 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 Konformanz sowie einige neue Optionen geplant. Dazu zählen u.A. eine "--max-count" Option, ein Schalter für PCRE, also Perl-kompatible Regular Expressions oder eine Highlighting-Option für farbige Kennzeichnungen.
Auch ein so altes, gefestigtes und weit verbreitetes Paket benötigt Hilfe. So werden vor allem Benutzer gesucht, die willens sind, die Entwicklungsversion auf Portierbarkeit (andere Plattformen als GNU/Linux oder FreeBSD) und Fehlerfreiheit zu untersuchen. Da der augenblickliche Maintainer Englisch, Deutsch und Französisch spricht, kann er zudem nicht feststellen, ob der Multibyte-Support tatsächlich funktioniert.
Insofern seien vor allem Benutzer aus "Multibyte-Gebieten" dazu aufgefordert, sich hier zu beteiligen.
GNU UnRTF [6] ist ein neues GNU-Projekt von Zachary T Smith, mit dem sich Dokumente im Rich Text Format (RTF) in andere Formate transferieren lassen. RTF wird gerne 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, diese Texte in reinen Text, HTML, LaTeX und PostScript umzuwandeln. Zielgruppe sind demnach alle Nutzer, die selber mit RTF arbeiten oder aber auf Kommunikation mit RTF-Benutzern angewiesen sind.
Als Lizenz verwandte Zachary von Anfang an die GNU General Public License, allerdings kann es sein, daß der Eine oder die Andere dem Projekt bereits unter dem Namen "rtf2htm" begegnet sind, denn unter diesem Namen wurde es früher herausgegeben.
Baustellen sind augenblicklich die Routinen zur Umwandlung zwischen verschiedenen Zeichensätzen sowie die Ausgabe nach LaTeX. Außerdem wird geplant, in Zukunft noch mehr Zielformate zu unterstützen, einsatzfertig ist das Projekt jedoch auf jeden Fall schon heute.
Das QTreeMap Projekt [7] von Alexander Rawass implementiert "Treemaps" in einem Qt-Widget unter der GNU Lesser General Public License.
Sollen tiefe Hierarchien bzw. Bäume am Bildschirm dargestellt werden, so wird dies üblicherweise in Form von Strukturen gemacht, die per Mausklick aufgeklappt werden können. 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, welches 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 in proportionaler Abhängigkeit 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, welches die Hälfte seines Inhaltes ausmacht, beansprucht wiederum die Hälfte seiner Fläche usw. usf.
Treemaps bieten sich besonders an für Situationen, in denen größenbehaftete Hierarchien dargestellt werden sollen, wie z.B. Filesysteme, Netzwerkverkehr oder Inhalts-/Organisationsmanagement.
QTreeMap unterstützt die klassischen Treemaps, quadratische Treemaps und verschiedene Einfärbungen (u.a. aufgrund von Regular Expressions). Die erzeugten Treemaps können als XML geladen und gespeichert werden, auch das Speichern als Bitmap ist möglich.
Zu den speziellen Problemen zählen nach Ansicht des Autors die KDE-spezifischen Probleme sowie das Fehlen des "Cushion" Algorithmus, der in "SequoiaView", dem zu QTreeMap inspirierenden proprietären Programm, vorhanden ist, aber leider nicht implementiert werden konnte, da Alexander die mathematischen Zusammenhänge nicht herleiten konnte.
Geschrieben wurde QTreeMap in C++, nachdem Alexander erste Experimente mit den Algorithmen in Python machte. Seines Wissens gibt es noch zwei ähnliche Projekte, die aber beide auf Java zurückgreifen. Wie die Projekte KDirStat und KProf [9] beweisen, ist QTreeMap bereits einsatzbereit und sei daher interessierten Entwicklern zum Experimentieren empfohlen.
Erst seit kurzem ist Dap [10] ein offizieller Teil des GNU-Projektes. Dap, dessen Abkürzung "Data analysis & presentation" bedeutet, ist ein Projekt von Susan Bassein und wird von ihr unter der GNU General Public License herausgegeben.
Dap stellt grundlegende Funktionen zum Datenmanagement, der Analyse und grafischen Darstellung zur Verfügung, wie sie üblicherweise in der statistischen Beratung bzw. dem Unterricht verwandt werden. Außerdem ist es hilfreich dabei, Datensätze zu verwalten; Susan selber erstellt mit Dap die Zahlscheine ihrer Angestellten.
Dap ist in C geschrieben und Nutzer mit Erfahrung in C sollten nach dem Studium der Beispiele keinerlei Probleme mit dem Einstieg in Dap haben.
Da das GNU-Projekt mit "R" bereits über ein Statistik-Paket verfügte, besitzt es nach der Erweiterung um Dap nun zwei Ansätze. Während R objektorientiert ist, ist Dap prozedural aufgebaut. Anwender mit Erfahrung in dem proprietären Programm S oder S-plus werden also eher mit R zurechtkommen, frühere Anwender des proprietären SAS sollten sich bei Dap schnell zu Hause fühlen.
Weiterhin liest R das gesamte File zunächst in den Speicher, während Dap zeilenorientiert arbeitet und daher besonders für sehr große Datensätze geeignet ist.
Zu den Problemen von Dap zählt nach Susans Meinung, daß Dap über weniger statistische Tests als R verfügt und zudem nicht auf Geschwindigkeit optimiert wurde. Konsequenterweise ist die Erweiterung und Verbesserung der Funktionalität das Ziel der Weiterentwicklung.
Dennoch ist Dap bereits seit drei Jahren im praktischen Einsatz und damit ausreichend erprobt, ein Blick sei Interessenten also wärmstens empfohlen.
Die folgenden drei Projekte haben alle das Ziel, das GNUComm Metaprojekt [11] voranzubringen, bei dem das GNU-Projekt daran arbeitet, eine vollständige, flexible Kommunikationsumgebung auf Basis interoperativer Komponenten zu schaffen.
Auch Bayonne [12], der in Ausgabe 16 [13] vorgestellte "Telefonie Server" ist ein Teil des GNUComm Metaprojektes. Besonderer Wert wird bei GNUComm auf die Integration mit dem GNU Enterprise [14] Projekt gelegt. GNU Enterprise arbeitet an einer kompletten Lösung im Gebiet des sogenannten "Enterprise Resource Planning" (ERP) und wird damit Freie Software auch in diesen Bereich tragen; mehr Informationen hierzu können in Ausgabe 24 [15] der Brave GNU World gefunden werden.
Ziel des ccRTP [16] Projektes ist die Implementation der RFC Standards zum "Realtime Transport Protocol" (RTP), mit dessen Hilfe zeitabhängige Daten (z.B. Audio oder Video) über das Netz übertragen werden können.
Typischerweise wird dies mit Hilfe von UDP-Paketen getan, da bei ihnen Netzwerkprobleme die Übertragung nicht blockieren, was die Synchronizität zerstören würde. Die Streams werden also Paketweise übertragen, wobei die einzelnen Pakete Zeitinformationen enthalten, die die korrekte Zuordnung erlauben.
Implementiert wird dies bei ccRTP objektorientiert in einer C++ Klassenbibliothek, die der GNU General Public License untersteht. Die Autoren, David Sugar und Frederico Montesino Pouzols, möchten ccRTP zur vielseitigsten, performantesten und standardkonformsten RTP-Implementation überhaupt machen, wobei sie schon sehr weit gekommen sind.
GNU ccRTP unterstützt bereits multicasting sowie point-to-point Übertragung, multiple Input-Streams und das "Real-Time Control Protocol" (RTCP). Darüberhinaus ist die Umstellung auf IPV6 bereits vorbereitet und sogar Echtzeit-Paketfilterung sowie gemischte Datenströme sind möglich, was z.B. RFC 2833 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 kann also bereits für eigene Clients und Server eingesetzt werden.
Gearbeitet wird augenblicklich noch am "Resource ReSerVation Protocol" (RSVP) und auch der RTCP-Support ist noch nicht vollständig. Danach wird angestrebt, das Projekt angemessen zu dokumentieren, was bisher noch nicht geschehen ist.
Hilfe von Echtzeit-Spezialisten sowie gute Dokumentations-Autoren wären dabei sehr willkommen. Gerade Letztere sind schwerer zu finden, als allgemein angenommen wird.
Das ccAudio [17] Projekt wurde ebenfalls von David Sugar begonnen. Wie der Name suggeriert, geht es um eine "general purpose" Bibliothek zur Manipulation von Audio-Daten sowohl auf der Festplatte, wie auch im Speicher.
Wie auch ccRTP, ist ccAudio in Form einer C++ Klassenbibliothek unter der GNU General Public License implementiert und ist Teil des GNUComm Metaprojektes, denn es nahm seinen Anfang im GNU Bayonne-Projekt.
Augenblicklich unterstützt ccAudio den Zugriff auf Audio-Daten vom Filesystem über libsndfile sowie andere Bibliotheken und stellt grundlegende signal/audio processing Funktionen zur Verfügung. Darüberhinaus behandelt es Audiodaten in Form diskreter Samples und kann mit RIFF Headern u.Ä. umgehen.
Für besonders erwähnenswert hält David die Tatsache, daß es Daten als Sätze von Samples anstatt binärer Buffer im Byte-Format behandelt. Außerdem unterscheidet es zwischen den verschiedenen Sample-Kodierungsformaten, versteht Endian-Byteorder und mehrere Kanäle.
Als Plattformen für ccAudio stehen sowohl unixartige Systeme wie auch Win32 zur Verfügung, und Entwicklern von Applikationen aus diesem Bereich sei ein Blick auf ccAudio empfohlen.
Die weitere Entwicklung wird in Richtung auf einen besseren Support für dynamisch ladbare Software-Codecs gehen und außerdem sollen mittelfristig mehr Audio-Codecs zur Verfügung stehen. Unter Umständen werden auch Fourier-Transformation (FFT) sowie verschiedene Formen des Audio-Mischens/-Transformierens noch Teil von ccAudio. Hilfreich wäre dabei vor allem jemand mit größerer Erfahrung im audio/signal processing.
GNU ccScript [18] ist wie auch GNU Common C++, Bayonne, ccRTP und ccAudio ein Projekt unter Leitung von David Sugar, der damit zu einem "Penta-Maintainer" wird, wie er erfreut feststellte.
Aufgabe dieser C++ Klassenbibliothek unter der GPL ist die Bereitstellung einer Virtual Machine (VM) für Echtzeitanwendungen unter Berücksichtigung von Zuständen bzw. Zustandsänderungen. Diese Assembler-Skriptsprache wird von GNU Bayonne und anderen Teilen des GNUComm Projektes zum Skripten der Benutzerinteraktion verwandt.
Wie leicht verständlich ist, ist in Echtzeit-Umgebungen eine fest bestimmte Ausführungsgeschwindigkeit von großer Bedeutung und genau für diese Situationen wurde ccScript geschrieben. Bis auf Operationen, bei denen dies nicht möglich ist, wie z.B. Datenbankanfragen, sind alle Operationen in ccScript deterministisch. Daher kann es aber auch nicht mit komplexen oder unbestimmten Ausdrücken umgehen.
Auch wenn es allgemeine Funktionalitäten und Makros zur Verfügung stellt, sollte ccScript also nicht mit ähnlichen Projekten wie Guile oder Tcl verwechselt werden, da diese nicht über ausreichende Echtzeit-Unterstützung verfügen, dafür aber vielseitiger sind.
Als nächste Schritte ist eine Bereinigung der Syntax angedacht, um sie noch klarer zu machen. Außerdem sollen mehr Teile der Sprache in ladbare Pakete ausgegliedert werden. Hilfe wird vor allem dringend bei der Dokumentation benötigt, die sehr wichtig, aber bisher kaum vorhanden ist.
Damit genug für diesen Monat, ich möchte noch kurz darauf hinweisen, daß das "GNU Transport Layer Security Library" (GNUTLS) Projekt 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, dem bietet sich hier die Gelegenheit.
Natürlich bitte ich wie immer um zahlreiche Anregungen, Ideen, Kommentare, Kritik und neue Projekte an die übliche Adresse [1].
Please send FSF & GNU inquiries & questions to
gnu@gnu.org.
There are also other ways to contact the FSF.
Please send comments on Georg's Brave GNU World (in English or German) to
column@gnu.org,
send comments on these web pages to
webmasters@www.gnu.org,
send other questions to
gnu@gnu.org.
Copyright (C) 2001 Georg C. F. Greve
Permission is granted to make and distribute verbatim copies of this transcript as long as the copyright and this permission notice appear.
Last modified: Mon Dec 17 12:42:31 CET 2001