Journal

Artikel-Schlagworte: „open source“

Navit: eine freie Navigationslösung für den Palm Pre und WebOS

Mittlerweile ist die freie Navigationssoftware Navit via Preware für WebOS verfügbar. Zuvor war die Anwendung einige Wochen nur über den separaten Testing-Feed erreichbar. Navit ist für verschiedene Plattformen verfügbar und wurde nun auch auf WebOS portiert. Die Software kann Kartenmaterial von OpenStreetMap sowie spezielle proprietäre Kartendaten verarbeiten.

Da es bisher – jedenfalls für europäische WebOS-Nutzer – keine Navigationslösung gibt, ist Navit besonders interessant. Ich muss allerdings gleich vorab warnen: Navit funktioniert zwar mittlerweile, ist jedoch – abhängig von den geladenen Kartendaten – recht langsam und noch nicht wirklich benutzerfreundlich.

Die Installation ist recht einfach – jedoch ist zwingend WebOS 1.4.5 erforderlich! Ist diese Voraussetzung erfüllt, einfach folgende Schritte ausführen:

  1. Falls noch nicht geschehen, muss Preware installiert werden.
  2. In Preware unter “Komplette Liste” bzw. “Verfügbare Pakete” nach “Navit” suchen und die Anwendung installieren. Für die Anwendung müssen zwei Abhängigkeiten mit installiert werden: “speechd”, eine Sprachsynthese-Bibliothek, sowie “locale” für die Internationalisierung.
  3. Nun muss Navit gestartet werden. Startet die Anwendung nicht, auch nicht nach einem Geräteneustart, liegt das recht wahrscheinlich an einem Fehler von Palm im WebOS-Update auf 1.4.5 (hier näher beschrieben). Die einfachste Lösung des Problems: es muss der “Emergency Fstab Fixer” via Preware installiert werden. Nach der Installation muss der Neustart des Telefons bestätigt werden – danach sollte Navit zumindest starten.
  4. Nach dem Start von Navit sind noch keine Kartendaten vorhanden, da diese nicht mitgeliefert werden. Am Einfachsten installiert man sich das freie Kartenmaterial von OpenStreetMap. Diese können mit verschiedenen Tools detailliert für bestimmte Areale heruntergeladen werden – für viele Länder gibt es vorgefertigte Links beim Navit-Projekt. Die Karten für Deutschland werden mit ~490MiB angegeben – bei mir waren es im Endeffekt rund 670MB, die man im Pre erst einmal freischaufeln muss. Zum Download erhält man eine *.bin-Datei, die Navit lesen kann. Nach dem Klick auf den Link kann es einen Moment dauern, bis der Download startet. Recht einfach ist jedoch auch der Download eines bestimmten Areals über den Planet Extractor, durch die Auswahl eines kleineren Bereichs kann man Platz auf dem Gerät sparen.
  5. Nun muss der Pre per USB-Modus an den PC angeschlossen werden. Die heruntergeladene *.bin-Datei muss nun in den Ordner appdata/org.webosinternals.navit/maps kopiert werden, der beim ersten Start von Navit erzeugt wurde (und leer sein müsste).
  6. Nach dem Entfernen des Pre vom PC kann Navit gestartet werden und sollte die Karten anzeigen. Die Performance könnte – wie bereits erwähnt – besser sein, jedoch wird berichtet, dass bei kleineren Kartenausschnitten und/oder weniger enthaltenen POIs im Kartenmaterial die Performance deutlich steigt. Hier kann man sicherlich noch etwas Performance einsparen.

Eine englische Installationsanleitung sowie ein paar kurze Bedienungshinweise gibt es bei webos-internals.org, die auch die Anwendung auf WebOS portiert haben sowie für die Entwicklung von Preware verantwortlich sind.

PRODROMUS, ein minimaler JavaScript-XMPP-Client

PRODROMUS Mini-XMPP-ClientAuf meiner Kontakt-Seite befindet sich schon eine Weile mein XMPP-MiniChat-Client “PRODROMUS”. Nun habe ich ihn endlich unter der AGPL veröffentlicht. “Prodromus” steht lateinisch für “Eilbote”.

PRODROMUS ist ein simpler XMPP-Client, der vollständig in JavaScript geschrieben ist. Er benutzt die großartige Bibliothek Strophe.js von Jack Moffit, um sich zu einem XMPP-Server zu verbinden und ermöglicht es somit dem Besucher, mit einer vorkonfigurierten Person via XMPP zu kommunizieren. PRODROMUS ist als Ergänzung zu einem Kontaktformular gedacht – er lässt sich in bestehende Websites einbinden und erweitert die Kontaktmöglichkeiten um Echtzeit-Kommunikation.

