[28C3] Presale Sniper-Scripts

Der Vorverkauf zum 28C3 ist vorbei. Am Dienstagvormittag gab es die dritte Chance, Tickets für alle vier Tage zu erwerben. Vor Ort wird es nur noch Tages- und Nachttickets in sehr begrenzter Zahl geben.

Internetkurort
Statt zum Chaos Communication Congress mal schön Urlaub machen

Der Vorverkauf lief nicht besonders glücklich. Der kleine Server (ich kenne die Netzinfrastruktur nicht, aber vom Gefühl her, kommt das am besten hin) mit seinem nginx wurde während der Ticket-Verkaufszeiten mächtig attackiert und lieferte gerne den Fehler “502 Bad Gateway” aus statt die Presale-Webseite anzuzeigen. Insbesondere auf Twitter konnte unter dem Hashtag #28C3 das Ärgernis mitverfolgt werden. Die Ankündigung zum Vorverkauf im CCC-Events-Blog ist mit knapp 300 Kommentaren gut gefüllt.

Bereits zum ersten Vorverkaufstermin kursierten Scripte im Internet, die die Verpeilung abnehmen sollten und automagisch ein Ticket bestellen. Die Vorgehensweise ist grundsätzlich die gleiche: Der Besucher erstellt zu einem beliebigen Zeitpunkt während der gesamten Vorverkaufsphase einen Account im Presale-System, wählt das gewünschte Ticket aus und startet das Script. Dieses ruft in regelmäßigen Abständen die Webseite ab und überprüft, ob Tickets verfügbar sind. Daraufhin wird die Bestellung getätigt.

Ein paar Scripte habe ich gespeichert, aber nicht immer stand die Quelle oder Lizenz dabei. Zum Zweck des Selbststudiums erlaube ich mir die Freiheit, diese hier zu veröffentlichen.

Der automatisierte Webbrowser

#!/usr/bin/env python
# encoding: utf-8
"""
untitled.py

Created by Thorsten Philipp on 2011-11-06.
Copyright (c) 2011 . All rights reserved.
"""


import sys
import os
import platform
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
import time


USERNAME = 'your_username'
PASSWORD = 'your_password'

def main():

    driver = webdriver.Firefox()
    driver.get("https://presale.events.ccc.de/order")
   
    NO_TICKET = True
    while NO_TICKET:
        if driver.current_url == 'https://presale.events.ccc.de/accounts/sign_in':
            username = driver.find_element_by_xpath("//input[@id='account_username']")
            password = driver.find_element_by_xpath("//input[@id='account_password']")
            username.send_keys(USERNAME)
            password.send_keys(PASSWORD)
            password.submit()
       
        # Now wait for the order page
        WebDriverWait(driver, 10).until(lambda x : x.find_element_by_xpath("//input[@value='Confirm Order']"))
        confirmOrder = driver.find_element_by_xpath("//input[@value='Confirm Order']")
        confirmOrder.submit()
        time.sleep(5)
        errorField = driver.find_element_by_xpath("//div[@id='flash_error']")
        if errorField.text == 'There are currently not enough tickets available.':
            print "%s. Trying again" % errorField.text
            driver.get('https://presale.events.ccc.de/order')
        else:
            print "Something else happend! Maybe a successful order? I'm not touching anything any more. Please take over Commander"
            while True:
                if platform.system() == 'Darwin':
                    os.system("say Help")
                else:
                    print "\a"
                time.sleep(10)


if __name__ == '__main__':
    main()

Das erste mir bekannte Sniper-Script nutzt die Python Bindings des Selenium/Webdriver Projekts. Es öffnet einen Browser (in diesem Fall Firefox), ruft die Presale-Webseite auf, logt sich mit dem gegebenen Usernamen und Passwort ein und wartet in einer Schleife darauf, dass Tickets verfügbar sind. Dem Autor dieses ersten Scripts war nicht bekannt, wie die Seite aussehen würde, wenn Tickets vorhanden sind. Das Script gibt nur einen Hinweis aus (unter Mac OS X wird auch eine Sprachausgabe gestartet) und lässt den Benutzer weiter machen.

Screen-Scraping

