Hintergrund der Ausschreibung

Im Frühjahr diesen Jahres hat der Deutsche Bundestag die Erstellung einer neuen Online-Petitions-Website ausgeschrieben („Softwareprojekt Öffentliche Petition“). Den Bürgern soll damit die Möglichkeit gegeben werden, online Eingaben an das Parlament bzw. den Petitionsausschuss zu richten. Zuvor gab es einen Pilotversuch in Zusammenarbeit mit dem schottischen Parlament und der Napier Universität Edinburgh, der in diesem Jahr auslief.

Die Ausschreibung legte Wert auf gute Bedienbarkeit der Endanwendung, Qualitätssicherung, saubere Dokumentation, Performance, Sicherheit, flexibles Design mit Trennung von Code und Repräsentation, Barrierefreiheit sowie die Verwendung von Komponenten, für die keine zusätzlichen Lizenzkosten nötig sind (richtig: es geht hier nicht um den Gedanken Freier Software, sondern nur um die Kosten). Das Ergebnis sollte ursprünglich zum 1. Oktober vorliegen und wurde am 13. und 14. Oktober in Betrieb genommen. Vor der Umsetzung musste der Auftragnehmer (also der Bieter, der den Zuschlag erhalten hat) ein „abnahmefähiges Pflichtenheft auf Basis des [vorgegebenen] Lastenheftes“ erstellen. Vor der endgültigen Beauftragung war die Abnahme des Pflichtenheftes vorgesehen.

Ein Angebot musste aus drei Teilen bestehen: Festpreis für das Pflichtenheft, Festpreis für die Umsetzung und ein fester Stundensatz für die Pflege über die nächsten 48 Monate, begrenzt auf insgesamt 66 Tage. Zusätzlich musste ein Fragebogen ausgefüllt und die Grundzüge der vorgeschlagenen Implementation beschrieben werden.

Die Umsetzung kommt von der araneaNET GmbH aus Potsdam. Diese hat das System auf Basis des Simple Machines Forum (SMF) 1.1.x aufgesetzt, einer typischen Bulletin-Board-Software, die PHP 4.1 und MySQL 3.23 (oder neuer) verwendet: also im Kern veraltete und problematische Technik. Technische Details dazu folgen weiter unten.

Umsetzung und Anforderungen

Die Umsetzung erfüllt in einigen Punkten nicht die Anforderungen der Ausscheibung bzw. des Lastenheftes oder gesetzliche Vorgaben:

Die Bedienung bzw. Usability ist nicht auf die Herausforderungen von Online-Petitionen abgestimmt, ein schlüssiges Bedienkonzept ist nicht zu erkennen.

Design-Anpassungen sind aufgrund der verwendeten Foren-Software kompliziert, die Gestaltung wird vernachlässigt. Daraus ergeben sich hohe mögliche Folgekosten.

Die Anforderungen an die Barrierefreiheit werden nicht erfüllt, für Sehbehinderte ist die Webseite nahezu unbedienbar.

Forums-Diskussionen werden nicht optimal strukturiert angezeigt.

Forums-Beiträge können nicht bewertet werden.

Die Datenschutz-Bestimmungen des Telemediengesetzes werden nicht eingehalten.

Die Software, auf der die Petitions-Webseite basiert, ist für den privaten Hobbynutzer ausgelegt. Sie hat daher möglichst niedrige Systemanforderungen, damit sie auch auf günstigem Webspace lauffähig ist. Dabei bleiben professionelle Anforderungen oft auf der Strecke, zum Beispiel Datenbank-Transaktionen zur Datensicherheit.

Es sind (teilweise schwerwiegende) Sicherheitslücken aufgetreten. Beim verwendeten Simple Machines Forum wurde am 4. November eine kritische Sicherheitslücke bekannt, was die Entwickler der Petitionswebseite aber nicht zum notwendigen schnellen Update der Software veranlasste: erst am 12. November fand die Aktualisierung statt!

Es werden nicht alle Anforderungen des BSI-Grundschutz-Kataloges eingehalten.

Die Mehrzahl der Probleme tritt aufgrund des verwendeten Simple Machines Forum auf. Für den normalen Nutzer am auffälligsten ist dabei die suboptimale Usability (Benutzungsfreundlichkeit, Gebrauchstauglichkeit).

Usability

Die Online-Petitions-Website des Deutschen Bundestages basiert auf einer Board-Software, wie sie häufig bei privat betriebenen Foren benutzt wird. Und so sieht sie auch aus. Abgesehen vom ersten optischen Eindruck bringen die Vorgaben und Einschränkungen der Software eine Reihe von Problemen bei der Usability mit. Die spezifischen Erfordernisse einer Online-Petitions-Website und eines dazugehörigen politischen Diskussionsforums werden kaum beachtet, Sonderfunktionen irgendwie hineingebastelt.

Man kann sich das in etwa so vorstellen: Angenommen der Bundestag bräuchte ein neues Parlamentsgebäude und schreibt die Erstellung eines Gebäudes mit Plenarsaal und Zuschauertribüne aus. Eine Baufirma hat zufälligerweise noch ein altes und schon lange leerstehendes Opernhaus herumstehen und bietet dieses besonders günstig an: die Zuschauertribüne bräuchte nur etwas Kosmetik und die Bühne könnte zusammen mit dem Orchestergraben zum Plenarsaal umgebaut werden. Dass die vorhandene und nicht ohne großen Aufwand änderbare Audio-Verkabelung dafür sorgt, dass ohne Tricks nur ein einziges Mikrofon angeschlossen werden kann, das sagt die Baufirma nicht dazu, sondern engagiert lieber einen Zauberer, der eine Illusion von mehreren Mikrofonen schafft.

