Linux-Magazin-Logo Die Zeitschrift für Linux-Professionals

Aktueller Überblick über freie Software und ihre Macher

Projekteküche

Martin Loschwitz

Ähnlich wie Köche arbeiten auch Software-Autoren an immer neuen Kreationen für die Benutzer. Wir picken die Leckerbissen heraus. Diesmal: Das Rennspiel Racer, Linux als Wireless Access Point, OpenBSD 3.4, Teamwork und Verfassungsänderung bei Debian. Für die Festtage gibt's leckere Plätzchen.

Abbildung 1: Der Ferrari Enzo ist eins von vielen Autos im Rennspiel Racer, der ersten frei verfügbaren Rennsimulation für Linux. Das Spiel ist um Autos und Rennstrecken erweiterbar. Eine große Auswahl gibt es beispielsweise bei der Racer-Xtreme-Gruppe unter [4].

What's cooking? Wir servieren diesmal ein Spiel für Autofreaks sowie Informationen zur Änderung der Debian-Verfassung. Außerdem schauen wir über den Tellerrand hinüber zur neuen Version von OpenBSD. Für die Gourmets gibt es weihnachtliche Mokkaplätzchen.

Racer

Die Rennsimulation Racer[1] ist in zweierlei Hinsicht etwas Besonderes: Sie läuft sowohl unter Windows als auch unter Linux und ist außerdem die erste frei verfügbare Simulation dieser Art für Linux überhaupt. Leider vertreibt der Autor die Applikation nicht unter einer freien Lizenz. Der Sourcecode steht zwar auf der Website zum Download bereit, der Autor weist aber explizit darauf hin, dass Racer kein Open-Source-Projekt ist. Die Lizenz ist sehr schwammig verfasst, wer Modifikationen am Sourcecode vornehmen will, sollte vorsichtshalber den Autor kontaktieren.

Auf der Homepage befinden sich einige Binärpakete zum Download, allerdings nur für Suse Linux 7.3 und NVidia-Karten. Daher ist es in den meisten Fällen notwendig, das Spiel aus den Sourcen zu kompilieren. Das ist nicht unproblematisch, weshalb es eine inoffizielle FAQ auf[2] sowie eine Troubleshooting-Seite gibt[3]. Eine Grafikkarte mit unterstützter Hardwarebeschleunigung ist Voraussetzung für Racer.

Nach dem Start des Programms wählt der Spieler zwischen dem einfachen Zeitfahren (im Einzelspieler-Modus) und dem Teamspiel übers Netzwerk. Beim Team-Modus gibt es die Möglichkeit, einem vorhandenen beizutreten oder ein eigenes zu eröffnen.

Ein besonderes Feature von Racer ist seine Erweiterbarkeit durch Themes: Auf der Website der Racer-Xtreme-Gruppe[4] finden sich viele neue Autos und Rennstrecken. Der Spieler wählt sie nach dem Download über die Menüpunkte »Select Track« und »Select Car« aus. Einige der Highlights sind zum Beispiel der Ferrari Enzo und der Opel Speedster. Außerdem sind unter den Rennstrecken die Formel-1-Kurse von Monaco und Silverstone zu finden.

Das Spiel wird - etwas ungewohnt - mit der Maus gesteuert. Das ist anfangs zwar umständlich, erlaubt nach einer gewissen Eingewöhnungszeit aber eine sehr präzise Steuerung des Autos. Wer seine Fahrkünste noch einmal auf Video bewundern will, wird sich über die Aufzeichnungsfunktion von Racer freuen. Die Videos werden standardmäßig nur temporär gespeichert. Ein Menüpunkt erlaubt es daher, sie auf Festplatte zu bannen. Dazu drückt der Fahrer während des Spiels die [F2]-Taste.

Racer hat leider noch einige Schwächen. Die Steuerung wirkt manchmal sehr hektisch, vor allem wenn man mit hohen Geschwindigkeiten unterwegs ist. Die Unfallszenen sind außerdem sehr dürftig: Fährt der Spieler gegen eine Wand, überschlägt sich das Auto, verschwindet von der Bildfläche - und das Spiel friert ein. Nur ein Neustart erweckt es wieder zum Leben.