import requests
from BeautifulSoup import BeautifulSoup
from time import sleep

s = requests.session()

username = ''
password = ''

print "CCC-Presale 28C3 Script by @sctan [https://github.com/szechuen/CCC-Presale]"

# Sign In

print "Accessing Sign In..."

while True:
    sign_in = s.get("https://presale.events.ccc.de/accounts/sign_in")
    if sign_in.ok: break
    print "Request Error - Retrying..."

sign_in_soup = BeautifulSoup(sign_in.content)

account_post = {}
for item in sign_in_soup.findAll("input", type="hidden"): account_post[item['name']] = item['value']
for item in sign_in_soup.findAll("input", type="submit"): account_post[item['name']] = item['value']
account_post['account[username]'] = username
account_post['account[password]'] = password

account_link = "https://presale.events.ccc.de" + sign_in_soup.find("form")['action']

# Account

print "Accessing Account..."

while True:
    account = s.post(account_link, data=account_post)
    if account.ok: break
    print "Request Error - Retrying..."

account_soup = BeautifulSoup(account.content)

ordered = False
page = account
soup = account_soup

while not ordered:

    post = {}
    for item in soup.findAll("input", type="hidden"): post[item['name']] = item['value']
    for item in soup.findAll("input", type="submit"): post[item['name']] = item['value']

    link = "https://presale.events.ccc.de" + soup.find("form")['action']

    while True:
        page = s.post(link, data=post)
        if page.ok: break
        print "Request Error - Retrying..."
   
    soup = BeautifulSoup(page.content)

    last = open("last.html", "w")
    last.write(soup.prettify())
    last.close()

    if soup.find(text=lambda(x): x.find("There are currently not enough tickets available") != -1):
        print "Not Open - Sleeping before retrying..."
        sleep(1)
    else:
        print "Ordered :D"
        ordered = True

Das zweite Script, auch in Python, benutzt den Screen-Scraper Beautiful Soup. Die Selbstbeschreibung lautet “an HTML parser optimized for screen-scraping”. Durch die erste Runde des Vorverkaufs war bereits bekannt, dass nur noch der ‘Confirm’-Button getätigt werden muss, wenn Tickets vorhanden sind. Das macht sich dieses Script zunutze und läuft komplett autark ohne Webbrowser ab. Es geht einfach nur die HTML-Sourcen durch, füllt die Eingabefelder zum Login aus und schickt HTTP-Kommandos ab.

Bash mit curl

#! /bin/bash


#---------------------login and password----------------------------------------

user=$1 && shift
pass=$1


echo "getting for user = $user, pass = $pass"


#-------------------------------------------------------------------------------


cookie="./coockie$user"
agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.928.0 Safari/535.8"



function callit() {

    cmd=$1
    echo $cmd
    res=$($1 -w "%{http_code}")
    echo $res


}

function prepare() {

    login=''


    page=$(curl --retry 100 --retry-delay 1 --connect-timeout 75  -s -A $agent -c $cookie "https://presale.events.ccc.de/accounts/sign_in")
   

    token=$(echo $page  | grep -o '<input name="authenticity_token" type="hidden" value=".*"' | sed s/'.*value="\(.*\)"'/'\1'/g)


    login="utf8=&#x2713;&authenticity_token=$token&account[username]=$user&account[password]=$pass&commit=Sign+in"

   
   
    page=$(curl --retry 100 --retry-delay 1 --connect-timeout 5 -A "$agent" -s -c $cookie  -X POST -d "$login" "https://presale.events.ccc.de/accounts/sign_in")

    page=$(curl --retry 100 --retry-delay 1 --connect-timeout 75 -s -A "$agent" -b $cookie  -c $cookie "https://presale.events.ccc.de/")

    echo $page | grep -o "<td>confirmed</td>" && echo "GOT ITTTTTTTTTTTTTT !!!" && exit 0


    token=$(echo $page| grep -o '<input name="authenticity_token" type="hidden" value="[^"]*"' | sed s/'.*value="\([^"]*\)"'/'\1'/g)


    order="utf8=&#x2713;&authenticity_token=$token&commit=Confirm+Order"

   
}