Es ist offensichtlich, dass ein solches Gebäude im Vergleich zum Reichstag ein vollkommen ungeeignetes Parlamentsgebäude wäre. Aber im Internet werden solche Notlösungen nicht nur akzeptiert, sondern auch noch gefeiert.

Dabei verlangt die Ausschreibung explizit eine vorbildliche Usability:

Der Hauptfokus des neuen Systems soll auf einem schlüssigen, logischen und durchgängigen Bedienkonzept und damit auf einer niedrigen Partizipationsschwelle des Nutzers liegen. Aus den Zielbestimmungen vom Lastenheft Softwareprojekt „Öffentliche Petition“, Seite 7

Es gäbe einige Möglichkeiten, eine solche Anforderung umzusetzen. Stattdessen wird der Nutzer an vielen Stellen mit einer Wüste aus Texten und Tabellen konfrontiert, moderne Gestaltungselemente und eine niederschwellige Benutzerregistrierung fehlen. Man sieht, dass es sich um ein mit der Zeit gewachsenes System handelt, dass für einen ganz anderen Zweck erstellt wurde.

Einige der auffälligsten Usability-Probleme sind:

Startseite erklärt nichts, dem Nutzer wird ein „Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?“ entgegen geschleudert. Bei niedrigen Auflösungen wird die Hälfte des Bildschirmes mit Kopfzeile, Login-Formular und einer Mini-Navigation verbraucht. Der Rest mit der Überschrift der folgenden Tabelle. Hat das überhaupt mal jemand in 800x600 ausprobiert?

Startseite erklärt nichts, dem Nutzer wird ein „Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?“ entgegen geschleudert. Bei niedrigen Auflösungen wird die Hälfte des Bildschirmes mit Kopfzeile, Login-Formular und einer Mini-Navigation verbraucht. Der Rest mit der Überschrift der folgenden Tabelle. Hat das überhaupt mal jemand in 800x600 ausprobiert? Der Link zum Einreichen einer neuen Petition sieht wie eine der Navigation übergeordnete Überschrift aus.

Link-Farben sind nicht konsistent.

Die Website bietet eine Brotkrumennavigation, die aber aufgrund ihrer Gestaltung sehr verwirrend ist.

Wie die meisten Boards bietet auch das Simple Machines Forum (SMF) nur eine flache Ansicht der Kommentare, ohne Anzeige von Diskussionssträngen (Threads). Für eine sinnvolle politische Diskussion ist aber die Verschachtelung der Forums-Beiträge und Darstellung der Diskussionsstränge wünschenswert. Dabei werden Antworten zu einem Beitrag diesem zugehörig dargestellt, wodurch die Diskussion inhaltlich geordnet wird. Dies wird so auch bei vielen stark frequentierten Diskussionsplattformen gemacht und ist keine exotische sondern eine übliche (wenn auch technisch schwieriger zu realisierende) Darstellungsweise. Bei der verwendeten linearen Darstellung werden die Beiträge ausschließlich nach der Zeit des Eingangs eines Beitrages sortiert. Dadurch wird die Diskussionsführung umständlich, jeder Teilnehmer ist gezwungen, darzustellen und ggf. zu zitieren, auf welchen Beitrag er sich bezieht. Das erschwert zwangsläuﬁg nicht nur die Benutzung des Forums sondern hat auch negativen Einfluss auf die Qualität der Diskussionen. Dabei steht im Lastenheft unter Punkt 3.1.8 die Anforderung L-ÖP-F-B-250, die durchaus so zu interpretieren ist, dass eine verschachtelte Darstellung der Diskussionsstränge zu erfolgen hat: Der Benutzer kann die Darstellung des Diskussionsstrangs in folgender Weise beeinflussen: Alle Beiträge und ihre Antworten ausklappen. Alle Beiträge und ihre Antworten einklappen. Einzelne Beiträge ausklappen. Einzelne Beiträge einklappen. Vorgeben, wie viele Beiträge pro Bildschirmseite angezeigt werden sollen. Aus Punkt 3 Forum, Anforderung L-ÖP-F-B-250 vom Lastenheft Softwareprojekt „Öffentliche Petition“, Seite 11 Diese Vorgaben werden nicht erfüllt, da das Simple Machines Forum keine Thread-Darstellung unterstützt und auch keine entsprechende Funktionalität nachgereicht wurde. Ein Board mit linearer Kommentarauflistung ist dann einigermaßen gut nutzbar, wenn eine kleine Gruppe von Leuten regelmäßig mitliest. Es ist aber nicht gut zur politischen Diskussion unter vielen und immer wieder neuen Teilnehmern geeignet.

Fehlermeldungen sind inkonsistent in Bezug auf Position, Gestaltung und Text.

Die zum Anmelden nötigen Nutzernamen werden automatisch generiert und sind nicht änderbar. Die Nutzer müssen sich mit Namen wie „Nutzer123“, „Nutzer124“ und so weiter einloggen.

Es sind zwar frei wählbare Pseudonyme vorgesehen. Diese kann der Benutzer bei der Registrierung aber nicht angeben: Es wird einfach der automatisch generierte Nutzername gewählt. Änderungen sind nur manuell in den Profileinstellungen möglich.

