Linux and Android are two closely linked open-source projects, but they've been as notable for how distant they are from each other--until yesterday.
That's when Linus Torvalds, leader of the Linux kernel project, released a version of the operating system core that bridges between the two worlds. Version 3.3 of the Linux kernel is the beginning of the end of isolation between these two projects.
Down under the covers, every Android phone is a Linux phone. Although programmers writing Android apps generally use a Java-like interface, a Google-customized version of Linux handles underlying details such as keyboard input, multitasking among different chores, and keeping needed data readily at hand in memory.
But Google's Android work has been a "fork"--a separate code base that's branched off from the main repository Torvalds oversees at the Kernel.org Web site.
The result of merging Google's Android Linux with Torvalds "mainline" version, if all goes well, should be easier programming and therefore faster progress for all parties involved. Google can benefit from new features added to mainline Linux sooner and with fewer hassles keeping its code in sync with the mainline kernel. And others using Linux in mobile devices can benefit from improvements that previously had to be retrieved from Google's separate fork.
Google lifts code liberally from many open-source projects, often contributing its own additions back as well as launching its own open-source works. But sometimes the company prefers to work more in isolation from a project's primary developers, which can lead to tensions given the generally collaborative, code-sharing ethos.
Another example where Google's Android team is linking up with its open-source brethren is with the WebKit browser engine. Google had worked on its stock Android browser as a separate fork of WebKit, but with the arrival of Chrome for Android, the mobile version of its browser is being integrated with the ordinary WebKit project.
Back into the fold with Linux 3.3
Torvalds announced the release of Linux 3.3 last night on the Linux kernel mailing list. He made no specific note of the Android merge, but it's been under way for months. Tim Bird, a Sony programmer who works on the Linux Foundation's consumer-electronics project, announced the "Android mainlining project" in December.
"I would like to announce the beginning of a project to make a concerted effort to mainline patches and features from Android into the mainline Linux kernel," Bird said.
His words came shortly after Torvalds himself in November tried to ease tensions between the two camps. He said in an interview with Muktware's Swapnil Bhartiya:
Every time there is a fork, and I think actually forks are good things, it means somebody sees a need and a technical reason to do something different from the standard kernel. But most forks are failures. They find that the things they needed were not actually worth doing and as a result most forks die. Some forks are successful--Google with Android has really been very successful.
Now, we are talking about how to say, 'Hey you were right, we were wrong, you were successful doing something right.' We are talking about how to merge the good parts.
Greg Kroah-Hartman, a longtime kernel developer and new Linux Foundation fellow, said to expect Android kernel components in Linux 3.3 on Google+ at the same time. And in a February interview with Muktware, he said, "The 3.3 kernel release will let you boot an Android userspace with no modifications, but not very good power management. The 3.4 kernel release will hopefully have the power management hooks that Android needs in it, along with a few other minor missing infrastructure pieces that didn't make it into the 3.3 kernel release."
Boot to Android
"Boot an Android userspace" means that a developer could run Android on a standard Kernel.org kernel rather than having to fetch one Google's customized version.
That could be handy for many programmers--the large number using Linux in electronics devices with memory and processor power limits, for example. And Mozilla, with its B2G (Boot to Gecko) project for a Linux-based browser operating system, also stands to benefit from the integration. It's currently using the Android open-source project (AOSP) software.
One area where there has been tension is with a Google technology called WakeLock, which lets a programmer tell the kernel that a particular computing process should prevent the computer from going into a low-power sleep state.
Linux Weekly News documented the initial loathing of WakeLock, which Google developed in isolation. That displeasure doubtless meant more work for Google mending fences than if it had worked closely with mainline kernel developers at the outset.
But Google had its own priorities, and collaboration takes time. And apparently those fences weren't unmendable.