Die Rolle von Python im neuen OpenMoko Framework

Auf der Seite http://wiki.openmoko.org/wiki/OpenmokoFramework gibt es ein Punkt der sich mit der Rolle von Python im neuen Framework befasst.

Es geht darum das wenn neuer Code geschrieben werden muss dieser in Python geschrieben wird, sprich die entsprechenden dbus Services in Python geschrieben werden. Als Grund wird die prototypische Natur von Python sowie der Betonung der dbus API (was auch immer damit gemeint ist). Außerdem sind verkürzt die Python die Zeiten die bei dem Experimentieren mit der API vergeht gegenüber kompilierten Sprachen wie C bzw. C++.

Sobald die API’s durch Anwendungsentwickler genutzt werden können, kann damit begonnen werden zu schauen ob bestimmte Services noch ein implementiert werden bzw. auf Geschwindigkeit optimiert werden z.B. unter zu Hilfename von Pyrex (http://en.wikipedia.org/wiki/Pyrex_(programming_language)), Cython (http://www.cython.org/) und Ctypes (http://python.net/crew/theller/ctypes/).

Status des GSoC Projektes „Speech Recognition in Openmoko“

In dem Google Summer of Code Projekt „Speech Recognition in Openmoko“ geht es um die Entwicklung einer Anwendung zur Spracherkennung. Geplant ist das diese Anwendung erst vom User trainiert werden muss und anschließen das macht was der User ihm sagt :)

Es geht dabei nicht um eine ausgewachsene Spracherkennung sondern um eine simple Erkennung welche, ein gesprochenes Wort erkennen soll und mit einem Wörterbuch, in welchen 5 bis 10 Wörter stehen, vergleicht und feststellt welches Wort gemeint ist. Dazu soll das Hidden Markov Modell implementiert werden.

Zur Zeit testet der Autor die Hidden Markov Implementation. Seine nächsten Schritte bestehen nun darin den Quelltext auf die Openmoko Plattform zu portieren und das ganze auf einem echten Freerunner zu testen.

Weitere Informationen gibt es unter:
https://svn.projects.openmoko.org/svnroot/speech/
http://code.google.com/soc/2008/openmoko/appinfo.html?csaid=B631058E670ECFAC
http://saurabh1403.wordpress.com/

Let us impact the material world

Ich habe gerade die neuste Ankündigung (Announce) von Sean Moss-Pultz gelesen. Er erzählt davon wie er schon seit zwei Jahren die Geschichte von Openmoko erzählt und er ruft uns auf auf die echte Welt Einfluss nehmen damit wir eine neue Open Source Realität erschaffen. Zumindest habe ich das so verstanden :) Er plant einen Blog zu eröffnen in dem andere Menschen ihre Erfahrung teilen können wie ihr Neo die Welt beeinflusst hat.

Er schreibt auch über das Openmoko-Projekt an sich im Vergleich mit der Herstellung von anderen Produkten welche meist von Professionellen geplant und gebaut werden und somit kennt er die Grenzen seines Produktes und geht nur selten über diese Grenzen hinaus. Der Amateur hingegen geht über diese Grenzen hinaus und erst die Erfahrung zeigt ihm die Grenzen.

In der Mitte des Textes geht er auf John Maeda’s „Laws of Simplicity“ ein und zitiert gleich eines dieser Gesetze:

Simplicity is about subtracting the obvious, and adding the meaningful.

Das bedeutet in etwa so viel wie das Einfachheit sich aus dem Abziehen des Offensichtlichen und dem Hinzufügen des Bedeutungsvollen ergibt. Das Neo war in seiner jetzigen Form einfach zu komplex. Also musste etwas getan werden, indem das Offensichtliche abgezogen wurde und das Bedeutungsvolle hinzugefügt wurde. Heraus kam das neue Openmoko Framework, damit alles einfacher wird… :)

Der Daemon pyPimd

