Linus Torvalds, the creator and supreme commander-in-chief of the Linux kernel, has released Linux 3.3, which, for the first time in several years, includes Android merges from Google. This marks the beginning-of-the-end of the process to bring the Android kernel back into the main Linux source tree. Since Linux (and Android) are open source projects, the source code is published for anyone and everyone to see and use. The kernel (the core of an operating system) used in Android is based on the Linux kernel, but, due to disagreement between developers from both projects, code from the Android project has not been merged back to the Linux repositories since 2009.
One danger for open source software is the dreaded project fork. What happens is that someone writes lots of nice code and releases it as open source. Later, someone else starts to use the code but finds that the goals and aims of the original project don’t match theirs, and so, they decide to split away (fork) and start a new project based on a snapshot of the existing code. This never actually happened with Android (unless you count Amazon’s Android version a fork) but it came very close.
However, now it seems that the differences have been resolved, and, as the Android code makes its way back into the main kernel, there will be benefits for Android and Linux developers alike. First, developers will be able to use the latest released version of the Linux kernel to run an Android system, without having to apply any Android specific patches. Second, the burden (and cost) of maintaining independent patches from release to release for Android kernel developers will be reduced and, eventually, eliminated. The unification is also good news for driver writers and component manufacturers, as it will now be possible to develop drivers and board support features against either an Android kernel release or a mainstream kernel release.
One big winner will be the CyanogenMod custom firmware project (and similar projects), as the developers will be able to pick which kernel they want to use from the main stream Linux kernel, without having to wait for an equivalent Android kernel to appear. This could give rise to projects which take the latest Android code and couple it with the latest Linux mainstream kernel, to produce new firmware for those who like to live on the bleeding edge.