Zur Kultur der Freien Software gehören auch die zahlreichen Veranstaltungen – Austausch und Kommunikation untereinander sind enorm wichtig. Der GridCalendar macht die Open-Source-Vielfalt jetzt überschaubarer.
Seit es freie Software gibt, kommen deren Entwickler und Anwender zum Austausch zusammen. Innerhalb der letzten Jahre hat nicht nur die Menge der Treffen zugenommen, sondern auch die Spezialisierung auf bestimmte Themen. Im Blick zu behalten, welche Interessengruppen sich regelmäßig wo zusammenfinden, ist mittlerweile nur noch schwer möglich. Von 2003 bis 2008 gab es eine umfangreiche Liste von Veranstaltungen zu freier Software [1], die beispielsweise 2008 schon über einhundert große Veranstaltungen verzeichnete. Diese Übersicht stellte bisher eine einzige Person – Sven Guckes aus Berlin – manuell zusammen.
Gerade weil das Internet so zahlreiche Möglichkeiten für Ankündigungen bietet – Webseiten, Wikis, RSS-Feeds, Mailinglisten – erwies es sich als zunehmend mühselig, die Daten so vieler Veranstaltungen zusammenzutragen und abzugleichen. Mittlerweile gibt es derart viele sowohl große als auch lokale Open-Source-Veranstaltungen, dass nicht mal ein Team eine halbwegs vollständige Übersicht aktuell halten könnte. Die Lösung lag eigentlich auf der Hand: das Auslagern der Aufgabe auf eine große Gruppe von Menschen, neuhochdeutsch: Crowdsourcing.
Auf der Suche
Zwar gab es bereits andere Kalender, zu denen man Veranstaltungen hinzufügen konnte, aber keiner davon bot die Möglichkeit eines einfaches Editierens und den Export in eigene, weitere Kalender. Mittlerweile existieren mehr oder weniger lokalisierte Übersichtslisten mit solchen Funktionen – doch klappt das Eintragen oder Ändern von Veranstaltungsdaten in der Regel nicht ohne Benutzerkonto und Berechtigung. Zudem “gehören” die Daten anschließend oft dem Betreiber der Website, der oft ein gemeinschaftliches Nutzen und das Wiederverwenden auf anderen Plattformen ohne ausdrückliche Genehmigung ausschließt.
Der FLOSS-Calendar von Sven Guckes enthielt speziell jene Veranstaltungen, die mindestens einen ganzen Tag ausfüllten. Einzelne Vorträge und Workshops waren in einem separaten Kalender untergebracht. Viele Communities, insbesondere die Linux-Usergroups (LUGs) führen zwar eigene Kalender, aber diese basieren auf untereinander inkompatiblen Systemen, die einen gegenseitigen Austausch von Veranstaltungsdaten nicht zulassen.
Im Herbst 2010 fanden sich Verantwortliche aus verschiedenen Berliner LUGs zusammen, um über mögliche Lösungen des Problems zu beraten. Zu diesem Zeitpunkt hatten Sven Guckes und Iván Villanueva bereits mit dem Projekt GridCalendar (GriCal, [2]) begonnen und stellten es als Lösungsansatz vor. Die Idee fand begeisterte Aufnahme, virtuelle Server wurden gesponsert.
Daneben wurden als mögliche Lösungen auch WebCalendar, einige CMS und DisCal [3] diskutiert. Letzterer ist eine clevere Idee von Paul Hänsch, ein schlankes Programm zu schreiben, das jeder auf seinem Server installieren und für seine Website anpassen darf. Jede Installation kommuniziert als dezentrale Instanz mit anderen DisCal-Installationen und ermöglicht so einen Abgleich der Veranstaltungsdaten. Fällt eine Instanz aus, belieben alle Termine dennoch verfügbar.
Offene Informationen
Hinter GridCalendar stecken zahlreiche Ideen, die sich alle um den Schwerpunkt offene Informationen und freier Zugang dazu gruppieren. Die Software GridCalendar steht unter der Freien Lizenz AGPL 3, die Daten im Kalender unter einer Creative-Commons-Lizenz. Daher lassen sie sich mit Anderen teilen und insbesondere ohne Genehmigung anderweitig bearbeiten und wiederverwenden. Dank offener Formate gelingen die Umwandlung und der Im- und Export leichter. Um am Kalender teilzuhaben und Veranstaltungen einzutragen, braucht man nicht zwingend eine Registrierung, ähnlich wie bei Wikipedia.
Die Sortierung der Veranstaltungen bei der Ausgabe erfolgt nach dem Datum und insbesondere den Deadlines: Eine Konferenz, bei der die Frist für Beitragsanmeldungen oder den Ticket-Kauf unmittelbar bevorsteht, erscheint ganz vorne in der Liste – egal, an welchem Datum die Veranstaltung dann tatsächlich stattfindet. Somit gehen wichtige Vorab-Termine nicht mehr versehentlich unter (Abbildung 1). GridCalendar versucht, die ganze Breite des Browserfensters auszunutzen, um so viele Veranstaltungen wie möglich neben- und untereinander darzustellen. Künftig sollen sich über Themes aber auch andere Darstellungen realisieren lassen.

