Tuesday, August 27, 2013

Of Android Distributions and Linux Distributions

There seems to be a bit of controversy lately over whether or not Android should be considered "a Linux distribution."  The actual question cannot help but be somewhat a question of semantics.  However, a number of factors seem to be influencing people's opinions that don't really bear directly on the issue.  These factors seem to boil down to one thing really.  And that thing is that some people want positive characteristics of Android to be associated with Linux while others don't want negative characteristics of Android to be associated with Linux.

While I may address positive and negative aspects of Android at some point in the future, this blog entry is going to ignore them as irrelevant to the discussion of whether or not Android is a Linux distribution.  My viewpoint on this is that it is not really appropriate to refer to Android as a Linux distribution, for reasons that should become clear in a moment.

The question really comes down to defining "Linux distribution."  From a technical standpoint there are a few definitions that could make sense.  If that is all you are concerned about, then you can pick your position and be confident that it's supportable.  I'm more concerned about whether calling Android "a Linux distribution" is actually effective communication.

In the past the phrase "Linux distribution" has not referred to the kernel that is properly named "Linux."  If it were referring to the kernel, then it would have been applied to kernel releases themselves and not just whole operating system releases.  It seems pretty clear to me that in the past "Linux distribution" has referred to releases of the entire operating system that people generally refer to as "Linux" rather than simply the kernel.  This operating system has also been called "GNU/Linux" by some.  I'm not here to rehash that discussion.  If I refer to the operating system as "GNU/Linux" at any point, then that is merely to clarify that I am referring to the operating system and not simply the kernel.

Some seem to take the position that Android is not a different operating system than GNU/Linux, but just an additional layer on top of it, just as X is a layer often missing from Linux servers, but not constituting a server system a different operating system than a desktop Linux machine.  This is not the case with Android.  Why not? It is because the two systems are incompatible.  They operate on conflicting sets of libraries.  You cannot run GNU/Linux and Android in the same directory tree.  In order to run both on the same system, even if using the same kernel (which is possible), you have to somehow virtualize a separate environment for one of the systems (using a chroot jail, for example) or boot them separately using different root partitions.

Even if Android didn't run most applications on a virtual machine, applications would not be compatible.  You could theoretically develop a Dalvik virtual machine that would run on GNU/Linux in order to use Android applications (since that's what virtual machines are for), but GNU/Linux applications simply can't run on Android without being ported to it.

That Android is a different thing than GNU/Linux on the fundamental operating system level is reflected by the fact that there are Android distributions, like Cyanogenmod, Paranoid Android, and AOKP.

None of this is a knock on Android, and I don't consider Android a second class open source citizen (though I reserve the right to consider proprietary Android distributions as second class distributions :-) ).

No comments:

Post a Comment