Open Source im professionellen Einsatz
Linux-Magazin 03/2003

Die monatliche GNU-Kolumne

Brave GNU World

Diese Kolumne berichtet über aktuelle Entwicklungen innerhalb des GNU-Projekts und versucht, Einblicke in die zugrunde liegende Philosophie zu vermitteln. In dieser Ausgabe geht's um Twin, die C++-Pakete: Yacc/Lex--, Readline--, Option--, Thread-- sowie um TUX&GNU@school und das 6. Rahmenprogramm der EU.

925

Willkommen zu einer weiteren Ausgabe der Brave GNU World, die in diesem Monat wieder etwas technischer ausfällt. Sind die Projekte auch vielleicht in erster Linie für Entwickler interessant, finden andere Leser hoffentlich zumindest Anregungen.

Twin

Abbildung 1: Twin stellt mehrere Fenster beziehungsweise Anwendungen auf reiner Textbasis dar, also ohne Speicher fressende X11- und Windowmanager-Umgebung.

Den Anfang macht Twin[5] von Massimiliano Ghilardi. Es handelt sich um eine Multi-Fenster-, Multi-Anwendungs-Umgebung auf Textbasis. Twin steht für Text Windows oder besser noch für "A textmode window environment". Das Projekt richtet sich an alle, die eine Umgebung mit mehreren Fenstern brauchen, aber nicht gleich alle Fähigkeiten von X11, und gerade dessen erheblichem Ressourcenbedarf aus dem Weg gehen wollen. In Kombination mit Links und einem Text-Mode-Webbrowser benötigt Twin nur etwa fünf Prozent der Ressourcen des Konqueror unter X11. Dabei laufen unter Twin alle Programme, die auch auf der Konsole oder in einem anderen Terminal einsetzbar sind.

In einer Zeit, in der sich immer neue Grafikkarten mit immer neuen Fähigkeiten überschlagen und das gestern noch Unbezahlbare schon morgen auf dem Grabbeltisch landet, scheint das Projekt zunächst anachronistisch zu sein. Wie aber schon zum Rule-Projekt in der letzten Ausgabe[6] angemerkt, sind die Ressourcen andernorts knapper. Dort setzen die Benutzer Hardware ein, die hierzulande als veraltet gilt.

Aber auch eine andere Gruppe kann von Twin profitieren: Blinde und Sehbehinderte. Auf Braille-Terminals angewiesen haben sie für grafische Benutzeroberflächen keine Verwendung. Mit Twin erhalten auch sie eine Umgebung mit mehreren Fenstern und Applikationen. Massimiliano berichtet über viel Feedback von dieser Seite. Dem Verfahren liegt folgender Ansatz zu Grunde: Ein Server (Twin) nimmt die Verbindungen von den Clients entgegen und erzeugt oder verändert Fenster nach deren Angaben. Außerdem verwaltet der Server dynamisch die verschiedenen Displays beziehungsweise Anzeigegeräte.

Twin unterstützt gegenwärtig die Konsole einschließlich Mausbedienung über »gpm« und jedes Termcap- oder Ncurses-kompatible Terminal (Mausunterstützung über das Xterm-Mausprotokoll). Ein X11-Server ist mit Hilfe eines einfachen X11-Treibers oder des grafisch angereicherten Gfx-Treibers zur Ausgabe ebenso einsetzbar wie ein weiterer Twin-Server auf einem anderen PC. Grundsätzlich wird auch das General Graphics Interface (GGI) unterstützt, zurzeit aber noch ohne Keyboard.

Zu den weiteren Komponenten der Umgebung gehören noch die Bibliotheken Libtw, Libtt und Libtutf. Während die Libtw die Kommunikation mit dem Server übernimmt, abstrahiert die Libtt (eine Toolkit-Bibliothek) die grafikorientierten Funktionen des Servers zu fenster- oder objektorientierten Funktionen. Die Libtutf ist eine Unicode-Bibliothek, mit der Texte aus und nach Unicode übersetzt werden können. Diese Aufgabe soll aber schon bald durch Standardbibliotheken erfüllt werden.

Auf der anderen Seite sind da noch die Clients. Es gibt nur wenige, von denen zwei bisher im Server integriert sind: der Fenstermanager, der über ein »~/ .twinrc«-Konfigurationsfile eingerichtet wird, sowie ein einfaches Terminal, das die Konsole emuliert. Weitere Clients sind ein zusätzlicher Terminal-Emulator (Twterm), ein Login-Manager ähnlich Xdm/Gdm/Kdm (Twdm), ein System-Monitor (Twsysmon), Utilities für das An- beziehungsweise Abmelden von Displays beim Server und mehrere kleine Clients, eher für Tests als zu produktiver Arbeit geeignet.

