Roadmap/Telephony
From Openmoko
This is the official roadmap of the OpenMoko Inc. Telephony team as of 2007/12:
Contents |
Introduction
As OpenMoko, Inc. progresses its work on the OpenMoko platform, we see that a major focus needs to be on the Middleware and Services layer -- to make the platform attractive for developers and further product line partners.
The telephony subsystem is of major importance, since after all, the Neo1973 is a line of GSM-phones, but also since future products will be designed incorporating telephony as a vital feature -- not necessarily only GSM though.
Responsibilities and Cooperations
The Telephony Team emerged out of the gsmd team. The gsmd team was very layer-specific and had no clear roadmap except "improving gsmd". The new telephony team will act more cross-layer and hence be responsible for the OpenMoko "phone experience" and the middleware that drives 3rd party applications and products using telephony as a feature.
In order to leverage this, we will cooperate with business partners and the community. The first examples are cooperations with the LiPS forum and the freesmartphone.org community. In fact, I expect the OpenMoko Inc. telephony team being a very vital part of the freesmartphone.org movement and community.
Telephony Middleware Platform
| TODO: draw architecture diagrams properly and upload as images (See: To-Do List) |
What we have now
dialer, messages | panel-gsm phonekit | libmokogsmd libgsmd gsmd kernel (no MUX)
What we are heading towards
| (LiPS compatible world)
dialer, messages, gsm-panel, ... | (libTAPI)
ophoned, phoneactivationd
kernel (including MUX)
Note: Don't be shocked, this is _not_ a proposal to throw everything away and do it differently and from scratch -- I'm not _that_ crazy ;) This rather is how I'd like to see the our telephony subsystem platform merge into in 6 months from now (hopefully earlier, but you know...) and it's important that we all understand and share a common goal.
Explanations
First, what's libTAPI and this LiPS thing?
You may have have heard about LiPS forum proposing APIs to unify the Linux telephony world (one platform to rule them all, you know ;). We are not going to turn OpenMoko into a LiPS-compliant platform, _but_ we are looking forward to cooperate with LiPS to get them write the glue to make OpenMoko partly compliant, hence spreading OpenMoko as a platform. In a nutshell, libTAPI is a C-library from LiPS that is the central base library for their "enabler" libraries.
Next, what's this ophoned + phoneactivationd?
- ophoned is the reference implementation of the freesmartphone.org Open Phone Server
- phoneactivationd is the glue to make application activation happening, e.g. when the phone server receives an incoming voice call, it signalizes this to the phoneactivationd which then launches the appropriate application handling voice calls (e.g. openmoko-dialer).
Now, where did libmokogsmd2 go?
libmokogsmd is no longer necessary. The freesmartphone.org Open Telephony Dbus API is high-level enough to make it easy to write all kinds of telephony-aware applications.
Ok, and where did libgsmd and gsmd go?
Ah, finally the question we all have been waiting for. Before we get there, some more information about the Open Phone Server: Open Phone Server is divided into a frontend and a backend:
- The Frontend handles Dbus Communication and Caching Strategy
- The Backend handles Modem Communication
I imagine we will have multiple backends... why? Mutiple reasons, e.g. see below.
So, where did libgsmd and gsmd go?
Short story: They will be the first backend of ophoned.
Long story: We need to get something going very quickly. libgsmd and gsmd are here and they work most of the time. So, we are going to promote them as the first backend for the open phone server.
In the future we might see more backends, e.g. I really would like to see Qtopia using our open phone server frontend with their own Qt-based modem communication code. That means we could share more parts of the platform.
Then again, we will have to change or rewrite gsmd as well. Why? We will soon see an in-kernel GSM 07.10 MUX implementation. This means we have multiple tty nodes from where we can read different types of AT commands. This can substantially simplify the design of the modem communication and make it more robust.
Therefore, we are working on a modified gsmd once the MUX implementation is there and writing this as a new backend for ophoned. By then, all our userland application have been migrated to use the Dbus API hence we can switch the ophoned backend without having to change them.
Milestones
(Note: These are unordered -- see timeline below)
- Open Telephony API first draft specified
- ophoned framework done (frontend/backend communication)
- ophoned first backend (=libgsmd/gsmd) written.
- OpenMoko Dialer and Messages can use ophoned.
- in-kernel MUX implementation released
- gsmd-next-gen designed
- ophoned second backend (=gsmd-next-gen) implemented.
Timeline
| TODO: to be written. Strategy: take milestones, break down in tasks and estimate TTC, then assign to member (See: To-Do List) |