An manchen Stellen wird anstatt des Pseudonyms immer der Nutzername angezeigt.

Die Navigation ist nicht konsistent, nicht eingängig und nicht immer klar verständlich.

Der Seitentitel ist nicht aussagekräftig und es gibt keine Haupt-Überschriften.

Die altbackene Optik und die Bedienung machen keinen Spaß, motivieren die Nutzer nicht zur Partizipation und stärken die Akzeptanz des Online-Petitionsverfahrens nicht.

Dafür bietet die ePetitions-Webseite eine andere bemerkenswerte Funktion: Die Benutzer können ein Bild auswählen, das neben ihren Forenbeiträgen angezeigt wird. Neben eigenen Bildern können Bilder von Stars und Sternchen aus den Bereichen „Actors“ und „Musicians“ ausgewählt werden.

Damit kann dann Britney Spears mit Bob Marley, Bruce Willis und Eminem diskutieren. Hoffen wir, dass sie sich an die Regeln halten und eine Sprache wählen, die „der Würde des Parlaments“ entspricht ...

Datenschutz

Petitionen und Forumsbeiträge kann jeder Nutzer ohne Registrierung lesen; Petitionen einreichen kann, wer Name und Anschrift angibt. Aber auch, wer nur an den Diskussionen im Forum teilnehmen möchte, muss sich mit vollem Namen und Anschrift registrieren. Die entsprechenden Eingabefelder sind Pflichtfelder. Dies ist nicht nur ungewöhnlich, sondern verstößt auch gegen die Datenschutzbestimmungen des Telemediengesetzes (TMG), denn es muss dem Nutzer die Möglichkeit gegeben werden, nur unter Pseudonym aufzutreten:

§ 13, Abs. (6) Telemediengesetz

Der Diensteanbieter hat die Nutzung von Telemedien und ihre Bezahlung anonym oder unter Pseudonym zu ermöglichen, soweit dies technisch möglich und zumutbar ist. Der Nutzer ist über diese Möglichkeit zu informieren.

Im Forum ist es sowohl technisch möglich als auch zumutbar, eine Anmeldung unter Pseudonym zu erlauben. Für die Einreichung einer Petition ist es selbstverständlich richtig, Name und Anschrift zu verlangen, für das Forum ist dies in meinen Augen aber ganz klar rechtswidrig. Und besonders peinlich für den Bundestag. Aber auch der das Projekt betreuende Dienstleister sollte den Auftraggeber entsprechend beraten. Dass der Präsident des Bundestages kein ordentliches Impressum hat, darüber kann man ja noch schmunzeln. Die unnötige Abfrage personenbezogener Daten ist aber nicht mehr zum Lachen.

Zudem wird der Nutzer nicht, wie ebenfalls vom TMG verlangt, über die Nutzung der Daten informiert:

§ 13, Abs. (1)

Der Diensteanbieter hat den Nutzer zu Beginn des Nutzungsvorgangs über Art, Umfang und Zwecke der Erhebung und Verwendung personenbezogener Daten [...] in allgemein verständlicher Form zu unterrichten, sofern eine solche Unterrichtung nicht bereits erfolgt ist. [...] Der Inhalt der Unterrichtung muss für den Nutzer jederzeit abrufbar sein.

All dies ist bei der Online-Petitions-Website des Bundestages nicht der Fall. Es werden also nicht nur unrechtmäßig personenbezogene Daten wie Name und Anschrift der Forums-Teilnehmer erhohen. Die Nutzer werden auch nicht über die Verwendung der Daten informiert geschweige denn um eine Einwilligung gebeten.

Verlinken verboten

An den Datenschutz wurde also nicht gedacht. Dafür aber an die Richtlinien, nachzulesen in rili.pdf. Die dortigen Regeln betreffen auch Foren-Beiträge, und da sind zum Beispiel Links verboten. Nun, streng genommen gibt es sowieso keine Links, da in Foren-Beiträgen keine Links aus URLs erzeugt werden. Die Moderatoren beziehen diese Richtlinie aber auch auf die Nennung von URLs: es ist also zum Beispiel verboten, Quellen für Gesetzestexte anzugeben. Entsprechende Texte bzw. Text-Teile werden gelöscht.

Ein sehr skurriles Verhalten, das sinnvolle Diskussionen in vielen Fällen erschwert. Zurück in die Zeit vor dem Web 1.0 mit dem Deutschen Bundestag ...

Aber auch andere Forums-Beiträge werden gelöscht. Wie immer in solchen Fällen fragt sich der Leser nachher: was war da los? Zumal wenn es allem Anschein nach harmlose Texte trifft.

Natürlich sollte ein Foren-Betreiber darauf achten, dass sich die Teilnehmer nicht gegenseitig quasi die Köpfe einschlagen. Um den Nutzern einen Anreiz für qualitativ hochwertige Beiträge zu geben, war im Lastenheft ein Bewertungssystem vorgesehen, bei dem die Nutzer Beiträge bewerten können. Vorgeschlagen werden Schulnoten (Punkt 3.1.8 Lastenheft, Anforderung L-ÖP-F-B-290). Das wurde nicht umgesetzt. Es gibt keine Möglichkeit, Beiträge zu bewerten.

Dabei könnte ein gut gemachtes Bewertungssystem durchaus die Moderatoren stark entlasten. Dabei muss aber mehr möglich sein, als Beiträge mit Schulnoten zu bewerten.