function getIt() {


    confirm=$(curl --retry 100 --retry-delay 1 -L  -A "$agent" -s -b $cookie  -c $cookie -X POST -d "$order" "https://presale.events.ccc.de/order/confirm/")

    res=$(curl --retry 100 --retry-delay 1 -s -A "$agent" -b $cookie  -c $cookie "https://presale.events.ccc.de/order")

    echo $res
}



prepare








while [ true ]
do

it=$(getIt)


echo $it | grep '<html><body>You are being <a href="https://presale.events.ccc.de/accounts/sign_in">redirected</a>.</body></html>' > /dev/null && echo "error in site " && prepare && continue

ret=$(echo $it| grep -o "<div id='flash[^>]*' class=visible>[^<]*</div>" | sed s/"<div id='flash_\(.*\)'.*visible>\(.*\)<\/div>"/"\1 : \2"/g)

status=$(echo $it | grep status)

echo $ret | grep "^error" && continue

echo $it | grep -o "<td>confirmed</td>" && echo "GOT ITTTTTTTTTTTTTT !!!" && break



done

Auch dieses Script konnte erst nach der ersten Runde des Vorverkaufs entstanden sein, da es überprüft, ob der Status nach der Order auf ‘confirmed’ gesetzt wurde. Der Ansatz, die Webseite mit curl abzurufen und mit grep die wichtigen Daten auszulesen, ist passabel, aber nicht wirklich effizient. Ich habe das Script nicht selbst getestet, aber ich kann mir vorstellen, dass es sehr gut an der CPU knabberte.

KISS-Prinzip

#!/bin/bash


while [ 1 ]; do
wget -q -T 10 -O out --load-cookies=cookie -U "`cat ua`" --post-file=postdata --no-check-certificate https://presale.events.ccc.de/order/confirm
if [ -s out ]; then
grep -q "Confirm Order" out || exit
fi
rm -f out
sleep 1
echo Retrying...
done

In einer Schleife ruft wget mit dem vorher im Browser erstellten Cookie die Routine zum Bestätigen der Order auf – drückt also quasi dauerhaft auf den Button. Das Script gibt erst dann auf, wenn auf der Seite nicht mehr der Text ‘Confirm Order’ erscheint. Eine sehr elegante Lösung, bei der nicht bekannt sein muss, wie die Bestätigungsmeldung aussieht.

Anti-Sniper

In der dritten Runde des Vorverkaufs wurde ein simples Captcha eingeführt. Mit eigenen Augen habe ich es nicht gesehen, aber es war wohl nur die Eingabe einer ausgeschriebenen Zahl notwendig (“six million, one thousand, eight hundred and 5”). Das reichte aus, um Menschen eine Chance zu lassen, denn in der Kürze bis zu dem Zeitpunkt, zu dem die Scripte umgeschrieben sind, dürften alle Tickets bereits vergeben sein.

Hier nicht gelistet, aber den Dämlichkeits-Preis erhält der Autor des Scripts, der es mit vollen Login-Daten auf eine Paste Server Webseite kopierte…

[28C3] Vorverkauf und Veranstaltungsort

Update: Ich bin gebeten worden, Teilnehmerzahlen zu entfernen (durch Internet-Recherche in Presseartikeln auffindbar).

Am Sonntagabend wurde die erste Hälfte der verfügbaren Dauertickets zum 28C3 in einem Online-Vorverkauf herausgegeben. Binnen drei Minuten waren diese weg – wenn der Server gnädig war. Der Ansturm muss enorm gewesen sein und viele potentielle Besucher gingen leer aus. Glücklicherweise wird es noch zwei weitere Termine zu anderen Zeiten anstatt der Prime-Time Sonntagabend geben, zu denen jeweils ein Viertel der verfügbaren Tickets verkauft werden.

