Der Wahl-O-Man lebt!

Heute nun kommt das womöglich am längsten andauernde Softwareprojekt meiner noch relativ jungen Entwicklerkarriere zu seinem glorreichen Ende und wird auf die Öffentlichkeit losgelassen: Der Wahl-O-Man.

Wahl-O-Man

Gezeichnet hat diesen jungen Herrn übrigens Valerie Esch.

 Worum geht es?

Natürlich geht es wieder um die Wahl zum XXXVI. Studierenenparlament der Uni Bonn. Bereits am 10. Juli 2013 wurde im SP ein Antrag verabschiedet, der die akut mit… nun ja, der Entwicklung eines Konzepts, das in einem Antrag münden… Also letztendlich wussten die Parlamentarier nicht, wen sie überhaupt womit genau beauftragen wollten. Am Ende jedoch, das stand fest, sollte ein dem Wahl-O-Mat der bpb ähnliches Teil stehen, mit dem man sich seine Lieblings-Liste zur Wahl auswürfeln lassen kann.

Die akut übernahm die ganze Sache dann.

Inhaltlich wurde das Projekt von einer Arbeitsgruppe innerhalb der akut-Redaktion vorangetrieben, Thesen wurden gesammelt (auch von den zur Wahl antretenden Listen), sprachlich schön geschliffen, dann den Listen zugeleitet und ausgewertet. Diese Arbeitsgruppe hat sich auch den wohlklingenden Namen ausgedacht.

Die technische Umsetzung des Wahl-O-Man hingegen habe ich an mich gerissen übernommen, weil es mich gereizt hat. Woraus baut man einen Wahl-O-Man?

Bootstrap

Bootstrap ist ein von Twitter entwickeltes Framework, mit dem man sich halbwegs hübsche Webseiten quasi zusammenstöpseln kann. Das ganze besteht aus wenig HTML, viel CSS, und falls man noch Effekthascherei dazu haben will (au ja!) etwas JavaScript. Der Wahl-O-Man verwendet noch Bootstrap 2.3.2, wie es bereits beim Liveticker der Fall war. Ich konnte sogar teilweise Teile des Tickers recyceln, was sehr hilfreich war.

PHP-Internals

Hübsche Einzelseiten alleine machen noch keinen Wahl-O-Man. Das eigentliche Programm ist in PHP geschrieben, wie auch schon der Liveticker. Code reuse gab’s auch hier. Eine Datenbank wird für den Wahl-O-Man allerdings nicht benötigt.

Die einzelnen Antworten und Gewichtungen des Benutzers werden in PHP-Session-Variablen gespeichert und am Ende mit den vorgegebenen Antwortvektoren der Listen verglichen – wie die Punktzahl im Detail berechnet wird, habe ich bereits in einem älteren Artikel beschrieben. Die Interaktion mit dem Benutzer ist größtenteils eine reine GET-POST-Orgie.

Volkszählung

Natürlich möchte man auch wissen, wie viele Personen denn das spannende Listensortierspiel spielen. Hierzu wird in einer internen Variable gespeichert, wie oft eine IP-Adresse den Wahl-O-Man „durchgespielt“ hat. Die IP-Adresse wird dabei nicht direkt gespeichert, sondern nur ein mit der PHP-Funktion crypt erzeugter Hashwert, der mit einem zufälligen String gesalzen wird, der täglich durch einen neuen ersetzt wird. Somit sollten sich aus den Statistikdaten nicht einmal mehr die IP-Adressen der Besucher rekonstruieren lassen1. In der Auswertung bekommt man pro Tag angezeigt, wie viele Adressen den Wahl-O-Man aufgerufen haben und wie oft er insgesamt aufgerufen wurde.

OpenGraph

Wir sind hip, wir sind cool, wir wollen auch ordentlich auf Facebook geteilt werden können. Dazu habe ich heute noch OpenGraph-Metadaten in die Startseite eingebaut. Das Problem mit Facebook ist allerdings, dass es eine einmal eingegebene URL im Cache speichert und dann Änderungen an den OG-Tags keine Auswirkungen mehr haben.

Abhilfe schafft hier der „Debugger“ von Facebook, dem man eine URL übergeben kann, die er dann neu lädt und untersucht. Und Holladiewaldfee, es klappt!

2-Klick-Tweet-und-Share-Buttons

Wo ich gerade dabei war wollte ich noch versuchen, Tweet- und Share-Buttons zu integrieren. Allerdings mit 2-Klick-Lösung, wie sie zum Beispiel bei heise.de zum Einsatz kommt. Das entsprechende Heise-Plugin ist allerdings schon zwei Jahre alt, und so funktionierte lediglich der Twitter-Button anstandslos: Beim Aktivieren des Facebook-Buttons wurde zwar etwas nachgeladen, aber das Feld blieb leer. Das Teilen über Google+ schlug stets fehl und eine ganz und gar nicht hilfreiche Hilfeseite öffnete sich.