Denn erfahrungsgemäß bewerten Forennutzer Beiträge, denen sie inhaltlich nicht zustimmen, als „schlecht“ und solche, denen sie zustimmen, als „gut“. Daraus können regelrechte Bewertungs-Kleinkriege inklusive Rachebewertungen entstehen, was die Administration der Seite erschwert - denn es lässt sich nicht nachvollziehen, ob ein an sich legitimer Beitrag nur deshalb schlecht bewertet wurde, weil Nutzer eine Meinungsverschiedenheit haben. Sinnvoller - aber auch aufwendiger zu implementieren - wäre ein Bewertungssystem, das den Nutzern inhaltliche, der Diskussionskultur förderliche Bewertungen erlaubt. Beispielsweise könnten die Benutzer den Beiträgen folgende Label zuweisen: Zustimmung, Ablehnung, In- formativ, Falsch und Störenfried (Troll).

Über die Aufzeichnung dieser Bewertungen lässt sich eine kontrovers geführte Diskussion aufspüren, ohne dass Benutzer gezwungen werden aufgrund mangelnder Optionen ein Gegenüber mit „schlecht“ zu bewerten. Dies senkt natürlich auch den Moderationsaufwand und damit die Betriebskosten. Diese Methode hat sich zum Beispiel bei Slashdot oder Kuro5hin bewährt.

Barrierefreiheit

Laut Punkt 6.5 des Lastenheftes bzw. Punkt 12 des Fragebogens der Ausschreibung muss die Anwendung barrierefrei nach BITV, Priorität I, sein. Der Anbieter musste erklären, damit einverstanden zu sein. Laut dem „Internet Style Guide“ des Bundestages muss auch Priorität II mit wenigen Ausnahmen erfüllt sein. Dies soll garantieren, dass behinderte Menschen möglichst ungehinderten Zugang haben.

Diese Anforderung wird nicht erfüllt. Update: ich habe einihe Screenreader-Audio-Aufzeichnungen gemacht. Die zeigen, wie Blinde die Webseite „sehen“. So gibt es beispielsweise die folgenden formalen Fehler:

Es gibt keine textuelle Beschreibung aller verwendeter Bilder, es fehlen bei vielen Bildern die alt -Attribute (BITV-Bedingung 1.1).

-Attribute (BITV-Bedingung 1.1). Es handelt sich nicht um valides HTML (Bedingung 3.2). Update, 17. November: Die meisten XHTML-Fehler (fehlende Attribite, nicht geschlossene Tags usw.) wurden in der Zwischenzeit behoben.

Die Struktur ist nicht sauber mit Überschriftenelementen geordnet, in der Regel beginnt die Darstellung mit einer Überschrift dritten oder vierten Grades ( H3 und H4 ) anstatt sauber mit H1 zu beginnen (Bedingung 3.5)

und ) anstatt sauber mit zu beginnen (Bedingung 3.5) HTML-Tabellen werden auch zur Darstellung von nicht-tabellarischen Elementen verwendet (Anforderung 5; Bedingung 5.3).

Spaltenüberschriften in Tabellen sind nicht mit dem dafür vorgesehenen HTML-Tag TH gekennzeichnet (Bedingung 5.1).

gekennzeichnet (Bedingung 5.1). Bei abgeschaltetem JavaScript kommt eine deutliche Meldung, man möge zur korrekten Darstellung JavaScript aktivieren. Ob tatsächlich nicht alles funktioniert habe ich nicht getestet, aber alleine schon die Meldung widerspricht meines Erachtens Bedingung 6.3 bzw. 6.4, zumal es den Anwender nötigt JavaScript einzuschalten.

Es gibt keine Tastaturkurzbefehle für wichtige Links und Navigationselemente (Bedingung 9.5).

Die Navigationsmechanismen sind nicht übersichtlich und schlüssig (Anforderung 13). So sind beispielsweise nicht alle Link-Ziele eindeutig identifizierbar (Bedingung 13.1). Man kommt durch Anklicken einer Zahl zum Beispiel entweder zur Liste der Unterzeichner einer Petition oder der Übersicht der Kommentar-Überschriften, ohne dass dies bei dem Link gesondert gekennzeichnet wäre. Ob 23 nun über einen Zwischenschritt zu den Kommentaren oder ob 42 zu den Unterzeichnern führt ist nicht deutlich.

Übersichtsseite der Diskussionen vollkommen unter. Die Links zu den eigentlichen Inhalten sind unter all dem Rauschen mit einem Textbrowser oft kaum zu finden. Update: Wer sich in einen Blinden Internet-Nutzer hineinversetzen möchte, kann sich entsprechende Audio-Dateien von Bildschirmlese-Programmen anhören.

Der Bundestag als Auftraggeber muss bei der Abnahme diese formalen Kriterien überprüfen bzw. überprüfen lassen. Anscheinend ist dies nicht oder nicht durch kompetente Personen geschehen. Anders ist nicht zu erklären, warum selbst einfach zu prüfende formale Kriterien nicht erfüllt sind. Das Projekt hätte so nie abgenommen werden dürfen.

Trennung von Funktion, Layout und Inhalt

Das Lastenheft verlangt in Punkt 6.7 die strikte Verwendung von Templates:

Um eine mögliche Erweiterung des Systems einfach und kostengünstig zu gestalten, ist bei der Entwicklung der Grundsatz der strikten Trennung von Funktion, Layout und Inhalt zu berücksichtigen. Punkt 6.7 Erweiterbarkeit vom Lastenheft Softwareprojekt „Öffentliche Petition“, Seite 28

