Habemus Superwahljahr

Volksbefragung, Kärnten, Niederösterreich, Tirol, Salzburg und eine Nationalratswahl

2013 finden insgesamt eine Volksbefragung, vier Landtagswahlen und eine Nationalratswahl statt. Letztere ist wohl das Highlight des innenpolitischen Jahres. Hierfür wurde die Wahlauswertung auf neue Beine gestellt.

Nachdem sich schon Ende letzten Jahres das aufkommende Superwahljahr abzeichnete, motteten wir unseren alten Java-Wahlparser ein. Dieser bestand aus einer monolithischen Kommandozeilenanwendung, die Auszählungsdaten entgegen nahm, sie in einem simplen Template renderte und anschließend auf unseren Cluster transferierte. Dieses System ist mittlerweile nicht mehr State-of-the-Art und gerade die immer komplexer werdenden Datenjournalismus-Anwendungen ließen sich damit nicht umsetzen.

Die Wahlauswertung zur Landtagswahl in Niederösterreich.ORF.atDie Wahlauswertung inkl. Heatmaps zur Landtagswahl in Niederösterreich.

Daher entschieden wir uns die komplette Anwendung neu aufzustellen und in zwei Komponenten aufzuspalten. Zum einen setzen wir auf eine RingoJS-basierte Serveranwendung. Diese nimmt die zentral vom ORF bereitgestellten Textdateien entgegen und wandelt sie in JSON-Dateien um. Dabei reichert sie die Datensätze noch um einige berechnete Werte an, zum Beispiel die Prozentwerte der einzelnen Parteien. Der Technologie-Stack bzw. Datenformate:

  • RingoJS – eine CommonJS-Runtime auf Basis der Java VM, die sowohl blockierende, als auch asynchrone I/O-Operationen zulässt und JavaScript um Module erweitert.
  • Java als Basis von RingoJS
  • Eingabedaten werden – auch aus historischen Gründen – als simple Textdatei angeliefert. Die Datei enthält pro Zeile eine Gemeindekennziffer, die Anzahl der Wahlberechtigten und pro Partei eine fixe Spalte mit den Stimmen.
  • JSON bzw. JSONP als Ausgabeformat. Diese Dateien können direkt im Browser geladen und aufbereitet werden.

Zum anderen erfolgt die Anzeige dieser JSON-Daten nun direkt im Browser. Diese rein clientseitige Anwendung trägt intern den Namen „Wahlcomputer“, wie auch leicht im Quelltext erkennbar ist. Der Wahlcomputer lädt zu Beginn alle Konfigurationsdateien und Metadaten zur jeweiligen Wahl. Danach werden über AJAX und JSONP die Ergebnisdateien vom Datencluster abgeholt und mittels clientseitiger Templates dargestellt. Zusätzlich gibt es noch mehrere Kartenansichten, die ebenfalls direkt im Browser gerendert werden. Im groben benutzt die Applikation folgende Tools und Frameworks:

  • jQuery als grundlegendes Framework für DOM-Manipulationen
  • require.js – mit diesem JavaScript Module Loader kann man komplexe Applikationen auch im Browser auf mehrere Module aufteilen und so einen besseren Überblick behalten.
  • Backbone.js – der Wahlcomputer verwendet primär den Router aus Backbone, damit man auch einzelne Bereiche gezielt verlinken bzw. ansteuern kann.
  • Raphaël – hiermit werden die Karten gerendert. Dafür wurden die Rohkarten aus Illustrator zuerst in SVG umgewandelt. Anschließend parst ein Skript das SVG-XML und generiert eine JSON-Datei mit einer Pfad-ID (=Gemeinde/Bezirksziffer) und dem entsprechenden SVG-Pfad. Dieses JSON wird vom Wahlcomputer geladen und mit Raphael im Browser entweder als SVG oder VML ausgegeben. Da der Anteil an Internet Explorer 8 noch sehr hoch ist, musste dieser Umweg leider in Kauf genommen werden. Solange Windows XP noch im Umlauf ist, wird sich an dieser Situation leider nicht viel ändern, da aktuelleren Versionen von Internet Explorer zumindest Windows Vista benötigen.
Eine Karte im JSON-Format.ORF.atBundeslandkennziffern und SVG-Pfade in einer JSON-Datei

Im Großen und Ganzen sind wir sehr zufrieden mit diesem Setup, bei dem der Server die grobe Datenaufbereitung vornimmt und erst im Browser die Darstellung erfolgt. Kleinere Probleme wurden mittlerweile beseitigt. Allerdings stellen veraltete Internet Explorer Installationen uns Entwicklern einige Hürden in den Weg. Durch den Umweg über Raphael benötigt die Darstellung der Karten deutlich länger als „natives“ SVG. Da Microsoft im kommenden Jahr ein Ende vom Extended Support für Windows XP angekündigt hat, könnte sich dieses Problem allerdings schneller als erwartet in Luft auflösen. Für die drei weiteren Wahlen im Frühjahr bzw. Herbst sind wird somit gut gerüstet.

Der Wahlcomputer im Einsatz

Philipp Naderer-Puiu,