Linux fragmentation: good or bad?

Everyone and their brother can make an Android device, which means that Android is outselling the iPhone. But as some of the comments on John’s post point out, device proliferation leads to consumer angst in trying to find the right device to purchase. The same phenomenon has been happening in the Linux market for ages, with consumers trying to figure out whether they need or want Fedora or Ubuntu or OpenSUSE. Fragmentation is a problem, when you look at things in this context; but is the Linux market really that fragmented? Jim Zemlin, Executive Director at the Linux Foundation doesn’t think so.

In his new blog post, “Fragmentation is good and bad for Linux“, Zemlin points out that all Linux variants use the same kernel, maintained by a collection of smart, dedicated people. Sure, someone could start maintaining their own Linux kernel, but that’s an expensive, time-consuming proposition that wouldn’t be very beneficial to the end-product. Similarly, most Linux solutions use the same windowing solution, the same GNOME or KDE desktop environment, and the same suite of applications. Different distributions might use different release versions of these products, but the fact that they’re all coming from a unified upstream provider means that the Linux distribution can focus on integration issues, rather than specific application issues.

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.

Indeed, at work I use Red Hat Enterprise Linux while at home I use Ubuntu. Many of the research applications we use at work come from ISVs that specifically target the longer release cycle of Red Hat Enterprise Linux, and these applications are built with specific requirements for RHEL-supported libraries. Although we use RHEL, many of the ISVs also support SuSE, allowing us to have some choice in which Linux distribution we choose to use. And for desktop users who want more of the “oooh shiny!” features of Linux application development there’s Fedora and Ubuntu, both of which offer faster release cycles and more interesting features developments, but which ISVs are hesitant to target due to more frequent API and ABI changes.

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.

(As I was writing this piece a new blog post by Tim Bray hit my feed reader: Practical Open Source. It’s a pretty succinct introduction to how easy it is to grab the Android source code and start making progress with it. Not exactly related, but sufficiently similar as to pique my interest in the context of Linux fragmentation.)

While chatting with Devin about Linux fragmentation, he observed that the majority of people don’t care about Linux on their devices, and as such fragmentation is only an issue to the enthusiast crowd. He’s definitely on to something. Normal consumers might recognize the brand differences between Apple and Android and Palm, but they have no idea that Android is, in fact, a flavor of Linux. The consumers aren’t going to care about Linux fragmentation because they’re not going to see much of it: they’ll see “Android”, which happens to be built atop a rich stack of Linux kernel and library components. As long as their calls don’t drop and their apps run, they’ll be blissfully ignorant of any Linux fragmentation.