Doch warum machen wir überhaupt diesen Vorverkauf, der inzwischen gerne als Verlosung betitelt wird? Erinnern wir uns keine zwei Jahre zurück. Bis zum 26. Chaos Communication Congress konnten die Tickets in alter Tradition direkt an der Kasse gekauft werden. Es gibt diverse (Presse-)Berichte von Congress-Kassenschlangen am ersten Tag, in denen man eine halbe Stunde bis Stunde vor dem Gebäude in der Kälte warten musste. Die Kassenprozesse wurden optimiert, indem mehr Kassen aufgestellt wurden, aber irgendwie ging das immer noch nicht so flott vorwärts. Um das Anstellen vor der Keynote an Tag 1 zu ersparen, wurden dann die Kassen bereits in der Nacht vorher geöffnet. Und damit nicht draußen vor der Tür gewartet werden musste, verlief die Schlange durch das Gebäude. Damals hatte ich ein Bild dazu rumgetwittert:Passend dazu ein Video

Die Wartezeit betrug so zwischen einer und eineinhalb Stunden. Und nach einiger Zeit mussten wir Leute wegschicken, da alle Tickets verkauft waren. Ich wäre echt stinkig, wenn ich zu der Zeit im Winter von Köln nach Berlin gefahren wäre, um dann weggeschickt zu werden.

Vorverkauf

Die Lösung für die Unsicherheit der Teilnahme lautete Vorverkauf. Zu den Chaos Communication Camps 2003 und 2007 hatten wir bereits etwas Erfahrung damit gesammelt. So wurde eine Software gestrickt, mit der Tickets vorbestellt werden können. Die Abwicklung des Vorverkaufs über einen externen Dienstleister kommt beim CCC nicht in Frage. Falls es noch nicht aufgefallen ist, das Vorverkaufssystem lässt sich komplett anonym benutzen, da nur Tokens generiert werden. Selbst die Bezahlung kann anonym und in bar in einem lokalen Clubraum des CCC erfolgen. Zumindest ist das System auf unsere Wünsche angepasst und sehr schlicht gehalten.

Dennoch konnte das System zum 27C3 und jetzt wieder dem Ansturm zum ersten Verkaufstag nicht stand halten. Auch wenn jetzt einige potentielle Besucher enttäuscht sind, dass sie nicht direkt ein Ticket erhalten haben (es gibt noch zwei Termine an denen Tickets verkauft werden), empfinde ich es immer noch fairer als stundenlang in einer Schlange zu stehen oder sogar abgewiesen zu werden. Leider trifft der Vorverkauf auch Leute, die ich gerne beim Congress dabei habe und die einfach dazu gehören. Leute, die in lokalen Clubs aktiv sind, die das ganze Jahr über Arbeit für den CCC machen und die es einfach verdient hätten, auf einer echt großen Veranstaltung in Kontakt mit anderen Leuten zu treten, um sich dort auszutauschen.

Das Interesse am Congress ist groß, die Zahl der Tickets aufgrund des Gebäudes und dem dort verfügbaren Platz begrenzt.

Veranstaltungsort

Ein Vorverkauf wäre zum Congress nicht notwendig, wenn der Veranstaltungsort groß genug wäre, dass wir alle Besucher rein lassen könnten. Der Congress ist bereits mehrmals umgezogen. Angefangen 1984 mit etwa 150 Leuten im Eidelstedter Bürgerhaus in Hamburg (da, wo alle zwei Jahre das EasterHegg stattfindet), wuchs er dort bis 1997 auf eine Größe von 600 Personen – mit Ausnahme des 11. Congresses 1994, der in der Kunsthalle in der Budapester Straße in Berlin statt fand. Mit dem 15. Chaos Communication Congress 1998 wanderte die Veranstaltung komplett nach Berlin rüber. Dazu wurde das Haus am Köllnischen Park gefunden, das jahrelang als Parteihochschule der SED diente. Entsprechendes Equipment für eine Vortragsveranstaltung war vorhanden und der Congress hatte teilweise einen Teilnehmerzuwachs von 50%.

Nach bereits fünf Congressen war dieser Veranstaltungsort zu klein geworden und wir zogen zum 20C3 zusammen mit dem Betreiber in das frisch renovierte bcc am Alexanderplatz. Durch ein extrem gutes Vortragsprogramm, viel Drumherum und ein größeres weltweites Interesse an unseren Themen, gingen die Teilnehmerzahlen weiter hoch.