Eine kurze Installationsanleitung sowie die erforderlichen Voraussetzungen gibt es im Wiki.

Freie Lizenzen, freie Inhalte und freie Software

Besonders in der IT-Branche wird häufig von “Open Source” gesprochen. Aber geht es wirklich nur um offen gelegten Quelltext oder darum, dass freie Software kostenlos ist? Gibt es etwas Vergleichbares auch für beliebige andere Inhalte? Dies soll ein kurzer Überblick über dieses Thema sein.

Es geht in diesem Zusammenhang vor allem um freie Lizenzen – Lizenzen, mit denen der Urheber jedem freistellt, die Inhalte zu jedem beliebigen Zweck zu nutzen, Kopien davon weiterzugeben (also zu teilen) und die Inhalte beliebig zu verändern. Es geht also insbesondere um die Freiheit der Nutzer sowie gegen die Einschränkung dieser Freiheit, beispielsweise durch Digitales Rechtemanagement (DRM), das dem Benutzer die Kontrolle über Daten und Software auf seinem eigenen Computer nimmt. Endbenutzer-Lizenzverträge – wie beispielsweise die von Microsoft Windows oder Apple MacOS – sind meist darauf ausgelegt, dem Nutzer die Freiheiten zu entziehen.

Der Ursprung liegt in der Freien Software – eine Bewegung, die sich für quelloffene Software unter freien Lizenzen einsetzt. In diesem Zusammenhang ist vor allem die Free Software Foundation zu nennen, die freie Software fördert und für die Einhaltung freier Lizenzen streitet. Eine der bekanntesten Lizenzen für freie Software ist die GPL. Sie gewährt den Benutzern die genannten Freiheiten und beinhaltet darüber hinaus das Copyleft – das sicherstellt, dass Software unter dieser Lizenz weitergegeben sowie Veränderungen an der Software unter derselben Lizenz veröffentlicht werden müssen, die Software also frei bleibt. Eine Weiterentwicklung der GPL, die AGPL, dehnt die Wirkung der GPL auch auf Netzwerkdienste aus, die von der GPL nicht erfasst werden. Nutzern eines Content-Management-Systems, das unter der AGPL steht, muss also beispielsweise der (ggf. veränderte) Quellcode der Anwendung zur Verfügung gestellt werden.

Aber freie Lizenzen gibt es nicht nur für Software. 2001 entwickelte Lawrence LessigCreative Commons” – ein Lizenzmodell, das sich vom klassischen Urheberrecht abgrenzt und auf Offenheit setzt. Jeder kann diese Lizenzen frei für seine Werke nutzen – und zwar für alle Werke, die durch das Urheberrecht geschützt sind, also unter anderem Musik, Texte, Fotos und Forschungsergebnisse. Creative Commons besteht aus vier Bausteinen, die in verschiedenen Formen miteinander kombiniert werden können:

  • BY – Namensnennung des Autors erforderlich
  • NC – nicht-kommerzielle Nutzung
  • ND – keine Änderungen erlaubt
  • SA – Weitergabe nach Veränderung nur mit gleicher Lizenz (Copyleft)

Die Lizenz CC-BY-SA, unter der auch die Inhalte dieses Blogs stehen, erlaubt es beispielsweise jedem, die Inhalte frei zu nutzen – mit der Bedingung der Namensnennung (z.B. Verlinkung zurück auf diesen Beitrag) sowie der Verpflichtung, die davon abgeleiteten Werke auch unter eine CC-BY-SA-Lizenz zu stellen.

Weiterhin gibt es einige Abwandlungen wie Sampling-Lizenzen. Eine weitere Form – wenn auch u.a. in Deutschland rechtlich nicht möglich – ist Public Domain, ein Totalverzicht auf alle Rechte am eigenen Werk.

CC-Lizenzen sind mittlerweile an vielen Stellen – besonders im Netz – zu finden. Jamendo vertreibt CC-Musik, Flickr unterstützt die Verwendung von CC-Lizenzen für Bilder und seit 2009 stehen alle Inhalte der Wikipedia sowie sämtlicher Wikimedia-Inhalte unter der CC-BY-SA-Lizenz.