Dieser Grundsatz wird von dem verwendeten Simple Machines Forum (SMF) nicht beachtet. Zwar gibt es beim SMF auch Vorlagen, dieses sind aber auch nur PHP-Dateien, die einen Teil der Logik implementieren. Aber auch im Haupt-Code befindet sich viel HTML. Dabei handelt es sich nicht nur um hart codierte Tabellen-Elemente, sondern auch um fest codierte Stylesheets mit Farbangaben, Hintergrundfarben, Texte und so weiter. Dies ist ein klarer Verstoß gegen Punkt 6.7 des Lastenheftes.

Dass keine strikte Trennung von Code und Repräsentation vorliegt, macht nicht nur die Gestaltung schwieriger bzw. bei Erweiterungen unnötig kompliziert und auf Dauer teurer. Es verstärkt auch die oben genannten Probleme mit der Barrierefreiheit und Usability.

Zwischenfazit zur Umsetzung

Mehrfach ist zu beobachten, dass wichtige Anforderungen der Ausschreibung bzw. des Lastenheftes nicht umgesetzt wurden und mit der verwendeten Foren-Software gar nicht bzw. nur mit exorbitantem Aufwand umgesetzt werden können. Das Grundproblem ist also die verwendete Foren-Software. Nach meinem Verständnis hätte daher schon das Angebot von der Ausschreibung ausgeschlossen werden müssen, denn wenn Anforderungen nicht umgesetzt werden können, dann ist ein Angebot eben auch hinfällig. Es ist zu erwarten, dass die araneaNET GmbH das Board in ihrem Angebot erwähnt hat, denn es wurden konkrete Angaben zu den zu verwendenden Techniken verlangt. Aber spätestens bei der Begutachtung des Pflichtenheftes wäre die Notbremse zu ziehen gewesen. So aber steigen die Folgekosten bei Änderungen und Erweiterungen und so manche Erweiterung ist in einem sinnvollem Rahmen kaum möglich.

Insgesamt macht die Umsetzung einen amateurhaften und schludrigen Eindruck. Die Online-Petitions-Website des Bundestages ist keineswegs innovativ oder modern, sondern so zusammengestückelt, dass sie gerade mal irgendwie die wichtigsten Anforderungen erfüllt: es können Petitionen eingereicht und unterzeichnet werden und man kann im Forum Kommentare hinterlassen. Man merkt aber, dass da niemand am Werk war, der sich mit Benutzerführung und Gestaltung von modernen Webseiten auskennt. Dies wäre aber zwar änder- und erweiterbar, wenn da nicht die Foren-Software wäre ...

So aber kann man dem Bundestag nur einen Rat geben, den ich verschiedenen Kunden leider auch gelegentlich geben muss: wegwerfen und neu schreiben (lassen). Das ist zwar bitter, aber dennoch die mittelfristig beste Lösung.

Das Simple Machines Forum

Die Software, auf der die Petitions-Site beruht, wurde im Wesentlichen entwickelt, um in wenigen Minuten auf einem beliebigen Webserver ein einfaches Diskussionsforum aufzusetzen. Sie kommt aus der Kultur der Bulletin-Board-Foren, die vor allem bei privaten Betreibern beliebt sind. Und es gehört zu den üblichen PHP/MySQL-Frickeleien: kaum Trennung zwischen Code und Design (einige Design-Elemente werden sogar im Haupt-Code definiert), seltsame Lizenzbedingungen (die vermutlich noch nicht mal eingehalten werden), keine Gewährleistung von Datenintegrität da MyISAM-Tabellen und keine Transaktionen genutzt werden, wenig Dokumentation, schwer durchschaubarer Spaghetti-Code, haufenweise globale Variablen, keine automatisierten Test und so weiter. Da wundert es wenig, dass das System nur wenig Flexibilität mitbringt und sich zig Berichte über Sicherheitslücken finden - die vom Bundestag eingesetzte Version hat, obwohl schon vor Tagen eine neue Version heraus kam, noch einige kritische Sicherheitslücken offen - . Ob sie in der konkreten Implementierung auch ausnutzbar sind/waren habe ich aus naheliegenden Gründen nicht probiert.

Lizenz

Wie bereits schon mehrfach angesprochen geht es um das kostenlos erhältliche „Simple Machines Forum“ (SMF). Dabei steht SMF keineswegs unter einer Open Source Lizenz und ist auch keine Freie Software:

»Freie Software« hat etwas mit Freiheit zu tun, nicht mit dem Preis. Um das Konzept zu verstehen, ist an »frei« wie in »freier Rede«, und nicht wie in »Freibier« zu denken. Aus der Definition Freier Software der Free Software Foundation

Die Lizenzbestimmungen zum SMF untersagen zum Beispiel das Weiterverteilen (Redistribution) der Software. Zudem müssen die Copyright-Hinweise unverändert auch in der Ausgabe (also auf jedem damit umgesetzten Forum) erhalten bleiben. Dies war in den ersten Tagen/Wochen nach dem Start der Online-Petitions-Website nicht der Fall, wie auch schon Matthias Dietrich beschrieben hat. Ein klarer Verstoß gegen die Lizenzbedingungen. In der Zwischenzeit wurde dies korrigiert und der Hinweis ist vorhanden.

