Android and Linux re-merge into one operating system

For years, Android has been a Linux variant, but now, with the release of Linux 3.3, the two operating systems are united again.
Written by Steven Vaughan-Nichols, Senior Contributing Editor

Linux is back inside Android and Android is back inside Linux.

Linux is back inside Android and Android is back inside Linux.

Android has always been Linux, but for years the Android project went its own way and its code wasn't merged back into the main Linux tree. Now, much sooner than Linus Torvalds, Linux's founder and lead developer, had expected, Android has officially merged back into Linux's mainline.

The fork between Android and Linux all began in the fall of 2010, "Google engineer Patrick Brady stated that Android is not Linux" That was never actually the case. Android has always been Linux at heart.

At the same time though Google did take Android in a direction that wasn't compatible with the mainstream Linux kernel. As Greg Kroah-Hartman, the maintainer of the stable Linux kernel for the Linux Foundation and head of the Linux Driver Project, wrote in Android and the Linux kernel community, "The Android kernel code is more than just the few weird drivers that were in the drivers/staging/androidsubdirectory in the kernel. In order to get a working Android system, you need the new lock type they have created, as well as hooks in the core system for their security model. In order to write a driver for hardware to work on Android, you need to properly integrate into this new lock, as well as sometimes the bizarre security model. Oh, and then there's the totally-different framebuffer driver infrastructure as well." That flew like a lead balloon in Android circles.

This disagreement sprang from several sources. One was that Google's Android developers had adopted their own way to address power issues with WakeLocks. The other cause, as Google open source engineering manager Chris DiBona pointed out, was that Android's programmers were so busy working on Android device specifics that they had done a poor job of co-coordinating with the Linux kernel developers.

The upshot was that developer circles have had many heated words over what's the right way of handling Android specific code in Linux. The upshot of the dispute was that Torvalds dropped the Android drivers from the main Linux kernel in late 2009.

Despite these disagreements, there was never any danger as one claim had it in March 2011, that Android was somehow in danger of being sued by Linux because of Gnu General Public License, version 2 (GPLv2) violations. As Linus himself said at the time, claims that the Android violated the GPL were "totally bogus. We've always made it very clear that the kernel system call interfaces do not in any way result in a derived work as per the GPL, and the kernel details are exported through the kernel headers to all the normal glibc interfaces too."

Over the last few months though, as Torvalds explained last fall, that while "there's still a lot of merger to be done … eventually Android and Linux would come back to a common kernel, but it will probably not be for four to five years." Kroah-Hartman added at the time that one problem is that "Google's Android team is very small and over-subscribed to so they're resource restrained It would be cheaper in the long run for them to work with us." Torvalds then added that "We're just going different directions for a while, but in the long run the sides will come together so I'm not worried."

In the event the re-merger of the two went much faster than expected. At the 2011 Kernel Summit in Prague in late October, the Linux kernel developers "agreed that the bulk of the Android kernel code should probably be merged into the mainline." To help this process along, the Android Mainlining Project was formed.

Things continued to go along much faster then anyone had foreseen. By December, Kroah-Hartman could write, "by the 3.3 kernel release, the majority of the Android code will be merged, but more work is still left to do to better integrate the kernel and userspace portions in ways that are more palatable to the rest of the kernel community. That will take longer, but I don't foresee any major issues involved." He was right.

Today, you can compile the Android code in Linux 3.3 and it will boot. Still, as Kroah-Hartman warned, WakeLocks, still aren't in the main kernel, but even that's getting worked on. For all essential purposes, Android and Linux are back together again.

Related Stories:

Linus Torvalds on Android, the Linux fork

It's time Google starts paying for Android updates

Google open source guru says Android code will be in Linux kernel in time

Does Google's Android violate Linux's Copyright?

2011: The year of the Android OS

Editorial standards