Mike Riley is a Dr. Dobb's contributing editor. You can contact Mike at firstname.lastname@example.org and follow him on Twitter @mriley.
The next generation of mobile development has arrived and it appears that the predominant operating system of choice is Linux.
The analogy of the personal computing revolution has often been associated with what we are now experiencing in the mobile computing space. Instead of Mac versus PC, its Mac versus Linux. While Microsoft continues to revamp its Windows Mobile platform, and Blackberry and Symbian seek ways to remain relevant, Linux has risen as a result of its low-cost open source licensing model, its ubiquity, and flexibility to run on a diverse range of hardware platforms -- not to mention its rapid acceptance among application developers for its support of numerous application languages.
Recognizing this rising tide, three companies have opted to ride the wave of this growing tsunami.
- Google purchased the Android platform and is busy incorporating it into as many mobile handsets supplied by as many carriers as it can.
- Nokia acquired Trolltech and is busy porting the Qt development environment into its Maemo platform.
- Intel, recognizing the trend of netbooks as a growing market to affix its Intel Inside stickers on, has retooled the Linux Foundation's Moblin, a traditional desktop Linux distribution, into a nimble, lightweight combination optimized for its Atom series of processors so prevalent into today's netback designs.
As a consequence of these three approaches, mobile platform developers have to make a choice on where to spend the most time to maximize the return on their time. They also have to start placing bets on which platform will prove to be the most popular with the highest return on investment.
Introduced to the consumer market just over a year ago, the Google Android platform has rapidly evolved since its commercial release. In that time, it has moved from a 1.0 to a 2.0 version and expanded its hardware and wireless vendor market from one to many with more coming into the fold every month. This aggressive release schedule coupled with frequent SDK iterations has generated considerable momentum and buzz for the platform. Additionally, Google's relatively seamless integration of their core services into the device elevates its baseline functionality beyond ordinary smartphone status.
Currently available in its 2.0 iteration, the Android Developer SDK works well within an Eclipse IDE. The latest SDK has altered the way it delivers SDK components to interested developers. Instead of bundling the whole stash into a single download, the new SDK features a more lightweight initial package. Running the "android" application provides an interface for developers to select the components they prefer. This not only reduces the initial bulk of the SDK but also offers an easier mechanism to download future SDK updates without disturbing the previous Android virtual machine configurations and design environment settings.
Even though Android is Linux-based, applications are written using Java. This is because the architecture of Android isolates each Android application such that if a problem occurs, only that running instance of the application is affected. This makes Android's multitasking execution platform inherently stable and reliable. Anyone with intermediate Java development experience will be writing Android applications within minutes. However, a large number of custom Android classes coupled with the fact that not all Java desktop edition classes are included do take time getting used to. And of course, the verbosity of the Java language does get annoying at times. Nevertheless, Android scores points for its cross-platform (Windows, Mac, Linux desktop) development platform support, slick Eclipse feature integration, and familiar Java syntax.
To entice new developers to the Android family, Google has sponsored two Android Developer Challenges whereby developers with innovative application implementations can win big money. They also ignite ideas beyond the usual clump of first-generation platform apps like small text editors, tip calculators and the like. With so many input sensors available on Android -- acceleratometers, compasses, Bluetooth, WiFi and GPS radios, etc. -- the varieties of possible mash-ups supply plenty of new approaches to mobile computing situations.
Finally, the Android Market offers developers a fairly well established mechanism to distribute both free and paid applications to the network of active Android clients. While not nearly as easy to navigate and polished as Apple's iPhone App Store, the Android Market still makes it simple for developers to reach the worldwide Android audience.
Introduced around the time of Nokia's first-generation Internet Tablet device, the Maemo operating system (a Debian variant) has been around for several years. However, it wasn't until Nokia combined the tablet concept with their phone experience and developed a smartphone that elicits a serious amount of telecommunication gadget envy, even from iPhone owners. The new N900 will ship with Maemo 5, though Nokia and the Maemo community are hard at work on the Maemo 6 edition that will offer even greater features and development opportunities.
Unlike the Android multi-platform supported development environment, Maemo development is hard-core Linux only, requiring a Debian-based distribution to house its development tools. While this isn't an issue for those developers who have already made Linux their primary desktop environment, most developers will opt for the virtual machine approach. Knowing this, I was a bit surprised and disappointed that the Maemo community have not packaged up a VMware appliance or other VM package to further motivate interested developers to fire up the developer tools and give Maemo a test drive. Instead, you have to assemble your own development environments, complete with taking care of all the dependencies and VDSO32 kernel modifications on a 64-bit system. The details are explained on the Maemo installation page, but it still requires a considerable amount of effort just to get going.
[Editor's Note: Thanks to a note from a reader, we're pleased to report that there is a package for Maemo development environment available here. The VM image for this page appears to be located here. This should certainly help interested developers overcome the initial hurdle of setting up the environment to test drive the Maemo SDK.]
For those motivated enough to slog through the installation and configuration, the Maemo tools are what you would expect from a community-driven open source project -- functional without a lot of frills and commercial polish, just enough to get things done. The SDK is predominantly C-based, though Python developers will be satisfied to learn that many of the examples and currently available Maemo applications are Python GTK+-based. And that is perhaps what is the most attractive aspect about Maemo -- it is truly an open, Linux-based platform. Unlike Android that attempts to abstract the Linux underpinnings as much as possible, Maemo lets developers dive as deep into the operating system as they desire. While knowledgeable developers and guru hackers are sure to love the platform as a result, the question of system security and whether wireless carriers (especially in the U.S.) will allow such unbridled devices to connect to their networks.
Once a developer signs up for an account on the Maemo website, new applications can be posted to maemo.org for other Maemo users to download. As this writing, there are about 46 applications available, mostly consisting of popular Linux ports such as an OpenSSH client/server, a VNC viewer, a Vim editor and several games. There are currently no programming contests or incentives beyond the openness of the platform to entice new developers to Maemo, though that might change once the N900 is commercially available.
(Also see Java and the Nokia N810 Internet Tablet by Eric Bruno.)
With its just-released Moblin 2.1, Intel would like to see the Moblin platform become a dominant netbook OS. By removing boot programs irrelevant to netbooks as well as retooling the X Windows environment in an effort to streamline GUI performance, Intel engineers have done an admirable job at reconfiguring Linux to run in this optimized environment. Originally developed by Intel but now hosted by the Linux Foundation, Moblin is an open source project that supports Linux-based software platform and is optimized for the next generation of mobile devices, including netbooks. To date more than a dozen operating system vendors (Asianux, Canonical, DeviceVM, gOS, MontaVista, Novell, and Wind River, among others) have committed to distribute Moblin-based products..
However, while the Moblin reference platform has been created for netbooks, it has yet to make the leap to smartphones. Partners like Canonical are working with Intel to help make this a reality, but the devil remains in the details. Also, due to the modifications made to the standard Linux desktop libraries, existing Linux applications have to be optimized for Moblin backend and target GUI footprint. Intel is making a strong effort to market the platform to all netbook and mobile systems enthusiasts, but its contributions remain a very Intel staff-centric project.
The Moblin SDK is heavily geared toward C and C++ development, with an expectation that developers are already very comfortable with developing standard Linux desktop applications in those languages. And even in its 2.1 release, Moblin continues to be a work in progress, with driver issues and other annoying bugs that can get in the way of using the current iteration as a production-ready netbook replacement OS.
Intel is sponsoring the Atom Developer Challenge, an Intel technology innovation contest, not exclusive to Moblin. While Moblin follows the Maemo approach of offering a "Garage" to download Moblin-optimized applications from, the current selections are still catching up with application libraries available on netbook-optimized Linux distributions like Ubuntu Netbook Remix. Other developer resources include Dr. Dobb's MoblinZone and Moblin.org.
Place Your Bets
Given the variables and the current state of the art of each of these platforms, Android currently seems best positioned for success at this stage. Google's long-term commitment and partnerships, combined with its deep pockets, can expand Android to more carriers and more markets around the world. The Android development environment is also the most friendly, both in terms of the IDE's host OS and broad developer familiarity with Java. Finally, Android's established marketplace provides an easy way for developers to distribute applications in a free or commercial format.
Maemo has the most innovation potential due to its fully open platform, but given the very Linux-centric systems required to develop and deploy Maemo applications, it will be a platform of most interest to Linux embedded systems developers and open systems advocates.
Moblin could become a nice reference platform for netbook manufacturers and, if it makes the successful leap onto smartphones, handset providers as well. Given the competition from various Linux distributions that have already optimized part of their platforms to run on netbooks (such as Ubuntu's latest Netbook Remix distribution) and Google's intention of moving Android upstream into the netbook space, Moblin will have to work to reach a broader user audience.
Regardless of the outcome, there is no question that Linuxwill remain a mainstay mobile operating system for years to come.