Eine weitere Lizenzbedingung mag dem Bundestag vielleicht nicht schmecken: bei jeder Modifikation oder Erweiterung muss dem Hersteller eine kostenlose Lizenz zur Nutzung dieser eingeräumt werden. Simple Machines LLC muss demnach das Recht erhalten, die Online-Petitions-Erweiterungen zu nutzen und zu verbreiten:

When a Modification to the Package is released, a non-exclusive royalty-free right is granted to Simple Machines LLC to distribute the Modification in future versions of the Package Aus der Simple Machines License

Sicherheitslücken

Wie auch bei anderen PHP/MySQL-Boards üblich werden auch beim Simple Machines Forum immer wieder teils kritische Sicherheitslücken bekannt. Die Verwendung dieses Boards für geschäftskritische bzw. missionskritische Anwendungen kann daher nur als grob fahrlässig bezeichnet werden. Bei der Online-Petitions-Webseite wird derzeit wurde bis 12. November Version 1.1.6 verwendet, für die am 4. November ein Code Execution Exploit sowie am 5. November ein weiterer Code Execution Exploit bekannt wurden. Das bedeutet, dass ein Angreifer eigenen Programmcode auf einem Server, auf dem das SMF läuft, ausführen kann - und damit in der Lage ist, die Webseite beliebig zu manipulieren, Daten auszuspähen bzw. zu manipulieren und weitere Angriffe zu starten. Obwohl bereits eine Version 1.1.7 veröffentlicht wurde, ist bis jetzt (10. November) immer noch die alte Version im Einsatz. Update: Obwohl schnell eine fehlerbereinigte Version 1.1.7 veröffentlicht wurde, dauerte es bis zum 12. November, bis diese bei der Online-Petitions-Webseite installiert wurde.

Code-Qualität

Ein kritischer Blick auf den Source-Code des Simple Machine Forums bringt einige Unzulänglichkeiten zu Tage, viele davon typisch für PHP-Anwendungen:

Flache Code-Struktur: Aufgrund fehlender Namensräume ist es oft üblich, Code nicht hierarchisch zu ordnen sondern alles auf eine Ebene zu klatschen. So sind dann im Haupt-Source-Verzeichnis vom SMF auch 66 PHP-Dateien ohne hierarchische Ordnung zu finden.

Exzessive Verwendung globaler Variablen: Über 70 Variablen sind global deklariert. Dies erschwert das Verständnis und die Wartung des Codes, reduziert die Robustheit und erhöht die Gefahr für Fehler und Sicherheitslücken.

Schwer durchschaubarer Spaghetti-Code: Nicht nur, dass über 300 Code-Zeilen eine nicht überschaubare Länge von mehr als 200 Zeichen haben (die Längste Zeile enthält 1470 Zeichen). Auch viele Unterfunktionen bestehen aus hunderten von Zeilen. parse_bbc hat zum Beispiel 1423 Zeilen Code. Da drin verstecken sich 144 if -Abfragen, mindestens 85 logische Operatoren, 25 mal elseif , 38 else und 49 mal der Ternäre Operator (?-Operator) ... Wer soll sowas warten? Wenn das der Psychopath mit der Kettensäge sieht ... Ab einer bestimmten Komplexität ist Code für Menschen nicht oder nur noch sehr schwer zu verstehen und nicht sinnvoll testbar. Diese Komplexität, die auch als zyklomatische Komplexität oder McCabe-Metrik (nach Thomas J. McCabe) bekannt ist, besagt, wieviele verschiedene Wege mindestens durch ein Programm(teil) führen. Um den Code übersichtlich und testbar zu halten, sollten dies möglichst wenige sein: McCabe empfiehlt 10, Perl::Critic und die passende Regel Subroutines::ProhibitExcessComplexity erlauben per default 20. Bei der angesprochenen Funktion parse_bbc sind es deutlich über 300. Dass man BBCode auch mit sauberem und übersichtlichem Code parsen kann zeigt beispielsweise Tina Müller beim CPAN-Modul Parse::BBCode.

PHP-Typisch werden keine Module für Standardaufgaben wie das Parsen von URLs oder die Validierung von E-Mails genutzt, sondern alles selbst gebaut. Für Perl-Programmierer gibt es das CPAN, PHP-Programmierer haben eben nichts vergleichbares.

Ebenfalls PHP-Typisch enthält die SMF-Distribution keine Unit- oder Regression-Tests. Ohne automatisierte Tests sind viele Fehler nur schwer erkenn- und reproduzierbar.

Die Dokumentation ist relativ knapp und rudimentär gehalten, auch wenn ich da schon deutlich schlimmeres gesehen habe.

SMF ist weder objektorientiert programmiert noch wird ein Datenbankabstraktionslayer verwendet. Dies erschwert die Entwicklung von Erweiterungen.

SMF verwendet MySQL mit dem MyISAM-Tabellentyp. Damit kann keine Datenintegrität gewährleistet werden, es erfüllt noch nicht einmal die Mindest-Anforderungen an eine ACID-konforme Datenbank. Dies kann zum einen Auswirkungen auf die Datenkonsistenz haben: MyISAM gibt keine Garantie, dass keine kaputte Daten in die Datenbank gelangen. Update: ACID-Konformität ist eine Anforderung des BSI Grundschutz-Katalogs (M 2.124 Geeignete Auswahl einer Datenbank-Software), die damit nicht eingehalten wird bzw. mit MySQL gar nicht eingehalten werden kann.

