What's the Point of oFono?


Even though free software was born on the server, and is currently battling to gain a foothold on the desktop, it is generally accepted that it will also thrive in two other quite different areas: embedded systems, and mobile devices.

As far as the GNU/Linux-based offerings for the latter are concerned, there's already one platform from the LiMo Foundation, together with Google's Android (and maybe Moblin if you include other kinds of mobile internet devices.) On top of that, there are also open source platforms that are not built on top of Linux, for example that from Symbian.

Against that background, you might think that the last the world needs is yet another mobile platform, but Intel and Nokia beg to differ:

Intel and Nokia are pleased to jointly announce the oFono project, an open source project for developing an open source telephony solution.

oFono.org is a place to bring developers together around designing an infrastructure for building mobile telephony (GSM/UMTS) applications.

Review the oFono architecture diagram for more information.
Review the source code for an even closer look.

oFono is licensed under GPLv2, and it includes a high-level D-Bus API for use by telephony applications of any license. oFono also includes a low-level plug-in API for integrating with Open Source as well as third party telephony stacks, cellular modems and storage back-ends.

Of course, the obvious question is: What makes oFono different? I'm glad you asked:

oFono aims to provide an easy to use interface that can be used to create rich telephony applications without requiring one to have a deep understanding of the underlying technology and its limitations. To accomplish this, oFono provides language-independent D-Bus API that is extremely easy to use without generated bindings or other 'messy' steps typically required to use an IPC based API.
The API follows the following four basic principles:



Easy to use



The API should be consistent. Functionality in oFono is broken up into Interfaces, each with well-defined set of Properties. Each interface has a GetProperties() and a SetProperty() method which is used to accomplish majority of the tasks. Naming conventions are also strictly enforced. This means that once you're comfortable using one Interface, you should be able to easily orient yourself to use others.


The API should be minimal; there shouldn't be more than one way of accomplishing a task as this leads to confusion and API bloat. We also aim to maintain API compatibility whenever possible, from the very beginning. This means that oFono APIs wil generally focus on the most important use-cases. Other features will be carefully considered before being included in the APIs.


At the same time, the APIs must be rich and complete enough to enable the creation of feature complete mobile phones. Thus, APIs for all aspects of telephony are planned, incudling but not limited to Voice calls, SMS, Cell Broadcast, Supplementary Services and SIM Phonebooks.

Easy to use

oFono aims to make writing telephony applications as easy as possible. Thus oFono will take care of the core logic, including things necessary for standards compliance. This will allow application writers to focus on what they should be doing: presentation aspects and funky animated Uis.

This is interesting for a number of reasons. First, because it seems to be trying to do something different from the usual “create open source code and see what someone can do with it” approach. It is taking the modularity that lies at the heart of free software to the next level, exposing functionality through a very simple API. That means it will appeal to those who don't necessarily want to mess around with the underlying code (although they always have the option of doing so).

It's also extremely interesting because it comes from Intel and Nokia. Intel was originally backing Moblin in this area, but recently passed the project over to the Linux Foundation. The announcement of oFono confirms my suspicions at the time that Intel decided Moblin had failed to gain traction. I fear, therefore, that Moblin will now go nowhere fast: there are just too many alternatives offering more modern approaches, and too few developers to support all the initiatives, however worthwhile they may be.

More intriguing is the fact that Nokia was also behind the open-sourcing of Symbian's code last year. So it will be interesting to see how it maintains its commitment to both mobile projects. I can't believe that it's giving up on Symbian in the same way that Intel gave up on Moblin, so it must see oFono as addressing a different market. Perhaps Symbian's open source code is aimed at the serious mobile hackers, putting together high-end smartphones, where oFono is more for companies that want a basic toolkit for creating mass market products quickly and easily.

Whether or not that's true, the appearance of oFono, with its novel, simplified approach, is yet another vote of confidence in open source on mobiles, and yet another reason to keep an eye what happens in this hugely important sector.

Update: A couple of people have suggested that oFono may represent a different part of the mobile stack from Android and LiMo. That's certainly plausible, even if the diagram on the site doesn't make it clear (to me, at least). But I stand by my comment that Intel is moving away from Moblin, and that the latter is likely to be increasingly sidelined as other projects gain strength.

Follow me @glynmoody on Twitter or identi.ca.