Paul Ferrill has been writing in the computer trade press for more than 20 years. Paul holds both BSEE and MSEE degrees and has written software for more computer platforms and architectures than he can remember.
Developing applications for Mobile Internet Devices (MIDs) requires a new mindset on the part of developers. While it is possible to take an existing application and port it to a MID, it probably will not work well without some tweaking. Building a new application from the ground up to take advantage of MID features opens a world of possibilities.
Targeting a specific MID might limit the usefulness of the application. It makes a lot more sense to build in platform awareness for things like display size, network connectivity, GPS availability, and storage. This will take a little extra coding but should make for a much more robust application. It will also make the code work on more platforms.
Making the right choices when it comes to programming language, support libraries, and user interface (UI) will determine the overall success of the project. Most open source projects typically start out as a pet project written in someone's favorite language or as an exercise to learn something new. For this article series, I use the Python language and attempt to keep the supporting libraries to a minimum.
The current crop of MIDs, based on the Intel Atom processor, provides a combination of CPU power, graphics performance, and memory not previously available in small devices. When you add in GPS, Wi-Fi, and 3G connectivity (on some models), you have the potential for a truly always-connected device capable of delivering precision location information. This combination of hardware functionality opens up a whole new world of possibilities for applications.
This series of articles uses the Compal JAX10 MID as the target platform. It is based on an 800-MHz Intel Atom processor with 512 MB of memory, 4 GB of solid-state disk configured as two 2-GB devices, two built-in cameras on the front and back for video conferencing and taking pictures or video, GPS, Bluetooth technology, and 802.11b/g Wi-Fi. The model tested did not have 3G wireless installed.
Powering up the Compal JAX10 MID reveals the Midinux operating system from Red Flag Software. A version of Moblin specifically for the JAX10 is available from Moblin.org. It requires a bit of tweaking to get the touch screen and wireless to work, but it is doable. One other option is Ubuntu Mobile and Embedded (UME), although it is based on an older version of Ubuntu. [Editor's Note: For more information on Moblin, see Dr. Dobb's MoblinZone.]
UI Constraints and Choices
One of the problems developers inevitably face with small form factor devices is in designing the right UI to be both visually appealing and finger functional. Crafting a small-screen UI is one of the most important things you have to take into consideration when developing for the MID form factor. The Compal JAX10 MID has a display size of 800 ×480, which can chop off the lower portion of some fixed-sized dialog boxes.
Choosing a flexible and easy-to-use UI foundation library helps keep your development struggles to a minimum. Which library you select depends a great deal on the type of application you're looking to build. The GTK+ framework comes as a standard part of both Midinux and Moblin, so you won't have to include or require any additional libraries should you choose to go that route. Moblin has also decided to standardize on Clutter for graphics-intensive applications.
Although you could do the development work on either a Windows- or Linux-based computer, it really makes the most sense to use a Linux system for a number of reasons. The build-test-build cycle goes more quickly when you run on the same operating system. The only exception might be when using a language like Python that doesn't really require compilation. In addition, Linux target device emulation has the best support from the Linux operating system.
Choosing a stable, popular distribution like Ubuntu makes it easier to get the tools you need up and running quickly. It also increases your chances of finding help for problems you might run into, as more often than not, someone else has already found a solution. Ubuntu is also one of the distributions -- along with Fedora 9 -- directly supported by the Moblin project. We chose Ubuntu 8.10 to use on our development system for this project.
Consider using a fairly recent computer with hardware virtualization support as your primary machine. Some of the virtualization software packages require hardware virtualization support to work properly. Others will work without it but obviously run faster if the support is available. You should max out your memory, as well, although a 32-bit machine can't really use more than 3 GB.