Alles in allem ist Racer aber eine sehr gelungene Rennsimulation, mit der sich viele langweilige Nachmittage verkürzen lassen. Die kleinen Mängel fallen nur selten auf, viele Stunden unbeschwertes Spielen sind garantiert.

Host-AP

Wireless LAN ist eine komfortable Möglichkeit, zwei Computer miteinander zu verbinden. Erforderlich sind lediglich zwei WLAN-Karten, die dann im Ad-hoc-Modus direkt miteinander kommunizieren. Um jedoch mehr als zwei Rechner in einem WLAN zusammenzuschließen, empfiehlt sich die Anbindung über einen Access Point (AP).

Diese Geräte gibt es mittlerweile wie Sand am Meer. Sie haben aber meist fest montierte Antennen, die sich bei Defekten nicht austauschen lassen, und sind auch oft mit instabiler Firmware ausgestattet (eine Ausnahme ist die Firma Linksys, auf deren APs Linux läuft). Der Host-AP-Treiber für Linux[5] schafft hier Abhilfe. Mit ihm ist es möglich, einen PC als Access Point zu betreiben. Einzige Voraussetzung ist eine WLAN-Karte mit Prism-2-, Prism-2.5- oder Prism-3-Chipsatz.

Host-AP besteht aus mehreren Teilen: Die Gerätetreiber für PCMCIA- und PCI-Karten (»hostap_cs« und »hostap_pci«) übernehmen grundsätzlich dieselben Aufgaben wie die Treiber aus dem PCMCIA-CS-[6] oder Linux-WLAN-NG-Paket[7], sind aber für Host-AP optimiert. Der zweite Teil ist der »hostap«-Treiber. Das optionale Modul »hostap _wep« erweitert das System um WEP-Verschlüsselung. Nach dem Laden der Module stellt der Benutzer nur noch den Übertragungsmodus »hostap« ein.

Der Host-AP-Treiber arbeitet sowohl mit der PCMCIA-CS-Suite als auch mit der Kernel-internen PCMCIA-Struktur zusammen. Letztere Methode hat den Vorteil, dass Host-AP dann in den Kernel gepatcht werden kann, die entsprechenden Patches für die aktuelle Kernelversion befinden sich mit den Treibern im CVS-Zweig des Projekts.

Abbildung 2: Der Startbildschirm von Racer. Der Spieler hat die Wahl zwischen verschiedenen Spielmodi wie Zeitfahren und Netzwerkspiel. Außerdem gibt's eine große Auswahl an Autos und Strecken.

Neue OpenBSD-Release

Seit 1. November[8] ist die neue Version 3.4 des Betriebssystems OpenBSD auf den FTP-Servern[9] verfügbar. Das OpenBSD-Projekt stellt an sich selbst den Anspruch, ein möglichst sicheres Betriebssystem zu entwickeln. Seit der neuen Version ist das ELF-Binärformat auch auf x86-Rechnern Voreinstellung. ELF ersetzt damit »a.out«, das mittlerweile als völlig veraltet und insgesamt sehr problematisch gilt.

Mit dieser wichtigen Änderung kommt auch die »W^X«-Funktionalität auf die x86-PCs, die Buffer Overflows bereits im Kernel verhindern soll. Sie stellt sicher, dass Speicherstellen, die als beschreibbar gekennzeichnet sind, nicht gleichzeitig ausgeführt werden können. Auf diese Weise bleibt das System geschützt, auch wenn Programme laufen, die anfällig gegen Buffer Overflows sind. Der Standardcompiler von OpenBSD verfügt außerdem über Routinen, die häufig auftretende Programmierfehler beim Speicherhandling aufspüren.

OpenBSD 3.4 unterstützt das Lesen von NTFS-Partitionen, das Schreiben ist leider immer noch nicht möglich. Die Entwickler kämpfen hier mit dem gleichen Problem wie die Linux-Gemeinde: Microsoft rückt die Spezifikation dieses Dateisystems nicht heraus. Zwar gibt es für Linux bereits Schreib-Support, er ist jedoch als »DANGEROUS« gekennzeichnet. Im schlimmsten Fall zerstört eine Schreiboperation das gesamte Dateisystem.