Das Projekt begann 1993 als DOS-Programm, die Multitasking-Probleme ließen es aber bald wieder einschlafen. Erst als Massimiliano 1999 auf GNU/Linux umstieg, kam wieder Leben in die Entwicklung. Twin ist vollständig in C geschrieben und benötigt nur wenig Speicher - normalerweise weniger als die Bash. Und natürlich ist Twin freie Software: Die GNU General Public License (GPL) gilt für Server und Clients, die GNU Lesser General Public License (LGPL) für die Bibliotheken.

In seiner recht knappen Freizeit möchte Massimiliano seine Toolkit-Bibliothek fertig stellen und dokumentieren, danach stärker Editoren, Taskbars, Filemanager, Webbrowser, E-Mail-Programme und TTY-basierte Programme daran anpassen. Er bittet um Hilfe, denn es gibt viel zu tun. Twin braucht Freiwillige für die Dokumentation der Kommunikations-Bibliothek, das Schreiben eines Libtw-Screensavers, die Fertigstellung von Twdialog, dem Twin-Äquivalent von Dialog, oder für die Arbeit an Twclip, einem Utility, um Clipboard-Inhalte zu kopieren und einzufügen.

Wer Interesse an der Mitarbeit hat, dem sei die Mailingliste empfohlen, Anwender finden Twin bereits im stabilen Zweig der Debian-Distribution.

C++-Pakete

Abbildung 2: Die C++-Packages sind eine Sammlung von Tools und Bibliotheken, die Christian Holm Christensen für andere C++-Entwickler unter der LGPL veröffentlicht hat.

Weiter geht es mit Projekten, die das Leben von C++-Entwicklern einfacher machen wollen und alle von Christian Holm Christensen um den 1. Dezember 2002 veröffentlicht wurden.[7]

Funktionen zur syntaktischen Prüfung und zum Lesen beziehungsweise Auswerten von Programmiersprachen oder Konfigurationsdateien werden leicht komplex. Änderungen an der Definition oder Grammatik einer Sprache verstärken das Problem noch. Hier greifen Werkzeuge, die die Übersetzung von grammatikalischen Definitionen in Funktionen, die diese Grammatik lesen können, automatisieren. Natürlich muss auch die Definition der Grammatik selbst wieder maschinenlesbar sein.

In der Informatik ist die Definition der kontextfreien Grammatik "Lookahead Left to Right Parsing" (LALR) üblich. Einer der besten und gebräuchlichsten LALR(1)-Parser ist Bison[8], das Yacc-Äquivalent des GNU-Projekts. Yacc steht dabei übrigens für Yet another compiler compiler. Bison ist mit Bedacht kompatibel zu Yacc gehalten, um den Umstieg zu erleichtern.

Hand in Hand mit Bison arbeitet häufig Flex[9]. Mit von Flex erzeugten Routinen kann eine Quelle in einzelne Ausdrücke zerlegt werden, denn es erlaubt die automatische Generierung von Sourcecode, mit dem in Texten nach Mustern gesucht wird (Pattern-Matching). Auch Flex ist das GNU-Gegenstück zu einem anderen Programm - in diesem Fall des bekannten Lex. Weitere Informationen für den Einstieg in das Thema finden sich im Web.[10]

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Brave GNU World

    Diese Kolumne berichtet über aktuelle Entwicklungen innerhalb des GNU Projekts und versucht, Einblicke in die zugrunde liegende Philosophie zu vermitteln. In dieser Ausgabe: Preview-Latex, Lire, GNU Source Highlight, Ksrc2html, freie Software in Asien.

  • Brave GNU World

    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

  • Brave GNU World

    Diese Kolumne berichtet über aktuelle Entwicklungen innerhalb des GNU-Projekts und versucht, Einblicke in die zugrunde liegende Philosophie zu vermitteln. In dieser Ausgabe: Gambas, Minkowsky, GNUnet, Webminstats, Cook, Lin Compta, freie Software für Europa.

  • Brave GNU World

    Diese Kolumne berichtet aus der Perspektive von GNU-Projekt und FSF über Aktionen und aktuelle Geschehnisse im Umfeld freier Software. Diese Ausgabe wirft einen Blick hinter die Kulissen der FSFE-Hauptversammlung und auf die Entwicklungen innerhalb der FSFE im vergangenen Jahr.

  • Brave GNU World

    Diese Kolumne berichtet über aktuelle Entwicklungen innerhalb des GNU-Projekts und versucht, Einblicke in die zugrunde liegende Philosophie zu vermitteln. In dieser Ausgabe: Nethack - Falcon's Eye, Vega Strike, GNU Scientific Library, GNU Gama, GNU Indent und "Wir sprechen von freier Software".

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.