Es gibt zwei Überlegungen, wie mit dem Ansturm umgegangen werden kann. Die eine ist ein größeres Gebäude und die andere, die Veranstaltung klein zu halten. Komme ich erst zu der zweiten Überlegung. Fragt man Teilnehmer anderer Konferenzen wie die DefCon mit 10.000 oder mehr Besuchern, kriegt man immer wieder zu hören, dass diese Veranstaltung schlicht zu groß ist. Das “familiäre” Gefühl geht verloren und es wird in gewisser weise “fishy”. Der Congress wird gerne positiv dafür beurteilt, dass er noch überschaubar ist. Bei einer Öffnung für mehr Teilnehmer gibt es Befürchtungen, dass vielleicht zu viele (ich drücke es mal leicht aus) “Noobs” dabei sind. Leute, die eher nicht zum CCC passen. Oder Schlipsträger, die meinen, auf dem Congress die Weisheit mit dem Trichter eingefüllt zu kriegen. Schlicht, Leute, die die Atmosphäre des Congresses als Ganzes stören könnten. Letzten Endes machen wir den Congress immer noch für unsere eigene Community, um sich auszutauschen und insbesondere zu treffen.

Die Alternative zum klein halten ist die eines größeren Veranstaltungsorts. Und der muss erst einmal gefunden werden. Im Laufe der Jahre haben sich ein paar Anforderungen herausgebildet, die ein Veranstaltungsort für den Chaos Communication Congress erfüllen sollte:

  • Platz für 6000-10.000 Personen, am besten modular, sodass noch Wachstum möglich ist
  • Winterfest, also mit Heizung und Wänden
  • 3-5 Vortragssäle für 1000-3000 Personen
  • Ausreichend Tische und Stühle
  • Platz für ein Hackcenter mit 2000-3000 Personen
  • Workshop-Räume, am besten mehrere, da Workshops sehr beliebt sind oder als Rückzugsraum für Gruppen
  • Bereiche für Engel, Orga, sonstige Infrastruktur
  • Chill-Bereiche, Lounge
  • Art&Beauty und sonstige Ausstellungsflächen
  • Essen & Trinken im Haus, um dieses nicht verlassen zu müssen
  • kurze Wege zwischen den Räumen
  • Strom + Netzwerkinfrastruktur in brauchbarer Qualität vorhanden
  • gut erreichbare Lage (vor allem mit ÖPNV)
  • Hotels in der Nähe
  • Infrastruktur drumherum (Geschäfte, Restaurants)
  • Bezahlbar, damit die Ticketpreise nicht massiv steigen müssen
  • Mietbar zwischen Weihnachten und Neujahr

Das ist meine persönliche Sicht, zusammengetragen aus vielen Gesprächen in den vergangenen Jahren. Es kann sein, dass etwas fehlt etwas oder ich mich ungenau ausgedrückt habe.

Grundsätzlich wäre eine Hochschule passend, aber ich kenne kaum eine, die neben dem Audimax weitere riesige Vorlesungssäle bereit stellt. Der Nachteil ist hier die Nicht-Verfügbarkeit zum Congress-Termin zwischen den Jahren. Und meiner Meinung nach würde einiges vom Flair der Veranstaltung in den Räumen einer Hochschule verloren gehen. Eine Alternative sind Messe-Hallen, die den Nachteil haben, meistens vor der Stadt gebaut worden zu sein, wo mal rein gar nichts an Infrastruktur drumherum besteht.

Es fällt mir schwer zuzugeben, aber von der Stadt her können wir nur in Berlin bleiben. Hier gibt es wenigstens einen vernünftigen ÖPNV Nachtverkehr, viele Hotels und Hostels und sonstige Infrastruktur drumherum. Zugegebenermaßen, es ist schwierig eine noch bessere Lage als direkt am Alexanderplatz zu finden.