Etwas Abhilfe konnte ich mit Hilfe des entsprechenden Wordpress-Plugins schaffen: Nach einiger Handarbeit lässt sich nun auch der Facebook-Knopf blicken.

Wo kann man dieses Meisterwerk deutscher Ingenieurskunst nun bewundern?

Haha. Ha. Aber den Wahl-O-Man gibt’s ab sofort, unverzüglich, hier.

  1. Was der Server hingegen so alles von sich aus speichert, weiß ich jetzt spontan nicht.

Bist du’s? Oder bist du’s nicht?

Der Ältestenrat ist so ein Gremium der verfassten Studierendenschaft, über das man gemeinhin sehr wenig weiß1. Wenn man etwas tiefer in der Materie steckt, dann stolpert man hin und wieder über Sätze wie „Der Ältestenrat hat damals entschieden…“ oder „Was sagt denn der Ältestenrat dazu?“

Wer ist der Ältestenrat eigentlich?

Ein Blick in die Satzung der Studierendenschaft sagt eigentlich alles:

§ 32 Funktion
(1) Der ÄR ist bei allen in seine Zuständigkeit fallenden Angelegenheiten das oberste
streitschlichtende Organ der Studierendenschaft.
(2) Er hat zudem die Aufgabe, die Kontinuität in der studentischen Selbstverwaltung
zu wahren.
(3) Er ist allen übrigen Organen und Gremien der Studierendenschaft gegenüber
unabhängig und selbständig.

§ 33 Zusammensetzung und Wahl
(1) Der ÄR besteht aus neun Studierenden, die sich um die Studierendenschaft
besonders verdient gemacht haben.
(2) Sie werden mit der Mehrheit der SP-Mitglieder gewählt und können nicht
abberufen werden. Eine Wiederwahl ist möglich.
[...]
(5) Mitglieder des ÄR dürfen für kein anderes Organ oder Gremium der studentischen
Selbstverwaltung kandidieren oder ihm angehören.

Kurzum: In den Ältesrenrat setzt das SP Leute, die mal wichtig waren und jetzt Ahnung haben und sonst nix mehr tun. Ihr Wissen stellen sie den aktiven Jungspunden zur Verfügung und schlichten Streitigkeiten, falls nötig.

Warum erzählst du uns das?

Derzeit sind ja Wahlen. Also eher Wahlvorbereitungen. Und ungefähr das zweite, was ich in Zusammenhang mit den Wahlen gelernt habe, ist folgendes:

Eine Liste gilt dann als die selbe Liste wie bei der letzten Wahl, wenn ihr Name exakt identisch ist.

– diverse Ältestenratsmitglieder und weitere wichtige Personen

Warum ist das so? Nun, offenbar habe der Ältestenrat das mal so entschieden.

Nun haben sich zur letzten Wahl und zur aktuellen Wahl diverse Listen mit geänderten Namen beworben. Nach dem was da oben steht müssten diese also als neue Liste behandelt werden. Und die Wahlordnung legt fest, dass auf dem Stimmzettel zunächst die Listen aufgeführt werden, die bereits zur letzten Wahl angetreten sind, und dann folgen die neuen Listen in alphabetischer Reihenfolge.

Bei der letzten Wahl war dies allerdings deshalb unkritisch, da der Wahlausschuss von vor 2 Jahren die Listennamen in der Wahlzeitung und im Endergebnis mal so und mal so geschrieben hat. Es war also nicht möglich, zu überprüfen, ob die Namen identisch zum Vorjahr waren oder nicht. Deshalb wurden damals mit Augenmaß die meisten Listen als diejenigen vom Vorjahr eingestuft. Als Folge dessen wurde allerdings letztes Jahr penibelst darauf geachtet, dass die Listennamen an allen Stellen korrekt notiert wurden.

Zu dieser Wahl ist es also problemlos möglich, herauszufinden, welche Listen (= welche Listennamen) zur letzten Wahl bereits angetreten sind, und das vom Ältestenrat beschlossene Kriterium kann direkt angewandt werden. Die „neuen“ Listen „ghg-campus:grün bonn“, „Liberale Hochschulgruppe an der Uni Bonn (LHG)“ und „Liste Undogmatischer StudentInnen (LUST)“ wanderten deshalb zunächst in alphabetischer Reihenfolge ans Ende der Liste.

Großes Gejammer.

Moment amoal.

Kommen wir nun zur Gretchenfrage: Gibt es diese Beschluss eigentlich und wenn ja, was steht da wirklich drin?

