Image via WikipediaA little over a year ago, Google contributed the Android kernel modifications to the Linux kernel maintainers. As of Tuesday, the driver contributions have been deleted. Why? Google used a specially modified kernel API for Android, which is incompatible with the mainline kernel, and attempts to come to an agreement over how to modify and maintain the new code failed.
Google now has two forks of the Linux kernel to maintain. You see, Google started forking and maintaining Linux for its own servers several years ago, and is now having trouble updating and backporting its forked version. Google has come to realize the problem, and is working to move from a proprietary version control system to the Git DVCS which the mainline kernel uses. Google is also trying to clean up the code a little in order to have as much of the code as possible accepted upstream so that the employees have less work to do. This is what the Linux kernel maintainers recommend to everyone.
While Google tries to fix the problem with one hand, though, the company is going down the same road with Android. Because Google can't come to grips with merging the code, the developers will have to maintain that code themselves, leading to a less secure and robust product. Good luck to them.
Google probably just needs to abstract out the parts that change the main kernel's functions and bolt those changes on top.