Eine Reihe kleinerer Änderungen umfasst die Unterstützung von Privilege Separation im Syslogd und im X-Server. Die GNU-Tools wie »diff«, »grep« und »gzip« haben die Entwickler durch BSD-Pendants ersetzt, der Paketfilter »pf« wurde stark erweitert. Neu in OpenBSD ist das Programm Growfs, das Festplattenpartitionen vergrößert. Auch die Manpages des Systems haben die Entwickler gründlich überarbeitet.

Bei der Hardware-Unterstützung hat sich einiges getan: ATA-100-Support für Apple Powerbooks, experimentelle Unterstützung für Serial-ATA und ein Abgleich des USB-Systems mit dem von NetBSD sind einige Highlights. Zudem verträgt sich OpenBSD nun mit mehr SCSI-Controllern und Netzwerkkarten.

Einige Wochen vor dem Erscheinen von OpenBSD 3.4 entbrannte auf der [misc]-Mailingliste des Projekts eine Diskussion über einen Benchmark, den Felix von Leitner veröffentlicht hat[10]. Er testete dabei Linux, OpenBSD, FreeBSD und NetBSD auf ihre Skalierbarkeit bei gängigen Serveroperationen wie »socket()«, »bind()« und »fork()«. OpenBSD schnitt in fast allen Disziplinen mit Abstand am schlechtesten ab.

OpenBSD-Entwickler Ted Unangst versuchte die schlechten Ergebnisse zu erklären und hob hervor, dass die Programmierer weniger Wert auf Skalierbarkeit als viel mehr auf die Sicherheit des Systems legen. Mittlerweile haben sie trotzdem einige Patches in den Tree eingepflegt, die diverse Performanceprobleme beheben sollen.

Kurz nach der Release von Version 3.4 sorgte die Mail eines französischen Benutzers für Aufsehen. Er beteuerte, dass der Buchhändler, bei dem er OpenBSD 3.3 noch ohne Probleme hatte bestellen können, laut eigener Aussage Version 3.4 nicht mehr verkaufen dürfe. Der Grund dafür sei ein neues französisches Gesetz, das es verbietet, in Frankreich Software zu verkaufen, der keine französische Dokumentation beiliegt.

Trotz des extrem schlechten Abschneidens von OpenBSD in den Benchmarks ist das System bei vielen Benutzern und Programmierern sehr beliebt und bewährt sich vor allem bei sicherheitskritischen Anwendungen.

Abbildung 3: Am 1. November haben die OpenBSD-Entwickler Version 3.4 freigegeben. Leider bieten sie keine ISO-Images zum Download an. Wer OpenBSD auf CD haben will, muss das System bei einem Händler kaufen.

Änderung der Debian-Verfassung

Seit vielen Jahren schon plädieren immer wieder einige Debian-Entwickler dafür, den Non-free-Teil von Debian GNU/Linux aus der Distribution zu entfernen. Diesem Vorhaben steht allerdings der Debian Social Contract[11] im Weg, der »non-free« als festen Bestandteil des Projekts definiert. Um diesen Teil aus dem Archiv zu entfernen, müsste also der Social Contract geändert werden. Das verhinderte wiederum nach Meinung einiger Entwickler bis vor kurzem die Debian-Verfassung[12].

Paragraf 4.1.5 der Verfassung besagt, dass eine "nicht-technische" Dokumentation geändert werden darf. Die Entwickler konnten sich jedoch nicht darin einigen, ob der Abschnitt über das »non-free«-Verzeichnis im Social Contract nun technischer oder nicht-technischer Natur sei. Diese Unklarheit haben sie dem Paragrafen jetzt genommen. Sie stimmten in einer Wahl dafür, ihn so zu formulieren, dass es mit einer Dreiviertelmehrheit jetzt ausdrücklich möglich ist, sowohl den Social Contract als auch die Debian Free Software Guidelines (DFSG[13]) zu verändern. Der gesamte Änderungsprozess der Verfassung hat lediglich einen Monat gedauert.

Am 30. September schickte der Projektsekretär Manoj Srivastava drei Neufassungen des Paragrafen zur Diskussion an die [debian-devel-announce]-Mailingliste[14]. Die erste Fassung stammte von Srivastava selbst. Er führte darin eine Dokumentenklasse namens "Foundation Documents" ein, der auch Social Contract und Verfassung angehören. Diese Foundation Documents könnten die Entwickler mit einer Dreiviertelmehrheit ändern.