Zum anderen ist die Performance bei parallelen Lese-/Schreib-Operationen, wie sie bei vielen Web-Anwendungen vorkommen, sehr schlecht: ein Schreibzugriff muss warten, bis alle Lesezugriffe fertig sind und umgekehrt. Dies kann einen Server sehr schnell unter der Last zusammenbrechen lassen. (Update, 8.Februar 2009: was nicht nur theoretischer Natur ist sondern sich nun auch praktisch bestätigt hat)

Zum anderen ist die Performance bei parallelen Lese-/Schreib-Operationen, wie sie bei vielen Web-Anwendungen vorkommen, sehr schlecht: ein Schreibzugriff muss warten, bis alle Lesezugriffe fertig sind und umgekehrt. Dies kann einen Server sehr schnell unter der Last zusammenbrechen lassen. (Update, 8.Februar 2009: was nicht nur theoretischer Natur ist sondern sich nun auch praktisch bestätigt hat) Das Simple Machines Forum läuft in der verwendeten Version 1.1 nur mit MySQL. MySQL bzw. genauer die MySQL Client Library ist nach Auffassung von MySQL aber nur unter wenigen Umständen ohne Lizenzkosten nutzbar. Dies gilt zum Beispiel dann nicht, wenn die MySQL nutzende Software nicht unter der GPL oder einer anderen Lizenz steht, die unter die „Free and Open Source Software ("FOSS") License Exception“ fällt. Für die Simple Machines Licence gibt es keine solche Ausnahme. Daher ist dabei eine kostenpflichtige Lizenz (ab 479 Euro pro Jahr) zu erwerben. In der Ausschreibung wurde aber explizit verlangt, dass kostenpflichtige Lizenzen nur bei gesonderter Begründung erlaubt sind (Frage 10.4 des Fragenkatalogs) ...

PHP-Code, HTML und CSS werden beim SMF miteinander vermischt. Zukünftige Design-Änderungen sind damit in vielen Fällen sehr schwer und nur durch Code-Änderungen möglich - was wie bereits oben beschrieben auch der Ausschreibung widerspricht. Gleichzeitig bringt dies wiederum Probleme beim Aktualisieren der Software mit: Gibt es eine neue SMF-Version, muss diese u. U. mühsam mit den eigenen Änderungen verglichen und manuell eingespielt werden.

Der Bundestag verlangt, dass die Software als Peak 10000 Besucher pro Minute verträgt. Bei Zeiten von rund 200 Millisekunden bei der Generierung und Auslieferung alleine der Startseite ist fraglich, ob diese Werte erreicht werden können ...

Insgesamt stellt sich die Frage, wie man seriöserweise überhaupt auf die Idee kommen kann, eine solche Foren-Software als Basis für eine Geschäftskritische Anwendung auszuwähen. Die Probleme sind zu massiv und umfangreich, als dass man sie ignorieren sollte. Und sie sind zu tiefgreifend, um sie durch Erweiterungen und Fehlerbehebungen in den Griff zu bekommen. Um die Anforderungen einzuhalten und ein gut wartbares Produkt zu erhalten ist seriöserweise eine komplette Neuentwicklung zu empfehlen.

Der Auftragnehmer: araneaNET GmbH

Die Umsetzung der neuen Online-Petitions-Website des Bundestages wurde laut Impressum und Pressemeldung durch die Firma araneaNET GmbH aus Potsdam durchgeführt. araneaNET GmbH bezeichnet sich selbst als ein „BSI-zertifizierter Technologieberater“. Warum ein solches Unternehmen dann aber eine Software einsetzt, die offensichtlich nicht die Anforderungen der BSI-Grundschutz-Kataloge (bzw. Grundschutz-Handbuch) einhält, bleibt unverständlich.

Laut Eigenaussage liegen die Kompetenzen von araneaNET in Bereichen, die ich als Softwareentwickler und Gestalter von Web-Anwendungen in den Systemadministrations-Bereich einordnen würde, keinesfalls aber im Bereich der Erstellung benutzerfreundlicher Web-Applikationen. Interessant ist dabei der Punkt Open Source, dort stehen als angebotene Leistungen:

Support von Open Source basierten Betriebssystemen (Novell Open Enterprise Server, SuSE Linux Enterprise Server)

Eigenentwicklung einer Open Source Produktreihe zur Verwaltung und Management von IT-Ressourcen

Neben dem Support für Novell/SuSE-Betriebssysteme haben sie also auch noch eine ganze eigene „Open Source Produktreihe“ im Programm. Nur: bis auf ein paar kurze Beschreibungen was die Produkte denn können sollen und der Angabe „Open Source - keine Lizenzgebühren“ findet sich nicht viel: neben einer Kurzbeschreibung je ein PDF-Flyer und eine Demo-Website für araneaSOURCE|documentare, auf der nicht viel passiert. Kein Source und keine Angaben zur Lizenz. Dabei geht Open Source viel weiter und hat erstmal nichts mit kostenlos oder kommerziell/nichtkommerziell zu tun - wenn dann also bei einem „Open Source“-Projekt noch nicht mal der Source zu finden ist, dann finde ich das durchaus ... ungewöhnlich. Auch auf eine Anfrage an die angegebene E-Mail-Adresse war keine Antwort zu erhalten. Eine Google-Suche findet im Wesentlichen nur ein paar alte Pressemeldungen (Stand: 9. November 2008).

