Lately I have been hearing criticism about embedded Linux and how fragmentation, as represented by the many flourishing Linux projects such as Meego, Android and webOS, is bad and dangerous for Linux; these critics suggest that fragmentation will hinder Linux’ ability to compete with companies like Microsoft and Apple. I disagree, which is not surprising. But the market and marketing strategists also disagree. Citing the familiar ogre of fragmentation shows a limited view of the Linux economy.
The Linux platform is both fragmented and unified.
Linux already has a unified base: it’s called upstream components. An Embedded Linux OS, just like an enterprise Linux OS, is comprised of core upstream components like the Linux kernel. First, at the kernel level — where most hardware support happens including all driver support — the Linux ecosystem is extremely unified. Device makers or silicon suppliers that wish to support their hardware with Linux - whatever the variety - simply contribute code to the mainline Linux kernel project hosted at kernel.org. Use a mainline kernel and you are using the right base. Recently Google has been working with the kernel community to ensure their drivers are in the mainline kernel and great progress has been made to “unify” Android with the mainline kernel.
Linux distributions are also unified at the core library level. In addition to the kernel, you have projects like X.org, glibc, gstreamer, Gnome, QT, webkit, CUPS, clutter, etc. These are all example of core libraries that generally are included in almost every variant of mobile Linux; Chrome, Android, MeeGo, WebOS, LiMo, etc. They all use these same “base” components. In the MeeGo project, for example, the development philosophy echos this with an “upstream first” mantra. Most of the actual coding for MeeGo or many of these other Linux distributions takes place upstream. That means that when Meego contributes upstream, all downstream distributions benefit. This is the same in the server and desktop market, and why it’s so important for distributions to focus their development upstream.
There is an area of fragmentation: it is within the application ecosystem and API. Application APIs are defined at a higher level where the market often decides which version of Linux will dominate. In many cases there are multiple versions of Linux that succeed in the market. Google’s Linux-based mobile OS Android handles application compatibility with their Java-based run time. Applications are made available to consumers through the Android marketplace. WebOS (soon to be HP’s Linux variant) has a similar approach, though with a different run time and SDK. MeeGo has an SDK based on Qt, which can be used to create apps that run on Symbian, Mac, Windows, or MeeGo. Even the Amazon Kindle has an application SDK.
These are not random versions of Linux; each effort is critically backed by a combination of major industry players, each of which creates their own ecosystem; Google, HP, Intel, Nokia, Amazon, etc. How is this bad for Linux? Linux is about choice and allowing companies, projects and individuals to compete and thrive. API differentiation allows companies to compete and incents them to keep enhancing the platform. Actors can opt in or out of a Linux application API effort based on network benefits of that particular project and ease of participation.
Again, all good news for Linux and good news for the various ecosystem members, since they can now all share in the upstream improvements. Having various brands address a huge and growing market is not unique to embedded Linux. Just look at consumer brands and how Proctor and Gamble, for instance, will have multiple brands of diapers, just to ensure their products cover the market. Segmentation is a smart strategy, especially when you have Intel, Nokia, Google, HP, Motorola and more making products based on yours.
Android, Meego, Chrome and webOS are all Linux-based yet no one is confused about the kind of application they are building or which market they are reaching. The reality here is that aside from Apple, RIM, and Microsoft, almost no one is building client computing devices with anything but Linux. There will be multiple application ecosystems on top of the various Linux systems that will remain unified at the lower levels of the computing stack. This provides an excellent balance of shared R&D and market competition. What is important now is for industry players to align themselves with one or more of the Linux efforts which are backed by credible industry players and make sure that those efforts continue to develop their code upstream. Will we see more efforts? Perhaps, but hat we don’t want to see is the creation of yet another effort in the name of “unification” if it attempts to restrict, dictate or reinvent technologies or processes that already work.
The market doesn’t seem to think Linux fragmentation at the application level is a problem at all. The world’s largest chip maker and the world’s largest mobile handset maker just merged two Linux efforts into one, based on Linux. More and more hardware OEM’s and carriers are jumping on board MeeGo. Android just surpassed the Apple iPhone in unit shipments. HP just paid over a billion dollars to use webOS as a platform for their own devices, while at the same time dumping their tablet project with Microsoft. Linux dominates market share in embedded systems. We are in the early stages of a very long game in mobile computing and I for one am glad that Linux is so massively hedged.