Der zweite Vorschlag stammte von Branden Robinson. Er regte an, in der Verfassung lediglich die schwammige Definition des nicht-technischen Dokuments zu präzisieren, sodass Änderungen am Social Contract möglich würden. Der dritte Vorschlag stammte ebenfalls von Branden Robinson. Er stimmte mit dem von Srivastava überein, bis auf die Tatsache, dass ausschließlich der Social Contract Teil der Foundation Documents würde, nicht aber die DFSG.

Die Entwicklergemeinde hatte vom 15. bis zum 29. Oktober Zeit, ihre Stimmen abzugeben. Mehr als 75 Prozent der Wähler stimmten für den ersten Vorschlag. Der Grundstein für eine Entfernung des Non-free-Zweigs aus dem Projekt ist damit gelegt.

Teamwork bei Debian

Viele Debian-Entwickler betreuen nur ein oder zwei Pakete. Bei kleinen Programmen ist der Arbeitsaufwand dementsprechend gering. Leider gibt es aber auch Entwickler, die alleine ganze Programmsuiten wie Gnome oder KDE betreuen müssen. Diese enthalten oftmals 25 bis 30 unterschiedliche Pakete, da die Debian-Entwickler versuchen, die großen Suiten in möglichst viele kleine Pakete aufzuteilen.

Für eine einzelne Person ist dieser Arbeitsaufwand kaum zu bewältigen, allein die Pflege der "Bug Tracking System"-Einträge ist extrem zeitintensiv. Außerdem muss der Entwickler auf Probleme mit verschiedenen Architekturen achten, immerhin unterstützt Debian elf Hardwareplattformen. Auch der Arbeitsaufwand für die Paketerstellung selbst ist sehr hoch: Bei einer neuen Release müssen sämtliche Pakete aktualisiert werden. Manchmal lassen sich die Debian-spezifischen Änderungen dabei zwar von der Vorgängerversion übernehmen, bei großen Programmpaketen ist das aber meist unmöglich. Die Lösung für dieses Problem ist einfach: Große Programmpakete sollten nicht von Einzelpersonen, sondern von Entwicklergruppen gepflegt werden.

Das ist bei einigen wichtigen Paketen in Debian bereits seit langer Zeit der Fall. Nachdem beispielsweise Ben Collins seinen Posten als Maintainer der GNU-Glibc-Pakete verließ, übernahm eine Entwicklergruppe die Pflege. Der GCC befindet sich in der Hand der Debian-GCC-Maintainer und seit einigen Wochen haben auch die KDE- und Gnome-Pakete Betreuergruppen. Chris Cheney, der bis dahin für alle KDE-Basispakete alleine verantwortlich war, übergab die Pflege an die Debian-QT/KDE-Maintainer. Die Debian-Gnome-Maintainer übernahmen zumindest teilweise die Gnome-Pakete.

Die nötige Infrastruktur liefert das Debian-Projekt den Entwicklergruppen auf [alioth.debian.org], dem Debian-Pendant zu Sourceforge. Es bietet den Gruppen eine Sourcecode-Verwaltung mit CVS und Subversion sowie Mechanismen zur Zugriffskontrolle, Mailinglisten und Projekt-eigene Webseiten. Die Verwaltung von großen Programmpaketen durch eine Gruppe ist sehr wichtig für das Debian-Projekt, denn nur so lassen sich Probleme angemessen lösen und Fehlerberichte ordentlich verwalten. Es bleibt daher zu hoffen, dass in Zukunft noch mehr Betreuer großer Pakete der Pflege durch eine Gruppe zustimmen, wenn sie merken, dass sie offensichtlich überlastet sind.

Weihnachtsbäckerei

Zur Weihnachtszeit gehört auch das entsprechende Gebäck. Da bleibt natürlich auch die Projekteküche nicht kalt. Mit dem Erscheinen dieses Hefts beginnt auf [15] ein Forum, in dem alle Leser die Möglichkeit haben, ihre Lieblingsrezepte vorzustellen. Die Redaktion wird das verlockendste auswählen und in der nächsten Projekteküche veröffentlichen. Wer es gar nicht erwarten kann, den Ofen anzuwerfen, bekommt mit den Mokkaplätzchen schon mal einen weihnachtlichen Vorgeschmack.