Ein bekannter Aktivist, der sich für eine Liberalisierung des Urheberrechts einsetzt, ist der Science-Fiction-Author und Blogger Cory Doctorow, bekannt unter anderem als Autor bei Boing Boing. Er stellt alle seine Bücher und Werke unter einer Creative Commons-Lizenz ins Netz – was ihm sogar deutlich höhere Verkaufszahlen seiner gedruckten Bücher beschert haben soll.

FrOSCon-Programm-App für WebOS

Wer am kommenden Wochenende zur FrOSCon nach St. Augustin fährt, kann die Programmpunkte, die er besuchen möchte, bequem auf seinem Palm WebOS-Gerät planen.

Ich habe meine ursprünglich für die FOSDEM geschriebene WebOS-Anwendung erweitert und um eine Favoriten-Funktion ergänzt.

Die Anwendung habe ich zur Prüfung an Palm übermittelt – sie wird hoffentlich noch rechtzeitig bis zum Wochenende veröffentlicht. Wer sie bereits testen möchte, findet die Anwendung im Palm Beta feed – einfach diesen Link über das WebOS-Smartphone öffnen, dann kann die Anwendung einfach installiert werden.

Die Anwendung ist freie Software und steht unter der GPLv3, der Quelltext ist hier verfügbar.

Server Name Indication (SNI) mit Ubuntu 10.04 (“Lucid Lynx”)

Bei “Name-based virtual hosts” in Verbindung mit SSL gibt es ein Problem: “by design” war es nicht möglich, mehrere virtuelle SSL-Hosts mit unterschiedlichen Domains und Zertifikaten parallel auf einer IP-Adresse und demselben Port zu betreiben. Problem ist, dass zuerst zwischen Client und Server die verschlüsselte Verbindung aufgebaut wird (bei der das Zertifikat bereits benötigt wird). Erst anschließend werden die HTTP-Header über die verschlüsselte Verbindung gesendet, in denen dann auch der Hostname steht, der jetzt möglicherweise aber gar nicht mehr zum Zertifikat passt. Einzige Lösung war bisher, pro SSL-IP eine eigene IP-Adresse (bzw. notfalls einen anderen Port) zu verwenden.

Abhilfe gibt es theoretisch bereits seit mehreren Jahren: Server Name Indication (SNI) ist eine Erweiterung des SSL-Protokolls, bei der einfach bereits beim Verbindungsaufbau vor dem SSL-Handshake der gewünschte Hostname mitgesendet wird.

Serverseitig benötigt diese Erweiterung insbesondere OpenSSL ab Version 0.9.8f sowie Apache ab 2.2.12 – außerdem müssen beim Kompilieren diverse Flags gesetzt sein. Seit Ubuntu 9.10 “Karmic Koala” sind sämtliche Voraussetzungen erfüllt, ich habe SNI nun erstmalig problemlos mit 10.04 “Lucid Lynx” im Einsatz. SNI funktioniert mit Apache und OpenSSL nun ohne Neu-Kompilieren “out of the box”.

Die Vorgehensweise ist im Prinzip ganz einfach: nach einem

NameVirtualHost *:443

können in den Apache-Konfigurationsdateien mehrere virtuelle SSL-Hosts definiert werden, die jeweils eigene SSL-Zertifikate besitzen. Weitere Infos sind im Apache-Wiki sowie hier zu finden.

Eine weitere Option erlaubt das Erzwingen von SNI: übermittelt ein Client nicht die SNI-Header, kann er den jeweiligen virtuellen SSL-Host nicht erreichen. Diese Option ist standardmäßig auf “off”.

SSLStrictSNIVHostCheck on

Der Haken: neben dem Server muss natürlich auch der Client SNI unterstützen. Internet Explorer unter Windows XP unterstützen SNI generell nicht (wobei es Berichte gibt, dass mit XP SP3 die Unterstützung vorhanden ist), Konqueror beherrscht SNI ebenfalls nicht. Ein Überblick über die Browser-Unterstützung findet sich hier. Ob ein Browser SNI unterstützt, kann man bei sni.velox.ch testen.

Zumindest in einigen Bereichen kann man SNI trotz der teilweise fehlenden Client-Kompatibilität bereits einsetzen – die client-seitige Unterstützung wird sich in Zukunft weiterhin verbessern.

Ein Artikel zum Thema ist in der c’t 23/09 erschienen und ebenfalls bei sni.velox.ch zu finden.