Other mobile platforms
While Ubuntu Mobile and Embedded is a great step forward for Linux in embedded systems, it's not the only one. Other options exist for simplifying Linux development in embedded environments.
GNOME Mobile is an effort to advance the use of GNOME components in mobile technologies. GNOME is a desktop environment and development platform for developing and integrating applications (with the same look and feel) onto the GNOME desktop.
GNOME Mobile's current efforts are toward a standardization between the GNOME desktop and the mobile environment and simplifying the development of applications for mobile devices. It supports not only the graphical elements of the desktop but also additional elements for device communication (Bluetooth) and service discovery (Avahi). Technologies in incubation include geographic information services and audio elements.
GNOME Mobile supports application development through the
C++ languages as
well as the Python object-oriented scripting language.
You can see where GNOME Mobile is going today in the One Child Per Laptop (OLPC) XO laptop. This low-cost laptop uses Linux and GNOME as its desktop environment, with a special UI called Sugar developed specifically for children. See the developerWorks tutorial "Application development for the OLPC laptop" for additional details.
OpenEmbedded is another software framework for building Linux distributions for embedded devices (a so-called meta-distribution). With OpenEmbedded, you can produce a full Linux base for a defined target architecture (including tools). The result is a full Linux distribution (potentially cross-compiled) with all the necessary software packages, Linux kernel, and bootloader for a particular processor architecture.
OpenEmbedded evolved from the OpenZaurus project, which was a Debian-based Linux distribution for the Sharp Zaurus PDA. It enjoys use by several universities for education and research as well as by a variety of companies doing internal and external development.
OpenMoko is another Linux-based development platform for mobile phones, but it's based on the OpenEmbedded platform. Its focus is mobile handset platforms, and it extends the framework for a variety of applications specific to that platform (for example, dialers, GPS interfaces, phone lists, and book readers).
OpenMoko also makes development simpler, providing interfaces for experienced programmers and novices alike. Therefore, the platform is ideal for anyone who wants to extend a mobile platform (in particular, the Neo 1973) or personalize it with new applications. See the developerWorks tutorial " Software development for the OpenMoko Linux phone" for more info.
Maemo is one of the more stable Linux-based platforms, currently focused on the Nokia Internet tables (Nokia 770, N800, and N810). This project is leveraged in the Ubuntu Mobile and Embedded project, particularly the UI (Hildon and GNOME).
Nokia drove this development for its handheld devices to use open source technologies specifically to result in a user-modifiable platform. It also helped to solidify GNU/Linux's place in mobile embedded devices.
Because Maemo is leveraged in the UME, you'll find many strong similarities in the projects, including the use of the Moblin utility (for Linux environment and image creation).
The Debian project realized very early that Linux was not confined to the desktop or server environment. Linux was being found on tiny embedded devices with no Memory Management Unit (MMU) to fast and complex multiprocessor devices. But the core was always the same.
To support the proliferation of Linux, Debian started the Embedded Debian (Emdebian) project with the goal of providing a distribution that would cover a wide range of usage models. Additionally, the project would provide minimal versions of packages, optimized for small-footprint devices with little storage.
Also, Emdebian includes support for creating cross-compilation environments (for example, to build ARM applications on x86 host systems for execution in ARM target environments). You'll find packages for the supported architectures, build tools, and support for building custom root file systems, as well.
A newcomer to the handheld platform, Google's Android (Open Handset Alliance Project) refers to 30 or more companies focusing on building Android and its associated applications. Like the others, Android is a platform (or software stack) that provides a Linux kernel, libraries, an application framework, and applications for handheld devices.
In addition to supporting the commonly needed handheld elements (such as an integrated browser, dialer, Bluetooth capability, GPS, and camera support), Android allows every application to be replaced (no implementation is better than another). Applications are developed in the Java™ language and executed on the integrated Dalvik virtual machine (VM).
From Google's Web site devoted to Android (see Resources), it's clear that they're serious about building the next handheld platform.