Im Herbst letzen Jahres hat der Wikimedia e.V. eine Ausschreibung gestartet. Hier konnten sich Projekte um Geldmittel bewerben, die etwas für freies Wissen im allgemeinen und für die Wikipedia im besonderen machen wollen.
Unter den Bewerbern wurde auch das Projekt zu mehrsprachigen Karten ausgewählt. Initiiert wurde es von Tim Alder, der sich seit Jahren mit der Zusammenarbeit von OpenStreetMap und Wikipedia beschäftigt. Für die programmiertechnische Umsetzung hat er sich an mich, Jochen Topf, gewandt. Ich habe mich als Hauptautor von Tirex, das bei der Wikipedia eingesetzt wird, schon lange mit dem Thema Webkarten beschäftigt.
Ziel des Projektes ist es, die technischen Grundlagen zu schaffen, dass OpenStreeMap-Karten in allen Sprachen angezeigt werden können, in denen es die Wikipedia gibt. Derzeit gibt es Karten in etwa zehn Sprachen. Das ist aber nur ein kleiner Teil der circa 270 Sprachen, die derzeit von der Wikipedia abgedeckt werden. Die Wikipedia sieht sich in ihren Artikeln zu geographischen Objekten durchaus auch als Reiseführer und auch als Alternative zum Schulatlas (selbsterklärter Bildungsauftrag). Bei diesen beiden Anwendungen sind Übersetzungen der Karte in die jeweilige Sprache des Nutzers absolut üblich.
Zur Anzeige im Web werden Karten in Kacheln (Tiles) zerlegt, die jeweils 256×256 Punkte umfassen. Derzeit ist es so, dass die Kacheln für jede Sprache völlig getrennt betrachtet werden. Aber viele Kacheln sind natürlich in allen Sprachen gleich (weil gar kein Name darauf vorkommt). Und viele Kacheln gibt es nur in einigen wenigen Varianten, zum Beispiel wird man für die meisten Kacheln in Deutschland auf einer englischen Karte die gleichen Namen drucken, nur einige Orte wie München haben auch einen besonderen Namen im Englischen (Munich).
Die derzeitige Lösung ist ineffizient und mit vertretbarem Hardwareaufwand nicht für so viele Sprachen umzusetzen. Um eine bessere Lösung zu finden, muss sich das Projekt mit verschiedene Fragen beschäftigen. Zuerst muss man irgendwie erkennen, in welchen Sprachen eine Kachel überhaupt vorliegen könnte. Wir wollen nicht mühsam 200 Mal eine Kachel in Patagonien berechnen, wenn wir nachher feststellen, dass es es nur zwei Sprachvarianten davon gibt. Dafür muss irgendeine Art von Datenbank eingerichtet werden, die einem angibt, wo überhaupt welche Sprachen verwendet werden.
Dann muss der Mapnik-Renderer entsprechend konfiguriert werden, damit er die Namen in der richtigen Sprache in die Kacheln hineinrendert. Derzeit ist das etwas problematisch, weil die ganze riesige Konfiguration für den Mapnik für jede Sprache vorgehalten werden muss, obwohl nur kleine Teile eigentlich verschieden sind.
Sind die Kacheln dann gerendert müssen sie effizient gespeichert werden, zusammen mit der Information für welche Sprachen sie verwendet werden können. Dabei wird es sich häufig nicht vermeiden lassen, dass doch mal zwei Kacheln berechnet werden, die sich als gleich herausstellen. Wir sollten also auch feststellen, wenn Kacheln gleich sind, damit wir sie dann nur einmal speichern, um nicht zu viel Plattenplatz zu verbrauchen.
Bei all diesen Stufen ist auch noch zu berücksichtigen, dass sich die OSM-Daten häufig ändern und die Kacheln daher immer wieder neu berechnet werden müssen. Dabei kann es zum Beispiel sein, dass eine Kachel, die bisher nur in einer Sprache vorlag, jetzt in zwei Sprachen vorliegt und es müssen dann alle nötigen Anpassungen vorgenommen werden.
Die Lösung sollte auch möglichst flexibel sein, sodass man dann im Betrieb experimentieren kann, zum Beispiel damit, wann welche Kacheln neu gerendert werden.
Und trotz dieser vielen komplexen Komponenten muss es auch noch schnell gehen. Die Wikipedia wird von sehr vielen Leuten verwendet und die Kacheln müssen schnell und effizient an den Browser ausgeliefert werden. Und um so weniger Ressourcen das verbraucht, um so besser, weil Hardware in Anschaffung und Betrieb viel Geld kostet.
Eine denkbare Alternative wäre es natürlich, komplette auf Vektordaten umzustellen, also erst im Browser die Karten aus den Rohdaten zu zeichnen und dabei die gewünschte Sprache zu berücksichtigen. Ebenfalls denkbar wäre ein Hybridmodell, bei dem die Karten weiterhin auf dem Server gezeichnet werden, die Namen von Orten, Straßen, usw. aber erst im Browser dazugezeichnet werden. Beide Ansätze gehen aber möglicherweise zu Lasten der Darstellungsqualität und sie erfordern moderne Browser und schnelle Rechner, womit man noch nicht überall rechnen kann. Die Wikimedia muss vorallem auch auf ärmere Länder Rücksicht nehmen, wo viele das Internet über ihr Mobiltelefon oder mit älteren Rechnern nutzen. Außerdem sind die Techniken zum Kartenrendering im Browser noch recht neu und es liegen lange nicht so viele Erfahrung damit vor wie der bewährten „Bitmap-Kachel-Technik“. Wir haben uns daher entschlossen, in diesem Projekt die bewährte Technik fortzuführen und auszubauen.
Das Projekt bringt nicht nur die Wikipedia vorran, sondern hilft allen, die OpenStreetMap-Karten verwenden. Größere und robustere Tileserver brauchen wir auch an anderer Stelle. Und die hier zu entwickelnde Software ist auch über den Bereich der mehrsprachigen Karten hinaus interessant. Will man zum Beispiel Autobahnen entsprechend der in einem Land üblichen Farbe zeichnen und mit den passenden Symbolen versehen, so hat man eigentlich ein vergleichbares Problem: Karten, die für verschiedene Gegenden etwas anders aussehen als in anderen Bereichen. Die Lösung sollte sich also auf andere Anwendungen erweitern lassen, auch wenn das nicht im Fokus dieses Projektes ist.
Das Projekt wird vom Wikimedia e.V. mit 20.000 EUR gefördert. Das erlaubt es mir mehrere Monate lang konzentriert daran zu arbeiten. In der ersten Phase geht es jetzt darum einen Plan zu entwickeln, wie das ganze aussehen soll. Welche vorhandene Software soll zum Einsatz kommen? Welche Komponenten müssen neu programmiert werden? Eine mögliche Komponente ist dabei natürlich der Tileserver Tirex, aber noch sind keine endgültigen Entscheidungen getroffen worden, welche Software verwendet wird.
Hier sind wir auch auf Euren Input angewiesen. Wir wollen insbesondere von denjenigen unter Euch hören, die bereits große Tileserver oder Tileserver mit mehreren Stilen betreiben. Aber auch sonst gibt es sicher Ideen, wie man zum Beispiel die vielen Kacheln effizient speichern oder wie man die Zuordnung von Sprachen zu Kacheln realisieren könnte.
Anregungen, Ideen und Diskussionen sind am besten auf der OSM-Developer-Liste aufgehoben. Ihr könnt Euch aber auch direkt an mich wenden. Koordiniert wird das Projekt über das OSM-Wiki.
Am Mittwoch, den 21. März 2012 werden wir im Rahmen der FOSSGIS-Konferenz in Dessau auch eine Community-Session dazu veranstalten.