[ale] difference between android and linux ?

James Sumners james.sumners at gmail.com
Sat Aug 13 18:35:46 EDT 2011


I'm going to respond to the below quoted bit because I believe the
misunderstanding in it informs the rest of the email.

Let's start with Linux and "GNU/Linux." Notice the "/" in "GNU/Linux."
It is very important. When people say "Debian," they are shortening
the name. In actuality, it is "Debian GNU/Linux." There is also
"Debian GNU/Hurd"[1] and "Debian GNU/kFreeBSD"[2]. The breakdown of
these names is "DISTRO_NAME OS_NAME/KERNEL_NAME."

That is to say, Debian is the distribution, or organization, that
manages the overall system; GNU[3] is the actual operating system,
i.e. the tools a user uses to interact with the kernel; and
Linux/Hurd/kFreeBSD is the kernel that the operating system
communicates with to make the hardware do what the hardware is
supposed to do.

In terms of APIs, you really have several, but they can be boiled down
to only two. One API is that which is provided by the kernel (in our
case, Linux), and the other which is provided by the operating system.
The base of the operating system, which is glibc[4] in our case,
provides a "nice" API on top of the kernel API. On top of this, all of
the user utilities and programs are written.

Thus, it is actually possible for an application developed for Debian
to be binary compatible, and thus usable, on an Ubuntu system --
provided the OS API is the same!

That's the truly basic description.

In my previous email I stated that Debian, Ubuntu, and CentOS are all
completely different operating systems. I was speaking from the
administration point of view. They all are technically the same
operating system in that they all use Linux for the kernel and GNU for
the "OS." However, they are completely different in the way they are
managed. They each have their own way of being installed, they each
have their own file system layout, and they each have their own
utilities for management.

Now, if you want to throw Windows and OS X into the mix things get a
little trickier. Windows is _clearly_ a different OS than all of the
others. It has its own unique kernel and its own unique OS (that being
libraries, utilities, etc.). OS X, on the other hand, is _very_
similar to, e.g., Debian GNU/Linux (because that is what I am most
familiar with). OS X doesn't use GNU, but instead uses BSD[5] for the
base OS. This is very similar to GNU, but does result in binary
incompatibility. However, it doesn't necessarily result in _code_
incompatibility. The same code is very likely to compile just fine on
both systems (barring, shall we say, exotic code).

So, cross platform development is possible somewhat easily between
"Linux" and OS X, but not so easy between those and Windows. If you
stick with a low level language, and toolkits, then you will
experience pain between Linux and OS X, and _excruciating_ pain
between those and Windows. This is where high level languages come
into play.

Languages like Python and Java make cross platform development easy.
Both of these languages are available for all three platforms
mentioned. Unless you branch out into platform specific modules, both
of these languages will run without code changes on all three
platforms.

I've dipped a little into the unquoted portion of your email, so I'm
going to stop here. I hope this clarifies some things for you.

[1] -- http://www.debian.org/ports/hurd/
[2] -- http://www.debian.org/ports/kfreebsd-gnu/
[3] -- http://www.gnu.org/
[4] -- http://www.gnu.org/s/libc/
[5] -- http://en.wikipedia.org/wiki/Berkeley_Software_Distribution

On Sat, Aug 13, 2011 at 17:49, Ron Frazier
<atllinuxenthinfo at c3energy.com> wrote:
> What I'm getting from the discussion is that you first have "the core" or
> the Linux kernel on GNU Linux and on Android Linux.  Serving comparable duty
> would be the NT Kernel in Windows and the Mac OSX Kernel on Mac.  Then,
> wrapped around or sitting on top of the Kernel are various libraries and
> functions which make up the API of the OS which applications can call on.
> Then, you have the applications themselves which call on the API to get
> things done.
>
> At a binary level, applications for Windows, Mac, GNU Linux, and Android
> Linux are not compatible with each other.  Even on machines with comparable
> and adequate resources, the API's, functions, and libraries are too
> different among the various systems, in general.  So, Firefox for Ubuntu is
> fundamentally different, even though functionally the same, than for Windows
> or Mac (if available), for example.
>
> Even various binary executables for different GNU Linux systems may be
> fundamentally different.



-- 
James Sumners
http://james.roomfullofmirrors.com/

"All governments suffer a recurring problem: Power attracts
pathological personalities. It is not that power corrupts but that it
is magnetic to the corruptible. Such people have a tendency to become
drunk on violence, a condition to which they are quickly addicted."

Missionaria Protectiva, Text QIV (decto)
CH:D 59



More information about the Ale mailing list