A few weeks ago, I wrote a post cajoling Android developers to be more self-reliant, rather than expecting Google to make every conceivable addition to Android and related technologies. The Android community doesn't need Google's help to create a better Market. The Android community doesn't need Google's help to create standardized ad network APIs. And so on.
The reason for self-reliance in places where it's possible is because there are many places where it's not possible, where Google is the only viable answer for getting something done.
Exhibit A: Linux kernel patches.
While Linux lies at the heart of Android, it's not the same kernel that you might run on a desktop, server, or even a netbook. Various modifications were made for security and mobile device performance, for example. These changes not only affect the kernel itself, but affect any drivers written for Android. Drivers for Android may need to be specific for Android, not working on “ordinary” Linux as well.
The normal approach for these situations is for the firm making the change (Google and other OHA members) to work with the Linux kernel folk to figure out either how to fold those changes into the kernel or to find other ways of achieving the same end. That way, these changes become mainstream in future kernels, paving the way for formerly Android-specific drivers to be more widely useful.
Once upon a time, the core Android team started in on that process. As Greg Kroah-Hartman points out, though, those contributions have now been removed, because they were abandoned. If there is no sign of steady progress towards resolving the issues with kernel contributions, those contributions are pulled out of the staging area. This is a reasonable policy of the Linux kernel team.
While independent Android developers can create markets and ad network APIs, it is much more difficult for such people to work on these kernel patches. As Mr. Kroah-Hartman put it:
When the Android code was merged into the staging tree, a number of kernel developers reviewed the code and pointed out places that needed to be cleaned up, and changed, in order for it to be accepted. A number of these changes will affect the kernel/userspace boundary, so some changes to the Android userspace logic would also need to be changed if these kernel changes are made, preventing anyone except a Google employee from making the changes necessary.
This, of course, is part and parcel of the overall Android-as-open-source problem that has plagued the project since the beginning. Every now and then, there is clear momentum in these areas, but that momentum never seems to last, at least not in publicly visible ways. I often give Google the benefit of the doubt, assuming that improvements are showing up in places I'm not looking...like in getting code changes upstream into Linux. Apparently, that hasn't been happening, either.
Developers just need to remember that the more time Google spends on things that could be done outside of Google, the less time they will have to spend on things only Google can do, and that we have to hope that Google will someday decide to do again.