Eine Nachfrage des (aktuellen) Wahlausschusses beim Ältesrenratsvorsitzenden hat ergeben, dass es wohl wirklich einmal einen diesbezüglichen Beschluss gegeben hat. Der Beschluss als solcher wurde noch nicht gefunden, allerdings gibt es Informationen zur Ausgangssituation: Damals™ hat sich wohl eine grüne Hochschulgruppe in zwei grüne Hochschulgruppen aufgespalten. Eine Gruppe hieß dann irgendwas mit GHG und die andere irgendwas mit campusgrün. Und dann ging es um die Frage, wer das tolle Wahlergebnis vom Vorjahr gewinnbringend für die Platzierung auf dem Stimmzettel nutzen durfte. Der diesjährige Wahlausschuss nahm dies zum Anlass, seine Entscheidung über die Listenreihung auf dem Stimmzettel noch einmal zu überdenken und aufgrund der vollkommen anderen Ausgangssituation die Listen trotz abweichender Namen ihren Pendants vom Vorjahr zuzuordnen.

Transparenz!

Der Ältestenrat als Institution hat ein großes Problem. Versucht mal, herauszufinden, wen die aktuellen Mitglieder des Ältestenrats sind.

Genau. Außer einem kleinen Absatz auf einer kleinen Unterseite auf der AStA-Homepage findet sich nichts über dieses Gremium der Weisen im großen Internet. Dabei sind laut Satzung2 alle Organe der Studierendenschaft – und damit auch der Ältestenrat – „verpflichtet, ihre Beschlüsse in geeigneter Form, insbesondere durch Aushang oder auf Informationsblättern sowie an geeigneter Stelle im Internet zu veröffentlichen“. Was passiert, wenn das nicht geschieht, sieht man am aktuellen Beispiel: Man meint, es gebe da irgendwie so einen Beschluss, aber wirklich gesehen hat den letztlich noch niemand.

  1. Gut, das könnte man jetzt über jedes Gremium der Verfassten Studierendenschaft sagen…
  2. Siehe § 4 Satzung der Studierendenschaft

PANIK!! Auf meinem Studiausweis ist keine Zahl im Feld „Gremienwahlen“!!!

Nur die Ruhe. Alles wird gut. Du darfst trotzdem wählen gehen.
Aber beginnen wir von Anfang an.

Wie allgemein bekannt ist, bin ich in diesem Winter Mitglied im Wahlausschuss des Studierendenparlaments und außerdem Mitglied im Wahlvorstand für die Gremienwahlen.

Nun ergab es sich, dass wir im Wahlausschuss einem Erstsemestrigen den Wahlvorgang erklären wollten. Kollege Rump zückte seinen Studiausweis mit den Worten „und hier auf der Rückseite hast du eine Zahl stehen, die… oh.“

Ein Fehler in der Verwaltung

Wenn die Studierenden unter euch mal ihren Studiausweis der Uni Bonn herausholen und umdrehen, dann sehen sie dort 5 Dinge:

  • Eine Liste ihrer Studiengänge samt Fachsemesterzahl,
  • hinter einem dieser Studiengänge ein Sternchen (*); das ist das Fach, in dem sie für die Fachschaftswahlen wahlberechtigt sind,
  • einen Strichcode ihrer Matrikelnummer und ebendiese darunter,
  • ein leeres Feld für die SP-/Fachschaftswahl und
  • ein Feld für die Gremienwahlen, in dem eine Zahl zwischen 0 und 9 steht1.

So sieht das aus, wenn alles in Ordnung ist:

Mein Studentenausweis aus dem 4. Semester, vor der großen Lochung

Mein Studentenausweis aus dem 4. Semester, vor der großen Lochung

Kollege Rump bemerkte nun, dass auf seinem Ausweis keine Zahl im Gremienwahlfeld stand. Und auf meinem Ausweis steht die auch nicht. Und auf Kollege Ostmeyers auch nicht. Der Rest der Anwesenden hingegen hatte seine Zahl dort wo sie sein sollte. Es gab also schonmal solche und solche.

Mein Studentenausweis aus dem 5 Semester. Leicht lädiert, noch ungelocht, aber zu wenig Zahlen.

Mein Studentenausweis aus dem 5 Semester. Leicht lädiert, noch ungelocht, aber da fehlt eine Zahl.

Eine weitergehende Recherche bestärkte meine Vermutung, dass vermutlich die gesamte Mathematisch-Naturwissenschaftliche Fakultät keine Zahl im Gremienfeld hatte, wenn man mal den Informatik-Diplomstudiengang außen vor lässt. Doch dann tauchten auch noch aus der Rechtswissenschaft und der Philosophischen Fakultät Ausweise auf, deren Gremienwahlfelder ebenso leer waren wie meins. Nun war klar: Niemand war mehr sicher.

Der Wahlvorstand für die Gremienwahlen forschte bei der Univerwaltung nach, und es bestätigte sich: Eine Eingrenzung des Fehlers ist nicht möglich, jeder Ausweis kann betroffen sein. Woran es lag, dass so viele Ausweise keine Zahl aufgedruckt bekamen, ist wohl noch unklar.