Hier und da tun sich interessante Möglichkeiten auf, wie sie beispielsweise die re:publica 12 wahrnimmt. Diese zieht vom Friedrichstadtpalast (mit der Scheune) in die STATION Berlin am Gleisdreieck um. Die Location ist größer, noch einigermaßen akzeptabel mit zwei U-Bahnlinien angebunden, aber hat sonst nichts an Infrastruktur in der Nähe. Mir fällt spontan nur der Potsdamer Platz oder der Bereich Kurfürstenstraße (nicht -damm) jeweils ein bis zwei Stationen mit der U-Bahn entfernt ein. Zusätzlich hat die STATION den kleinen Nachteil, nicht winterfest zu sein – zumindest erinnere ich mich daran, dass es Räume mit offenen Wänden gibt oder diese inzwischen (wie vor kurzem beim Vorbeifahren gesehen) mit Zeltplanen zugehangen sind.

[28C3] Abhängigkeiten und Parallelisierung

In den vergangenen Tagen sind mir immer wieder Abhängigkeiten in der Planung des Chaos Communication Congress aufgefallen. Oder zumindest Ereignisse, die eine gewisse Reihenfolge aufweisen und die seit Jahren ähnlich ist. Da ich auf diversen Kanälen (E-Mail, Kommentare im event-Blog, Twitter, IRC, Reallife) öfters Fragen erhielt, warum beispielsweise der Fahrplan noch nicht veröffentlicht sei, obwohl der Congress bereits in zwei Monaten gelaufen ist. Hier mein Versuch einer graphischen Darstellung.

Warum das Tool graphviz den “Start” nach oben rechts gelegt hat, bleibt mir ein Rätsel. Der rechte Baum zeigt die Abhängigkeiten, die zur Erstellung des Fahrplans notwending sind. In der Mitte sind eher organisatorische Dinge aufgelistet. Und links, was mit den Tickets und dem Vorverkauf zusammenhängt.

Wie im letzten Beitrag schon geschrieben, gab es dieses Jahr eine Art “Kickoff Meeting” bei dem wir den Call for Participation (CfP) erstellten und einige Termine festlegten. Nachdem der CfP ein paar Wochen lief, wurde die Möglichkeit für weitere Einreichungen abgeschaltet. In den darauf folgenden knapp zwei Wochen fand ein Peer Review mit vielen Freiwilligen statt, die als Vorbereitung zu den Content Meetings dienen. An dieser Stelle vereinfache ich die Grafik: eigentlich haben wir zwei Content Meetings mit zwei Wochen Differenz. Zwischen dem Schließen der Einreichungen und der Benachrichtigung der Speaker vergehen also vier bis fünf Wochen. Erst wenn wir von den meisten Speakern eine Rückmeldung erhalten haben, können wir uns an die Erstellung eines ersten Fahrplans, dem zeitlichen Ablauf des Vortragsprogramms, machen. Und auch hier müssen wir noch mal mit den Speakern in Rücksprache  gehen, ob der ausgewählte Termin für sie passend ist. Wenn wir nur noch wenige Lücken im Programm haben, veröffentlichen wir den Fahrplan.

Parallel zu den Content Meetings finden Orga Meetings statt oder einzelne Personen kümmern sich um Aufgaben. Bereits einige Zeit vor dem Congress wird ein Mietvertrag mit der Location abgeschlossen. Erst wenn dieser in trockenen Tüchern ist, geben wir den Veranstaltungsort bekannt. Der hat sich zwar seit 2003 nicht geändert, aber die Diskussionen der vergangenen Jahre über einen größeren Ort, könnten bei einem passenden Fund eine Änderung bewirken. Erst mit Vertragsunterzeichnung zum Veranstaltungsort erhalten wir einen Rahmen für die Kosten und können damit die Preise für die Tickets kalkulieren. Das Risiko, nicht alle Tickets verkaufen zu können und damit weniger Einnahmen zu erwirtschaften, haben wir seit ein paar Jahren nicht mehr. An dieser Stelle sollte dazu gesagt werden, dass der Ticketverkauf die einzige Einnahmequelle für den Congress ist. Alle anderen anfallenden Ausgaben abseits von der Gebäudemiete verändern sich von Jahr zu Jahr nur geringfügig, sodass wir mit Erfahrungswerten arbeiten können – es sei denn, es werden neue Anschaffungen vorgenommen.

