Open source fans like to point at Android and say this is a great example of what’s possible with Open Source software. But all is not “Googley” with Android’s code according to the Linux Kernel maintainers.
Definition: The Linux Kernel is the center of the Linux Operating System; it handles tasks such as memory management, multitasking, network communications, read/writing data, and drivers for screen display/audio/camera and other device drivers.
So, what’s happened to Android code in the Linux Kernel? It was dropped from the Kernel, totally.
Why? Indications point to Google being secretive, working on it’s Android Linux Kernel without sharing or discussing design details with the mainline Linux Kernel developers. After Google finished implementing it’s code for Android only then did Google Open Source and release the additions to the mainline Linux Kernel.
But when the mainline Kernel developers looked at the code they didn’t like the design, and found the approach taken in some drivers weird.
A number of developers made suggestions on changes to be made in order for the code to be accepted into the mainline, but the changes would also impact Android and only Google’s employees can approve those changes. The changes to Android could be risky especially with a number of devices running Android already on the market.
Google has not yet reworked the code, and thus the Android code was dropped from the mainline Linux Kernel.
As a result of the Android code being dropped, many drivers developed by other companies to be compatible with Android and depend on that Android code being there are no longer compatible with the mainline Linux Kernel.
Because Google doesn’t have Android code merged into the mainline, the companies developing Android platform code are locked out from contributing it back to the Linux Kernel.
Another problem with this situation is when new features, or improvements in performance or memory management are made in the mainline Linux Kernel. These changes may need to be backported to the Android Linux Kernel in order to use them, adding additional work for Google if they want the improvements.
This is a messy situation for Android and companies building on the Android platform. Obviously company’s have a tricky time balancing between Open Sourcing code and potentially exposing new projects that are not yet released to the public.
Hopefully Google and other companies working with Open Source have learned a hard lesson from this. The lesson is to release code as early as possible and to work with the community of developers on it’s design in order to be accepted by the developers upstream, else risk the chance of rejection adding extra costs of maintenance and fragmentation.
Via: the Linux Kernel Monkey Log and various Open Source discussion mailing lists