Wofür brauch ich die Zahl überhaupt?

Im Januar sind wieder einmal Wahlen, genauer gesagt vom 20. bis zum 23. Januar. (Das steht hier nebenbei bemerkt momentan auch ganz fett im Header.) Wenn ihr wählen wollt, geht ihr in eins der Wahllokale und bekommt dann bis zu 4 Stimmzettel:

Zum einen wird ein neues Studierendenparlament (SP) gewählt. Diese Wahl organisiert der Wahlausschuss des SP. Wenn ihr euren SP-Stimmzettel in die SP-Urne geworfen habt, bekommt ihr ein hübsches Loch ins Feld „SP-/Fachschaftswahl“ in euren Studiausweis gestanzt.

Zum anderen werden auch die Mitglieder in diversen Gremien der Uni neu gewählt. Diese Wahlen leitet der Wahlvorstand für die Gremienwahlen. Ihr bekommt einen Stimmzettel für den Senat, einen für den Beirat der Gleichstellungsbeauftragten, falls ihr ein Weibchen seid2,  sowie einen Stimmzettel für euren Fakultätsrat oder den Vorstand des Bonner Zentrums für Lehrerbildung. Und da liegt der Hund begraben.

Wenn nun in dem Feld auf dem Ausweis keine Zahl steht, wissen die Wahlhelfer an der Urne nicht, welchen Fakultätsratsstimmzettel sie euch geben dürfen. Und das ist generell ungünstig.

Partnersuche

Die Lösung wird relativ pragmatisch und simpel sein: Man geht nach dem Fach mit dem Sternchen.

Die Wahlhelfer an der Urne bekommen eine Liste, auf der jedem Studiengang eine Fakultätskennziffer zugeordnet ist. Wenn zum Beispiel ich dann an die Urne trete und für den Fakultätsrat wählen will, suchen die Wahlhelfer das Fach auf meinem Ausweis, hinter dem ein Sternchen steht (Informatik). Dann suchen sie in ihrer Liste diesen Studiengang und erfahren, dass auf meinem Ausweis eigentlich eine 6 stehen müsste. Und dann geben sie mir den Stimmzettel für den Fakultätsrat der Mathematisch-Naturwissenschaftlichen Fakultät. Ich mach meine Kreuzchen, werf die Stimmzettel in die Urne für die Gremienwahlen und bekomme auch ins Feld „Gremienwahlen“ ein dekoratives Loch gestanzt.

Grenzfälle

Einige werden jetzt aufschreien, denn da wäre noch ein Haken: Es gibt Personen, die haben ihr Sternchen hinter einem Fach, das aber gar nicht zu der Fakultät gehört, in der sie wahlberechtigt sind. Diese ausgefuchsten Spezialisten bekommen einen Eintrag in der Negativliste3 und dürfen dann auch für genau die Fakultät wählen, für die sie eigentlich wahlberechtigt sind.

Die Wahlhelfer haben dieses Mal also etwas mehr Aufwand als sonst, aber dank der Fächerlisten sollten die fehlenden Zahlen sonst keine größeren Probleme verursachen.

Warum hat das vorher niemand bemerkt?!

Tja. ‚S isch halt so. Ich kenne mich ja aus und habe auch erst vor kurzem gemerkt, dass die Zahl fehlt. Passiert. Nach so etwas guckt aber auch wirklich niemand.

Was für Wahlen sind das?

Wahlen zum Studierendenparlament und zu den Gremien der Universität

20. – 23. Januar 2014

falls ich es noch nicht erwähnt haben sollte 😉

  1. Die Zahl bezeichnet dabei die Fakultät (oder Pseudofakultät), für die die Wahlberechtigung zum Fakultätsrat besteht:
    0 = keine Wahlberechtigung für Fakultätsräte;
    1 = Katholisch-Theologische Fakultät;
    2 = Evangelisch-Theologische Fakultät;
    3 = Rechts- und Staatswissenschaftliche Fakultät, Wahlkreis Rechtswissenschaften;
    4 = Medizinische Fakultät,
    5 = Philosophische Fakultät,
    6 = Mathematisch-Naturwissenschaftliche Fakultät;
    7 = Landwirtschaftliche Fakultät;
    8 = Bonner Zentrum für Lehrerbildung (hat keinen Fakultätsrat, aber einen Vorstand);
    9 = Rechts- und Staatswissenschaftliche Fakultät, Wahlkreis Wirtschaftswissenschaften
  2. heißt, falls ihr keinen Studentenausweis, sondern einen Studentinnenausweis besitzt
  3. In der Negativliste stehen alle, bei denen Besonderheiten zu beachten sind: Zweit-, oder Drittschrift als Ausweis, keine Wahlberechtigung für Senat, …