In diesem zeitlichen Bereich der Planung sind einige Aktivitäten optional. Beispielsweise benötigen wir kein komplett fertiges Design für die Webseite. Es geht auch mit einem “nackten” MediaWiki. Ebenso sind Webseite und Fahrplan nicht zwingend für den Start des Ticketvorverkaufs notwendig, es wäre aber echt schick, wenn wir den Gästen schon etwas zeigen könnten.

Rückwärtsauflösung

Beim Kickoff Meeting machen wir eine Art “Rückwärtsauflösung”. Wir schauen, dass wir die erste Version des Fahrplans etwa sechs Wochen vor dem Congress veröffentlichen. In der Vergangenheit gab es auch Congresse, bei denen der Fahrplan einen Tag vorher erschien… Aber dafür haben wir uns genug Schelte eingeholt. Sechs Wochen vor Congressbeginn heißt, um den 15. November. Bis dahin müssen von den Referenten Rückmeldungen zu ihrer Teilnahme eingeholt sein. Da geben wir etwa eine Woche Zeit seit dem zweiten Content-Meeting. Da Content-Meetings am Wochenende stattfinden, sind wir jetzt beim 5./6. November (um beim Jahr 2011 zu bleiben) angekommen. Gehen wir noch weiter zurück, landen wir beim ersten Content-Meeting, das zwei Wochen vor dem zweiten statt findet (22./23. Oktober). Die zwei Wochen werden hauptsächlich aus zwei Gründen benötigt:
1) Zeit zum Nachhaken bei den Einreichern, wenn wir Potential sehen, aber die Beschreibung etwas dürftig oder ungenau ist,
2) externen Teilnehmern des Content Meetings zu ersparen, an zwei Wochenenden hintereinander nach Berlin zu reisen.
Für die Content Meetings wird der Distributed Review benötigt, der mindestens eine Woche betragen soll. Daran entscheidet sich das Datum, wann der CfP geschlossen wird. Dieses Jahr war es der 11. Oktober, sodass wir elf Tage für den Review hatten (was sich lohnte, da viele die Zeit dafür gefunden hatten).

Wollen wir den Fahrplan früher als Mitte November veröffentlichen, wandern alle anderen Termine mit. Bei einem zwei Wochen früheren Release müssten wir den CfP bereits Ende September schließen – das wären drei Monate vor der Veranstaltung. Auch wenn wir immer ein paar Lücken im Fahrplan offen lassen, um wichtigen aktuellen Themen Raum bieten zu können, die seit der Schließung des CfP auftraten, wären doch die meisten Einreichungen ein alter Hut.

Die Katze im Sack

Im Hinblick auf einen möglichst frühen Vorverkauf, bleibt uns kaum eine andere Möglichkeit, als dass die Besucher “die Katze im Sack” kaufen. Es ist nicht bekannt, welche Vorträge auf dem Congress gehalten werden, aber wir bieten schon mal Tickets für diejenigen an, die eh kommen wollen. Dadurch, dass wir nicht direkt alle Tickets auf einen Schlag verkaufen werden, gibt es beim zweiten oder dritten Termin die Chance, sich vorher ein Bild vom Fahrplan machen zu können.

Eine unschöne Situation, aber es ist ein akzeptabler Mittelweg zwischen langsam hibbelig werdenden Besuchern, die sowieso kommen wollen, und solchen, die sich hauptsächlich für die Inhalte interessieren.

Parallelisierung

Es gibt einen Hang zur Optimierung durch Parallelisierung, um möglichst viele Besucher zur gleichen Zeit glücklich zu machen. Das Optimum wäre eine durchgestylte Webseite zeitgleich zum Fahrplanrelease und der Öffnung des Vorverkaufs mindestens drei Monate vor Congressbeginn. Es ist ein Ziel, aber es ist abzusehen, dass wir dieses mit der vorhandenen Manpower und dem Willen, Speakern möglichst viel Zeit für Einreichungen zu geben, nicht erreichen können. Insoweit geben wir uns mit Provisorien ab, bis die endgültigen Lösungen kommen. Diese Zeit versüße ich mir mit Kommentaren der aggressiven Dauernörgler, die alles perfekt und so früh wie möglich haben wollen, aber dann auf der anderen Seite von einer Professionalisierung des Congresses sprechen, wenn alles wie geplant klappt.