Christian Seiler: Neuentwicklung der Forensoftware - Mitstreiter gesucht!

Beitrag lesen

Hallo allerseits!

Wie bereits viele hier wissen, setzen wir für die Foren bei SELFHTML die in C geschriebene Forensoftware "Classic Forum" ein. Diese wurde geschrieben, um die vorherige Perl-Software abzulösen, die auf den alten Servern nicht die nötige Performance brachte.

Leider geht die Entwicklung des Classic Forums im Moment nur sehr schleppend voran: Der Hauptentwickler hat die Entwicklung eingestellt und ich selbst habe nicht genügend Zeit, mich um die Software zu kümmern. Andere Mitstreiter, die tatsächlich etwas machen, finden sich kaum.

Als Haupteinstiegshürde wird von vielen Seiten immer wieder genannt, dass das Forum in C geschrieben ist. Dies ist ein Problem, weil C-Kenntnisse heutzutage leider Mangelware sind. Zudem hat C den Ruf, besonders unsicher zu sein, insbesondere was die Prolematik der "Buffer Overflows" angeht - dies schreckt viele Leute ab.

Außerdem haben wir selbst auch Bedenken bezüglich der Performance der aktuellen Software. Sie hat sehr gute Dienste geleistet beim Ablösen der vorherigen Perl-Software, allerdings müssen wir auch immer einen Blick in die Zukunft werfen und unserer Auffassung nach werden die Besucherzahlen von SELFHTML in den nächsten Jahren exorbitant steigen. Die immer häufigeren Abrufe der RSS-Feeds des Forums im Kielwasser des Web-2.0-Hypes tun ihr übriges.

Daher haben wir beschlossen, ein neues Projekt in Angriff zu nehmen: Die Neuentwicklung der Forensoftware. Die zu verwendende Sprache hat uns allerdings vor ein großes Problem gestellt. Wir haben uns letztendlich jedoch dazu durchringen können, die Software in Assemlber zu schreiben.

Warum Assemlber werden sich wohl manche Leser nun fragen. Hierfür gibt es mehrere Gründe:

1. Assembler ist schnell. Durch handoptimierten Code kann man eine Performance erreichen, von der man selbst mit C nur träumen würde. Außerdem kann handoptimierter Assembler-Code klein sein - und damit besser in die aktuellen Prozessorcaches passen, was nochmal einen drastischen Performanceschub liefert.

2. Assembler ist einfach: Im Gegensatz zu C, wo es extrem viele Syntaxkonstrukte mit diversen subtilen Eigenschaften gibt, kann man die Assembler-Konstrukte an einer Hand abzählen. Sicher, es gibt sehr viele unterschiedliche Anweisungen, aber viele Anweisungen sind im Prinzip vollkommen ähnlich.

3. Assembler wird von vielen Leuten gesprochen: Durch die steigende Popularität der Mikrocontroller in den letzten Jahren haben sich seitdem sehr viele Leute mit Assembler beschäftigt. Damit kann die Weiterentwicklung des Forums längerfristig gesichert werden.

Wir haben mit dem Projekt nun bereits angefangen, suchen aber noch Mitstreiter. Eine funktionierende Vorschauversion der Anzeige des Forums findet sich bereits unter http://forum.de.selfhtml.org/cgi-bin/asmfo_view. Allerdings kann man im Moment noch nicht selbst Postings absetzen, weil wir noch nicht dazu gekommen sind. Dies ist jedoch für die nächste Version geplant.

Bereits jetzt ist aber schon der deutliche Performanceschub der Assembler-Programmierung zu erkennen: Die Hauptseite des Assembler-Testforums wird etwa 10 Mal so schnell (!) ausgeliefert, wie die Hauptseite des aktuellen Forums.

Der Quelltext des Programms ist ebenfalls verfügbar:

http://forum.de.selfhtml.org/asmforum/asmfo_view.nasm

Wer den Code kompilieren will, der kann dies mittels YASM auf einer x86_64-Plattform unter einem 64bit-Linux tun (die mangelhafte Kompabilität ist das einzige Manko von Assembler, aber 64bit-Linux ist ja nun schon weit verbreitet und YASM ist OpenSource, weswegen wir da keine ernsthaften praktischen Probleme sehen). Folgende Befehle sind dazu ausreichend:

yasm -f elf64 -o asmfo_view.o asmfo_view.nasm
gcc -o asmfo_view asmfo_view.o

Wir werden im Laufe der nächsten Tage ein Subversion-Repository einrichten sowie dem Sourcecode ein Buildsystem verpassen. Wenn jemand Interesse an der Entwicklung hat, bitte bei der oben angegebenen E-Mail-Adresse melden.

Viele Grüße,
Christian Seiler
SELFHTML e.V.
Technische Leitung