English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català
This article discusses the pros and cons of various operating systems for the mobile platform, and tells us why Openmoko is the true ‘open’ platform.
There are many mobile platforms that exist on this planet today. The situation is very similar to the desktop segment, where we have operating systems like GNU/Linux, BSD, Mac OS X, Windows and a few others. To me, the fact that Linux is an open source model makes it a much better OS. We also have great mobile operating systems like Symbian, Windows Mobile Platform and Linux. But none of these are really ‘open’. Surprised to see Linux in this list? Linux as a mobile OS comes in different shapes and sizes that are not very compatible with each other, as there are many different implementations of the platform. There are no common APIs available for developers to build on top of. Examples include implementations from Motorola and MontaVista. At least, this is not the case with proprietary OSs such as Symbian and Windows Mobile. They provide abundant information to aid third-party programmers to build on their platform.
Let us now set aside all this for a while and concentrate on a Linux-based mobile platform project called Openmoko—a project that combines the true essence of open source with a rich application-programming interface. Openmoko is a true conversion of the desktop Linux into mobile Linux, which doesn’t bring in any non-standard or hidden aspects. It was built using standard X-server, GTK, ALSA, Dbus and so on. The beauty is that even the hardware platform is as open as the software platform. Openmoko makes use of a standard platform to make the mobile environment complete. Even the circuit-board hackers will find Openmoko a dream come true!
What is wrong with the others?
Let’s now take a look at what is seriously wrong.
First up is the Symbian OS, considered the Windows of the mobile world. More than 75 percent of the smart phones sold today, run Symbian, and it’s perhaps the most developed mobile operating system, backed by such industry leaders as Nokia, Motorola, Sony and Lenovo. But there are a few things I don’t like about Symbian, which I’m listing below.
- A proprietary OS: Symbian is a closed source OS developed by Symbian Ltd, and perhaps the worst thing about it is that it uses open programs like GCC, Java, Perl and many others in its SDK, but doesn’t share its code base or support any open source OS for its application development.
- A restricted development environment: Symbian only supports Windows for application development. There is no official SDK that can be used with Linux or Mac OSX. What is ironic is that most of Symbian’s SDK components will fail without the supporting open source programs.
- Poor backward compatibility: Every new version of the OS breaks the code. You can’t just recompile the code and run the application on a new platform. You need to re-write the whole application to support the code.
- High-end systems requirements: Symbian phones require a pretty decent hardware configuration to run properly. Even if you do have that, you may come across messages like “Out of Memory”. I am sure that many of our readers using Nokia smart phones are already aware of this.
- Difficult to program: Even though it offers a rich set of APIs, these are difficult to program. You may say that Symbian supports many programming languages, but remember — if you really want to program, you must know that Symbian C++ is very different from the standard C++, and hence has a very steep learning curve.
- Confused UI platforms: Symbian uses two confusing and mutually incompatible UI platforms— namely, S60 (formerly Series 60) and User Interface Quartz (UIQ). For developers, this means that even though you are developing for Symbian, you need to learn UI specific details in order to be up and running.
- Poor developer support: Starting with Symbian 9, the company has started punishing third-party developers. Most of the phone features are open only to subscribers of Symbian Signed. If you are not a member of the Symbian Signed programme, then you won’t be able to make use of many core features of the OS.
- Version lock: The OS doesn’t support OS upgradation—if your machine has got Symbian 9.1, it will remain as it is as long as you use it. You won’t be able to upgrade it to a later version of the same OS. So you are bound to live in the Stone Age unless you spend a fortune on getting a new device with a newer OS.
- Symbian is a mobile-only OS: You can’t use your existing skills to build on it. Or, in other words, you can’t use your Symbian skills anywhere else.
Considering Symbian drawbacks, Symbian is not exactly like Windows on the desktop, even though it is doing quite well. Windows is better than Symbian in some ways. It has got better developer support and has a plethora of developer documentation available. Visual Studio is an excellent IDE for it. But there are a few things I don’t like about Windows Mobile too.
- Microsoft vendor lock: Nothing is worse than a vendor lock-in, where the keys of the locks are with Microsoft.
- Closed source: I don’t need to stress on this, do I?
- Microsoft’s partiality: When it comes to a Microsoft product, there is always a reasonable amount of partiality. One example is in Windows Mobile 6, where some of the improvements to email and the calendar application require that you have Exchange Server 2007. The situation is exactly like that on the desktop, where you can’t have DX 10 if you don’t have Vista. Remember all those anti-trust cases that Microsoft is facing?
- Poor API support: Not all the Windows APIs are available for third party use. You may need to sign an NDA with Microsoft before you want to fully unleash the OS’s potential.
Apple's iPhone is very popular, we must take that into consideration as well. iPhone is not exactly a mobile application platform – rather, it is a product name. And, unfortunately, as of today, there is nothing much in store for the developers and end users. Let’s list the disadvantages here as well:
- Apple’s insane vendor lock: This phone is locked in to Apple and the cellular company, and you as the user, end up paying both.
Why Openmoko is the best
Linux is the best way to program. All that still stands true, as Openmoko is all about programming on Linux itself. And here’s why I think so:
- Open source: It is truly open source—not only in terms of software, but also in terms of hardware. You get to see all the nuts and bolts behind your excellent phone.
- Built from open source: Openmoko is an amazing collection of already popular open source programs to build a mobile development platform.
- Cross-platform development: Moving forward, Openmoko SDK will support Windows and Mac too, thus giving you the option to develop on your choice of platform.
- Easy application development: Since it makes use of popular technologies, it’s pretty easy to get up and running with Openmoko in a very short period of time. All Linux programmers will feel at home, as Openmoko makes use of popular open source components like GTK, X server, ALSA and so on.
- Low on hardware requirements: It doesn’t require a very high-end configuration to run on.
- Great developer support: Even though the project is in its infancy, it already has got great community support. Apart from this, all the components used in building Openmoko have their own communities. So, there may already be someone to help you out.
- A very rich API: Openmoko has got a very rich set of APIs. A few have been developed exclusively for Openmoko, while the others are simply derived from other projects. Openmoko enables you to use your existing skill set to create the phone applications that you want to.
The Openmoko Architecture
The Openmoko architecture is simple, yet very powerful. Most of it is based on already-available open source technologies. However, new technologies have also been developed exclusively for the platform. Openmoko consists of the following major components:
- Linux kernel 2.6 and associated device drivers: The project makes use of the vanilla kernel 2.6 series, patched against Openmoko-specific patches. The patch set includes additional support for various embedded devices like USB, SD, touch screen, and communication drivers. All these drivers reside in the kernel space, and are loaded at boot time.
- Linux Core (or system) services:
- udev: It acts as the device manger and maintains all the device nodes in a pseudo /dev filesystem. udev provides a standard way for device components to interact.
- blueZ: It is the official LinuxBluetooth stack that is responsible for all Bluetooth related activities in Openmoko.
- Dbus: This provides an IPC (inter-process communication) framework. In other words, Dbus allows applications to talk to each other.
- GSM: It consists of GSM (the core GSM module), GSMd (a daemon to manage the GSM backend) and libgsm (an API to communicate with the GSM subsystem).
- GPS: It consists of GPS (a core GPS module) and GPSd (a daemon to manage the GPS backend).
- The user interface (UI)
- kdrive: It is the thin X server for embedded platforms, which runs directly on a frame-buffer device and supports OpenGL.
- matchbox: It is a window manager for embedded platforms. Matchbox has been very popular with its recent adoption in Nokia’s Linux tablet and the One Laptop Per Child project.
- GTK: This cross-platform widget toolkit is popular due to its truly open source nature and wide cross-platform support. GTK sits behind the popular desktop environment GNOME. UPDATE: Qt is now supported widget.
- ALSA: The Advanced Linux Sound Architecture (ALSA) provides the audio functionality. ALSA is already very popular in Linux systems and is now part of the standard kernel.
- Qtopia: It is the robust and commercial-grade mobile phone and PDA platform from Trolltech, and arguably much more than just a GUI toolkit.
- The application framework:
- Core (libmokocore): This provides the core functionality to the framework, such as the switching device, reading/ writing data, application-toapplication signalling, etc. It makes use of the Dbus and Gconf packages.
- .Net (libmokonet): It provides the core networking functionality to the framework. It makes use of libgsm, bluez-lib and libgps.
- UI (libmokoui): It provides the UI programming capabilities to the platform and makes use of GTK and ALSA (for applications interacting with audio devices). The standard GTK has been customised to provide a rich mobile application-development experience.
- PIM (libmokopim): Provides the core PIM (personal information management) capabilities. It makes use of the embedded Evolution data server.
- X11 applications: Standard X11 applications linked to libX11.
- Finger applications: Includes the dialler, menu, media player, etc.
- Stylus applications: Includes contacts, messages, search applications, etc.
- Third-party applications: Various heavy-duty applications like Web browsers, instant messaging applications, etc.
Subsequent to this quick introduction to the upcoming Openmoko platform, in forthcoming articles I’ll show you how to build and run Openmoko applications. The experience is like hacking the world’s best phone environment at your workbench—and yes, nobody is going to sue you! Dont forget to post in your comments at kunaldeo at gmail.com