Abbildung 1: GriCal sortiert Veranstaltungstermine anhand der immanenten Deadlines, die er zwischen Klammern darstellt.
Um das Auffinden von Veranstaltungsdaten möglichst einfach zu machen, bietet GridCalendar nur ein einziges Suchfeld an, das am oberen rechten Rand der Webseite seinen Platz findet. Eine einfache Suchanfrage umfasst nur eines oder wenige Worte. Meist findet der Benutzer damit bereits die Veranstaltung, die ihn interessiert. Es gibt aber auch weiterführende Optionen: Eine Suche nach #floss gibt alle Veranstaltungen mit der Markierung “floss” aus, eine Suche nach @berlin filtert alle Veranstaltungen mit dem Ort Berlin aus der Datenbank. Solche erweiterten Suchbegriffe lassen sich bei Bedarf auch kombinieren.
Auf der rechten Seite des Suchergebnisses präsentiert GriCal Veranstaltungen, die eine hohe Ähnlichkeit mit den bereits gefundenden Events aufweisen. Eine Suche nach dem Tag #floss beispielsweise zeigt auf der rechten Seite auch Veranstaltungen an, die mit #foss ohne L markiert sind. Das funktioniert automatisch, sofern einige Termine mit beiden Tags eingetragen wurden. Dieses Verfahren hebt nicht nur das bekannte Problem der Synonyme beim Suchen auf (ähnliche Veranstaltungen, aber mit unterschiedlichen Tags versehen), sondern erleichtert auch das Auffinden von Veranstaltungen, die womöglich in einer anderen Sprache getaggt wurden. Sofern es einige Veranstaltungen gibt, die sowohl freie-software als auch free-software als Tags aufweisen, merkt sich GridCalendar beide Begriffe als Synonyme.
Erweiterte Möglichkeiten
Im Suchergebnis bietet GriCal auch Links für eine iCal-Datei sowie einen RSS-Feed an. Ohne sich anmelden zu müssen, können Sie den Feed abonnieren oder regelmäßig die iCal-Datei importieren. Neue Veranstaltungen integriert GriCal in diese Verweise.
Eine normale Suche ergibt nur Veranstaltungen, die mindestens ein Datum (etwa den Start der Veranstaltung) an Tag der Suche oder in der Zukunft haben. Sie können aber auch diesen Zeitraum explizit eingrenzen: Mit der Angabe 2011-03-01 2010-03-31 @berlin finden Sie alle Veranstaltungen, die im März 2011 in Berlin stattfinden. Auf diesem Weg suchen Sie gegebenenfalls auch nach Terminen in der Vergangenheit – etwa, wenn Sie nachsehen möchten, was an Events stattfand.
Interessengruppen wie Vereine und Entwicklerteams können über einen einfachen Link interessante, ausgesuchte Veranstaltungen als eigene Liste zusammenstellen. Beispielsweise bietet der FFII e.V. bereits eine Liste [4] an, die sich auf die Themen Softwarepatente und europäische, digitale Politik fokussiert.
Zu den erklärten Zielen von GriCal zählt neben der einfachen Bedienung vor allem ein robuster Quellcode (siehe Kasten “GriCal: Die Interna”). Eins der Eingabeformate für eine Veranstaltung besteht aus einfachem, aber strukturierten ASCII-Text, der dem Prinzip von Schlüsselwort und dazugehörigem Wert folgt. Jede Zeile besteht aus einem Keyword, gefolgt von einem Doppelpunkt, einem Leerzeichen und den nachfolgenden Daten (Abbildung 2).
Diese Daten können Sie wie gewohnt über ein Webformular mit integrierter Anbindung zum Openstreetmap- und Google-API eingeben, aber auch einfach per E-Mail an die Webseite schicken (event@grical.org). GriCal prüft die zugesendeten Daten und übernimmt sie dann in die Datenbank des Kalenders. Als Ausgabeformate stehen bislang Plaintext, HTML, iCal und RSS zur Verfügung. Die erzeugten Links sind kurz und lesbar.
GriCal: Die Interna
GridCalendar wird in Python programmiert. Die Entwickler entschieden sich für diese Sprache, weil Python in der Umfeld der freien Software ein hohes Ansehen genießt. Daher gibt es viele Programmierer, die bereits positive Erfahrungen mit Python gesammelt haben.
Moderne Webapplikationen werden heute nicht mehr von Grund auf neu entwickelt, sondern vielfach mithilfe sogenannter Web Application Frameworks erstellt. Diese ermöglichen durch vorgefertigte Module etwa für die Benutzerverwaltung oder das Generieren von RSS-Feeds eine schnelle Entwicklung dynamischer Webseiten. In Sachen Framework entschieden sich die Entwickler für Django [5], das Programmierlogik (den Quellcode) und Darstellung (HTML- und CSS-Dateien) konsequent trennt. Daneben bietet Django eine sehr bequeme Datenbank-Abstraktion, die das Einbinden verschiedener Datenbanken unterstützt, ohne diese per Hand bedienen zu müssen. Django generiert die Datenbanktabellen und bietet eine sehr gut dokumentierte Schnittstelle in Python. Den GriCal-Quellcode haben die Entwickler bereits für eine Übersetzung in andere Sprachen vorbereitet, geplant sind etwa Deutsch und Spanisch. Dafür gibt es für Django beeindruckende Werkzeuge wie Rosetta [6].
Die Entwickler legen großen Wert darauf, Fehler im Quellcode möglichst automatisch zu erkennen und über Bugs umgehend Bescheid zu wissen. Dafür wurden Hunderte von Tests programmiert, und jeder Fehler auf der Webseite löst automatisch einen ausführlichen Fehlerbericht per E-Mail an den Entwickler aus. Dem Benutzer erhält lediglich eine kurze Quittierung des Fehlerzustands, muss aber selbst keine Fehlerberichte schreiben.
Den GriCal-Quellcode haben die Entwickler sehr ausführlich dokumentiert, darüber hinaus existieren einige Dokumentationsdateien wie eine Installationsdatei. Die Qualität des Quellcodes unterliegt einer ständigen Analyse mithilfe des Werkzeugs PyLint. Dabei erreicht GriCal einen Qualitätswert von rund 9 Punkten (maximal gäbe es 10), sofern man einige Besonderheiten von Django ignoriert: Die dynamische Generierung von Properties beispielsweise erkennt PyLint nicht und wertet sie als Fehler.
Für die Verwaltung von anzustrebenden Features, zu beseitigenden Bugs und Ähnlichem Dient die freie Software Trac, ein webbasiertes Werkzeug zur Software-Entwicklung (Abbildung 3). Trac kommt auch bei vielen bekannten Projekten zum Einsatz, wie etwa Openstreetmap oder Django selbst. Die Versionierung des Quellcode erfolgt mittels Mercurial. Sie können den Quellcode bei Interesse online ansehen oder mit Mercurial lokal speichern, entweder mithilfe eines Programms mit eingebauten Mercurial-Funktionen oder über einen Aufruf auf der Kommandozeile:
$ hg clone http://gridcalendar.net:8001 gridcalendar
Das setzt lediglich voraus, dass Mercurial auf dem Rechner installiert ist. Für Debian/Ubuntu heißen die erforderlichen Pakete mercurial und mercurial-common. Den neueste Quellcode (Mercurial Tip) können Sie auf http://dev.grical.org ausprobieren. Die stabile Version von GridCalendar und die bereits eingetragenen Veranstaltungen erreichen Sie dagegen nur auf der Hauptseite [2]
Die Liste der geplanten Features fällt, wie bei freien Softwareprojekten üblich, sehr lang aus [7]. Aus diesem Grund freuen sich die Entwickler auch auf jeden neuen Mitstreiter, der Lust und Interesse aufbringt, sich an dem freien Projekt zu beteiligen. Wie üblich gibt es auch bei diesem Projekt einen eigenen Kanal auf IRC (#calendar auf Freenode) sowie eine Mailingliste [8]. Zudem hält das Projekt Vorträge bei den üblichen Open-Source-Events und veranstaltet in unregelmäßigen Abständen auch Treffen für Benutzer und Entwickler.
Anmeldung
Alle beschriebenen Möglichkeiten von GriCal können Sie ohne jegliche Anmeldung nutzen. Sobald Sie sich aber auf der Webseite GriCal.org registrieren, eröffnen sich einige zusätzliche Möglichkeiten.
So erhalten Sie beispielsweise auf Wunsch per E-Mail Benachrichtigung über Veranstaltungen mit bestimmten Tags und an ausgesuchten Orten. Dazu speichern Sie einen Suchvorgang als eigenen Filter ab. Wann immer neue Veranstaltungen im Kalender hinzukommen oder Daten von bestehenden sich ändern, prüft GriCal auch alle Filter auf möglich neue Treffer und informiert Sie gegebenenfalls mit einer Nachricht.
Daneben können Sie eigene Gruppen erzeugen und andere Benutzer dazu einladen sowie private Veranstaltungen eintragen, die nur für die Mitglieder einer solchen Gruppe sichtbar sind. Jedes Mitglied der Gruppe kann außerdem weitere Benutzer zur Gruppe einladen.
Zusammenfassung
GridCalendar ist sowohl ein modernes, freies Softwareprojekt, als auch eine innovative Website für das Eintragen und Auffinden von interessanten Veranstaltungen. GridCalendar eignet sich auch dazu, mit anderen Projekten, die mit Veranstaltungen zu tun haben kombiniert zu werden, wie etwa dem LinuxBus (siehe Kasten “Wie komm ich zum Event?”). Über die Gruppen-Funktionen können Interessengemeinschaften Veranstaltungen verwalten und bekannt machen.
Die Entwickler von GridCalendar haben sich das Ziel gesetzt, die Offenheit von Wikipedia, die Schlichtheit von Twitter und die Kommunikationsmöglichkeiten von sozialen Netzwerken in einem Onlinekalender zu vereinen.
Wie bei allen nichtkommerziellen Projekten ist bei GridCalendar das Mitwirken vieler Menschen explizit erwünscht und erforderlich – sei es um Veranstaltungen einzutragen, damit andere sie finden können, oder um die Software zum Nutzen aller weiterzuentwickeln.
Wie komm ich zum Event?
Bei jeder Veranstaltung stellt sich die Frage der An- und Abreise sowie der Unterkunft. Wer die Reise nicht allein organisieren möchte, verabredet sich mit Gleichgesinnten – etwa über eine Seite wie LinuxWiki [9]. Seit 2003 bietet sich als Alternative dazu der LinuxBus [10] an (Abbildung 4).
Der von Sven Guckes und Frank Hofmann organisierte LinuxBus fährt im März zu den Chemnitzer Linux-Tagen von Berlin nach Chemnitz. Eine Hin- oder Rückreise kostet 36 Euro, ein Ticket für Hin- und Rückfahrt 56 Euro. Frühe Zusagen honorieren die Veranstalter mit dem sogenannten Mitfahrerrabatt: Wer vor dem Stichtag 5. März bucht, bekommt für jeden Tag 1 Prozent Rabatt auf den Fahrpreis – so lässt sich maximal der halbe Fahrpreis einsparen.
Im LinuxBus sich schon ein wenig vor dem Event mit den Mitfahrern über die Veranstaltung austauschen. Keiner muss den genauen Weg kennen, da ein professioneller Fahrer alle Reisenden sicher und ohne Umsteigen zum Ziel bringt. Ein intensives Studium regionaler Tarifbestimmungen – Bedingungen für Kurzstrecken, Ausdehnung von Tarifzonen, Dauer und Gültigkeit von Tickets kann man sich sparen. Der Bus hält direkt am Veranstaltungsort, lange Wege gibt es nicht mehr. Bequemer geht es kaum noch.
Die Idee mit dem LinuxBus kommt denn auch inzwischen so gut an, dass es seit 2010 auch einen LinuxBus aus dem Ruhrgebiet gibt [11]. Der von Birgit Hüskens mit Unterstützung der Free Software Foundation Europe organisierte LinuxBus-Ruhr fährt von Düsseldorf über Dortmund, Kassel und Erfurt nach Chemnitz.
Ende März veranstaltet die LUG Augsburg an der dortigen Fachhochschule den Linux-Info-Tag Augsburg – in diesem Jahr bereits zum zehnten Mal. Seit 2005 fährt jedes Jahr ein LinuxBus von Chemnitz aus dorthin – diesmal organisiert von Frank Hofmann und Thomas Winde.
Für jede Veranstaltung gilt: Lassen Sie sich einen Nachweis ausstellen, dass Sie vor Ort waren und teilgenommen haben. Dann können Sie die gesamte Fahrt im Rahmen einer Weiterbildung als Werbungskosten in der Steuererklärung geltend machen.
Infos
[1] Sven Guckes’ FLOSS-Calendar: http://www.guckes.net/cal/
[3] DisCal: http://linuxwiki.de/Zentralkalender
[2] GridCalendar: http://grical.org
[4] Veranstaltungsliste der FFII: http://www.grical.org/ffii
[5] Webframework Django (Wikipedia): http://de.wikipedia.org/wiki/Django_(Framework)
[6] Rosetta: http://code.google.com/p/django-rosetta/
[8] Mailingliste zum Projekt: http://lists.gridmind.org/listinfo/grical
[7] Feature-Liste: http://code.grical.org/wiki/FeaturesList
[9] LinuxWiki: http://www.linuxwiki.de
[10] LinuxBus: http://www.linuxbus.de
[11] LinuxBus-Ruhr: http://linuxbus-ruhr.bhwh.de