Der Daemon pyPimd welcher ein Teil des neuen Openmoko Frameworks ist, kümmert sich um das Personal Information Managment (PIM). Dazu gehören die Adress-, und Nachrichtenverwaltung (z.B. E-Mails, SMS, Instant Messenger), Anrufhistory, Kalender und Events und weitere Sachen. Neben diesen Funktionen stellt er (bzw. soll es in Zukunft) auch Funktion zur Synchronisation mit dem Desktoprechner (z.B. über Protokolle wie SyncML) bereit. Es handelt sich also um einen Daemon welcher die PIM Backend Funktionen bereit stellt. Er wird im Rahmen des Google Summer of Code 2008 von Abraxa entwickelt.

Der Entwicklungsplan von Abraxa gliedert sich dabei in etwa in folgende Punkte: Im ersten Schritt soll ermittelt werden welche Features für eine vollständige PIM Infrastruktur benötigt werden. Danach wird versucht dieses Features in eine logische Struktur zu bringen (Telefonbuch API, Messaging API, API für intelligente Abfragen) damit diese in eine dbus API gegossen werden können.

Anschließend sollen ein prototypisch Daemon/Client Paare für den Test geschrieben werden, damit die ganze API getestet werden kann. Nach diesen Tests kann dann damit begonnen werden die API soweit verbessert das sie für Drittentwickler einfach zu nutzen ist.

Zur Speicherung der Daten ist zu sagen, das jedes Plugin dabei selber bestimmten darf wie es seine Daten speichert (z.B. als CSV Datei oder als SQLite Datenbank). Natürlich kann sich an diesem Konzepten immer noch viel ändern bis die finale Version erscheint.

Weitere Informationen dazu gibt es unter http://www.neo1973-germany.de/wiki/pyPimd.

Status des neuen Openmoko Frameworks

Mir sind grade die Statusberichte des neuen Frameworks über den Weg gelaufen was natürlich eine tolle Möglichkeit darstellt mal etwas über den aktuellen Status zu schreiben :)

Im großen und Ganzen sind einige Leute zur Entwicklung des Frameworks hinzugestoßen und vor kurzem wurde der erste Meilenstein (Groundhog Day) freigegeben. Das passende Image dazu ist unter http://downloads.openmoko.org/framework/ zu finden. Dieses Framework liefert Zhone (zusammengesetzt aus Zen und Phone) als Testapplikation für das Framework mit.

Um den Meilenstein zu testen sind folgende Schritte nötig:
– das neue uImage (Kernel) und die .jffs2 (Root Dateisystem) für das passende Gerät müssen heruntergeladen werden (http://downloads.openmoko.org/framework/milestone1/)
– dann kann das neue Image mittels dfu-util draufgeflasht werden (om-gta01 für Neo1973, om-gta02 für NeoFreerunner)
– anschließend kann das Gerät gebootet werden und dann heißt es warten bis der „Openmoko – Please wait…“ Screen verschwindet.

Sollte der Screen nach zirka zwei Minuten immer noch nicht verschwunden sein, so heißt es neubooten. Dies ist durch einen Bug bedingt bei dem das erste booten des Images nicht wie gewünscht funktioniert.

Mit diesem ersten Meilenstein sind schon simple Telefonanrufe möglich. Außerdem wurden folgende dbus APIs veröffentlich:
– org.freesmartphone.Device
– org.freesmartphone.Usage
– org.freesmartphone.Event
– org.freesmartphone.GSM

Suspend und Resume funktionierend in diesem Release noch nicht zu 100%. Außerdem sollte man an Funktionalität auch nicht mehr als die eben erwähnte Fähigkeit zum Führen von Telefonaten erwarten. Feedback und Kommentare zur API sind ausdrücklich erwünscht.

Im nächsten Schritt soll die API Dokumentation verbessert werden (http://www.freesmartphone.org) und an dem Meilenstein 2 gearbeitet werden.

Links:
http://wiki.openmoko.org/wiki/OpenmokoFramework