Das alles mag nicht viel bedeuten, auch wenn ich persönlich auf überschwengliche Pressemeldungen allergisch reagiere, vor allem wenn lange nach der Ankündigung nichts zu sehen ist. Nach Open Source sieht es auf jeden Fall eher weniger aus.

Zu den Kernkompetenzen der araneaNET GmbH gehört nach eigener Angabe weder Informationsdesign noch die Erstellung von Websites oder gar Community-Websites noch die Erstellung von gebrauchstauglichen und benutzerfreundlichen Bedienkonzepten. In den Ausschreibungsunterlagen wurde vom Bundestag aber explizit gefordert, dass dem Angebot „drei bis fünf Referenzen über vergleichbare Aufträge vorzulegen“ seien. Vielleicht wurde hier also „vergleichbare Aufträge“ besonders weit ausgelegt? Und sicherlich schadet es auch nicht, an dem ein oder anderen Projekt des Wirtschaftsministeriums teilzunehmen.

Fazit

Dass die Umsetzung der Online-Petitions-Webseite alles andere als optimal ist, ist deutlich zu sehen: Schlechte Bedienung, fehlende Funktionalität bzw. nicht eingehaltene Anforderungen, mangelnde Barrierefreiheit, sicherheitskritische Basis, altbackenes Design und rechtswidrige Datenabfrage. Man kriegt eben das, was man bezahlt. Natürlich kann man in einigen der hier genannten Kritikpunkte anderer Meinung sein, aber bei einem Projekt des Bundestages habe ich einfach besonders hohe Ansprüche!

In gewisser Weise wird die neue Webseite allerdings dem gerecht, was den Petitionsausschüssen von Bund und Ländern nachgesagt wird: sie würden wenig wahrgenommen, seien das Stiefkind aller Ausschüsse und für Abgeordnete, die angeblich sonst nichts können. Aber gerade deswegen wäre ein moderner, gut bedienbarer und zukunftsweisender Auftritt nötig, nicht ein Rückschritt ins Web 1.0.

Aber, welche Lehren lassen sich aus der Sache ziehen?

Lehren für Bieter

Für den (potentiellen) Auftragnehmer lässt sich vor allem eine Lehre ziehen: sei billig! Und zwar so billig, dass es kaum möglich ist, hochqualitative Arbeit zu leisten. Also wirklich billig, in allen seinen Bedeutungen. Oder anders gesagt: Wer billig ist, hat die besten Chancen auf den Zuschlag. Das ist aber auch egal, merkt erstmal sowieso keiner - und ansonsten überhaupt erst dann, wenn es zu spät ist. Und ebenso wichtig ist, wie auch an anderen Stellen zu beobachten ist: immer schön dick auftragen, die eigenen Leistungen so sehr übertreiben bis man es selbst nicht mehr aushält, irgendwie zertifizieren lassen und mit dem Strom schwimmen. Wenn Open Source modern ist, dann mache Open Source. Oder sage zumindest, dass Du das machst, irgendwer wird es schon glauben.

Lehren für Ausschreibende

Das klingt fatalistisch, ein bisschen ist es das auch. Aber ich habe auch Hoffnung, dass es anders laufen kann. Dazu gehört sicherlich, dass sich die ausschreibenden Behörden oder Unternehmen besser mit den Bereichen auskennen, in denen sie etwas ausschreiben. Ohne Wissen geht es nicht - und wenn von den Mitarbeitern des Bundestages sich keiner auskennt, dann muss man dies eben mit kompetenten externen Partnern machen. Vermutlich ist dies im Fall der Online-Petitions-Webseite des Bundestages sogar passiert, denn die Ausschreibungs-Unterlagen und das Lastenheft sind im Großen und Ganzen nicht zu beanstanden. Aber ich habe die Vermutung, dass bei der Auswahl der Angebote weniger Sorgfalt angewendet wurde, sondern nur ein paar Punkte anhand des einzureichenden Fragebogens mit dem angebotenen Preis verrechnet wurden. Dabei ist bei genauerem Hinsehen klar, dass ein Angebot auf Basis des Simple Machine Forums einige Anforderungen ohne exorbitanten Aufwand gar nicht erfüllen kann. Dafür ist die Software zu sehr auf die Zielgruppe eher privater Foren- bzw. Board-Betreiber zugeschnitten.

Bei solchen Aufträgen halte ich es daher für die Ausschreibenden schwer, nach Aktenlage zu entscheiden. Dann gewinnt nämich der, der am meisten übertreibt. Vermutlich wäre es sinnvoller, eine Auswahl der in Frage kommenden Angebote zu erstellen und diese dann genauer unter die Lupe zu nehmen, inklusive Präsentation durch die Anbieter. Vielleicht auch schon von mehreren Bietern ein Pflichtenheft auf Basis ihres Vorschlages erstellen lassen - diese werden das zwar nicht umsonst machen, aber lieber etwas mehr Geld ausgeben als nachher ein schlechtes Produkt zu erhalten. Inwieweit das alles mit dem Ausschreibungsrecht vereinbar ist mag ich nicht beurteilen, in anderen Fällen klappt sowas aber auch. Eine perfekte Welt ist natürlich ein weit entferntes Wunschdenken, aber man kann sich dieser ja Schritt für Schritt nähern ...

Update, 16.November: Umfrage und Sicherheitsupdate beim Bundestag, Screenreader-MP3s und sonstige Neuigkeiten

Update, 7. Februar 2009: Petitions-System des Bundestages bricht zusammen