Mokkaplätzchen

Zutaten für den Teig: 100 g Mehl, 90 g Zucker, ein Päckchen Vanillezucker, eine Prise Salz, 60 g gemahlene Haselnüsse, zwei Esslöffel löslicher Kaffee, ein Ei, 125 g Margarine.

Zutaten für den Guss: 150 g Puderzucker, ein Esslöffel löslicher Kafee, Wasser zum Auflösen, Mokkabohnen aus Schokolade.

Mischen Sie zunächst alle Zutaten außer dem Kaffee zusammen, sodass ein Rührteig entsteht. Lösen Sie den Kaffee mit heißem Wasser in einer Tasse auf und rühren ihn ebenfalls unter den Teig. Benutzen Sie einen Teelöffel, um den Teig in kleinen Häufchen auf ein mit Backpapier ausgelegtes Backblech zu verteilen. Achten Sie darauf, dass die Häufchen nicht zu nahe aneinander liegen, da der Teig beim Backen zerläuft. Schieben Sie das Blech in einen bei 200¡C vorgeheizten Backofen und lassen es für 15 bis 20 Minuten darin.

Für den Guss lösen Sie ebenfalls Kaffee mit etwas heißem Wasser auf. Anschließend geben Sie den Puderzucker hinzu. Es entsteht ein dickflüssiger Zuckerguss, mit dem Sie die noch warmen Plätzchen von oben bepinseln. Schließlich eine Mokkabohne in die Mitte auf das Plätzchen setzen - fertig!

Wenn der Guss fest geworfen ist und die Plätzchen abgekühlt sind, empfiehlt es sich, sie in einer Blechdose trocken aufzubewahren, da sie sonst sehr schnell weich werden.

Das war's für dieses Jahr. Zuvor aber noch der obligatorische Aufruf: Wer ein Programm schätzt und es an dieser Stelle vorgestellt sehen möchte, schickt eine E-Mail an[16]. Bleibt mir noch, allen Lesern ein frohes Weihnachtsfest und einen guten Rutsch ins neue Jahr 2004 zu wünschen. (mwe)

Abbildung 4: Der Debian Social Contract ist eins der wichtigsten Dokumente für das Debian-Projekt. Vor kurzem legten die Entwickler den Grundstein für eine Änderung dieses Vertrags.

Infos

[1] Website der Rennsimulation Racer: [http://www.racer.nl/]

[2] Inoffizielle Racer-FAQ: [http://www.schuerkamp.de/racer_linux_faq.html]

[3] Racer Troubleshooting: [http://www.racer.nl/trouble.htm]

[4] Autos und Strecken für Racer: [http://www.racer-xtreme.com/]

[5] Linux als Wireless AP mit Host-AP: [http://hostap.epitest.fi/]

[6] Die PCMCIA-CS-Website: [http://pcmcia-cs.sourceforge.net/]

[7] Die Linux-WLAN-NG-Website: [http://www.linux-wlan.org/]

[8] Posting von Ted Unangst: [http://marc.theaimsgroup.com/?l=openbsd-misc&m=106755679117371

[9] OpenBSD 3.4: [ftp://ftp.de.openbsd.org/unix/OpenBSD/3.4]

[10] Felix von Leitners Benchmark: [http://bulk.fefe.de/scalability/]

[11] Debian Social Contract: [http://www.debian.org/social_contract]

[12] Verfassung des Debian-Projekts: [http://www.de.debian.org/devel/constitution]

[13] Debian Free Software Guidelines: [http://www.debian.org/social_contract.html#guidelines]

[14] Posting von Manoj Srivastava: [http://lists.debian.org/debian-devel-announce/2003/debian-devel-announce-200309/msg00014.html]

[15] Linux-Community-Webseite: [http://www.linux-community.de]

[16] Hinweise und Vorschläge: [projektekueche@linux-magazin.de]

Der Autor

Martin Loschwitz kommt aus Niederkrüchten und hilft in seiner Freizeit dabei, die Debian- GNU/Linux-Distribution weiterzuentwickeln. Gegenwärtig arbeitet er an dem Projekt für den Debian-Desktop mit.