Android devices are based on the Linux kernel but, since the beginning, those devices have not run mainline kernels. The amount of out-of-tree code shipped on those devices has been seen as a problem for most of this time, and significant resources have been dedicated to reducing it. At the 2018 Linux Plumbers Conference, Sandeep Patil talked about this problem and what is being done to address it. The dream of running mainline kernels on Android devices has not yet been achieved, but it may be closer than many people think.
As I always say – Android is the most popular Linux distribution of all time, and by a huge, huge margin. This often makes a lot of people very angry, as they come up with all sorts of additional random imaginary requirements as to what constitutes a Linux distribution. If they manage to get the Android version of the Linux kernel back into mainline, these discussions will probably become even more nebulous – and entertaining.
An OS that doesn’t have anything in common with what is the Linux upstream is suddenly a distribution of said upstream, riight…
Well, if FireOS is Android, why can’t Android be Linux?
That is indeed the thing Thom leaves out. When the Android “distribution” shares virtually nothing with the userspace of other Linux distributions, are they really the same OS in the broader sense of the word and not just using the same kernel?
Let me put it a different way. Windows 95 and Windows NT shared the same userspace API’s to the degree that you could see them as more or less the same thing. A proper written Win32 application ran on both. A user could only really tell the difference based on how many blue screens he saw.
Android vs GNU/Linux on the other hand.. yes, they share the kernel but that’s where it ends. As an application developer you don’t really ever interact with the kernel directly, so from a developer’s point of view it is completely different systems. Same thing for the end user.
But hey, if it makes Thom happy, yes Android uses the Linux kernel and by extension distributes it..
“A Linux distribution (often abbreviated as distro) is an operating system made from a software collection, which is based upon the Linux kernel and, often, a package management system.”
https://en.wikipedia.org/wiki/Linux_distribution
Userspace is irrelevant.
Edited 2018-11-21 00:46 UTC
Pretty amazing that someone that works with words for a living fail to realize that words have many implied meanings. If I say “I’m running a Linux distribution at home” NOBODY will think “oh you mean you’re using Android?”
But hey, as I said, if you want to be pedantic, yes, Android distributes the Linux kernel.
Considering within Android you as a user or developer never really get any sort of control over the kernel or even access to anything really low level, then it using a Linux kernel is pretty well much ignored by everyone.
It’s like having a VW Bug with a Porsche engine in it. You may be able to win races, but you’re not going to be able to pick up chicks in it.
Android gives very few of the benefits of ‘Linux distributions’, namely freedom of software to install. You’re basically stuck with at the very least it’s terrible userland, if not all the google crap.
Thing is, from a strictly technical viewpoint Thom is right. Android is a Linux distribution.
Problem is, the word distribution loses its purpose when only Linux itself is distributed. At this point you might as well say “Android uses Linux”. In daily speech the term Linux Distribution implies some form of GNU based posix compliant system, even though none of that is actually part of the definition.
dpJudas,
Thom is right. This isn’t a new take, for GNU distros pendants have been adding the “GNU/Linux” designation for decades. Our brains usually fill in the blanks based on context.
https://en.wikipedia.org/wiki/GNU/Linux_naming_controversy
Anyways, I hope this cosmetic naming debate doesn’t distract from the real benefits that merging the android fork back into mainline would bring. Forking linux on android ARM devices had the unfortunate consequence of causing fragmentation on ARM and hurting the prospects of a standard mainline linux running on all ARM devices. So, I hope we can unite behind the goals of re-unifying the kernel!
Edited 2018-11-21 03:07 UTC
It did ? I thought the problem was that these ARM System on Chip devices don’t have the normal set up of a regular bootloader and generic Linux kernel because the hardware doesn’t have a system similar to a PC where you can probe on which peripherals are connected (or directly part of the system). Which is why device tree exists to describe the system. Wasn’t that also the reason Windows on ARM was… complicated.
Lennie,
I haven’t set my hands on a windows ARM device, but is it actually that complicated? I thought microsoft mandated that ARM manufacturers use UEFI firmare, just like for x86, no? I kind of wish they’d do that for android devices too to standardize the boot process.
Of course, my biggest gripe with UEFI as it relates to windows is that microsoft requires ARM manufacturers to deny owners access to secure boot on their own computers. If it weren’t for that anti-competitive crap, I’d say most windows ARM could make for pretty good linux laptops too.
Edited 2018-11-21 21:09 UTC
Yeah, that was evil.
Hm, IIRC somebody here, in reply to your post in that vein, posted his experience with a recent ARM laptop and secure boot could be disabled…
zima,
I’m not sure what you are referring to, the owner restrictions on ARM are microsoft OEM requirements.
I do remember a couple of threads about windows 10 s restrictions where some users found a way to circumvent restrictions by restoring disk images with sideloading enabled or something like that, is that what you are referring to?
http://www.osnews.com/comments/30189
If not, then you’ll need to refresh my memory
Found what I was thinking of: http://www.osnews.com/thread?659211 …so apparently the requirement you’re talking of is not set in stone.
zima,
If you have any new evidence suggesting any of this is wrong or that anyone has succeeded in booting linux on a windows ARM device by turning off secure boot and/or adding new keys, then please do let me know about it!
And you would be correct in doing so. Linux is the kernel, a Linux distribution is the kernel plus userland. Like it or not, Android is using Linux and it is a Linux distribution.
Except that lawyering around the literal definition of a “Linux distribution” as opposed to the vernacular definition just pisses people off or causes them to ignore you as a probable troll.
It’s the concept that has primacy in their mind, the concept they’re trying to communicate does not match the definition you’re trying to hold the terminology to, and, if they had some form of telepathy, they’d ignore the words completely and just communicate in concepts.
(Same problem as with crazy left-wingers who think they can people who think they’ve found a clever way to hack around the difficulty of actually changing society by redefining words like “violence” or “feminism” when, in actuality, all it does is frustrate other people, polarize the discourse, and, in the longer-term, prompt society to go looking for new words that still align with the positions they’ve held all along.)
Correcting people on points like this only works if you can point out the equally convenient alternative that they’re supposed to be using instead.
Edited 2018-11-21 08:17 UTC
Sometimes the vernacular definition is wrong. A tomato is a culinary vegetable, but a botanical fruit. We come across conflicting definitions all the time in our every day lives.
But yes, Android is a Linux distribution. GNU/Linux is one family of Linux distributions, and Android/Linux is another.
Really? You really can’t come up with *any* alternative to just saying Linux? If only there had been an individual responsible for the development and curation for much of the userland of “Linux distributions” that could spend his days and nights suggesting such a term. But alas, tis mere fantasy!
It’s not my job to come up with an alternative. You’re the one who is taking issue with overloading “Linux”, so the onus is on you to suggest an alternative.
This is just kind of hilarious to me. I don’t mean to be the old man yelling at you to get off my lawn. But this war has already been fought. Its just hilarious that you don’t realize its already been fought.
Its like trying organizing an advertisement campaign to introduce the public to tacos in mexico city. Yes, we know what a taco is…
Yes, the war already has been fought… the side I’m expressing won, just as human nature dictated it would.
Same as how, no matter how much money they throw at it, the music and movie industries will not stamp out piracy through force because they’re fighting the human instinct to share non-scarce resources like culture.
As much as ungrammatical English phrases like “to who” irk me, I recognize when change is inevitable and you are the one fighting a losing battle in a war that has already been lost.
Edited 2018-11-23 12:10 UTC
At GNU/Linux and Android/Linux the userspace is relevant. At Linux its not.
Except that there are quite a few reasons that GNU/Linux will never catch on. Here are just a few of them:
1. Too many syllables. (Most humans take any opportunity they can find to truncate names down to no more than three syllables. This is why you see people using “SuSE” as a shorthand for “OpenSuSE” sometimes, and why people use “Ubuntu” as a shorthand for “Ubuntu Linux”.)
2. Spite. (Fanboys of the GNU/Linux name have made such a nuisance of themselves that a lot of people use “Linux” just to spite them.)
3. Inaccuracy. (Lots of people use “Linux” to refer to the cluster of POSIX-centric platform ABIs that include glibc/Linux, musl/Linux, and uClibc/Linux, but not Android.)
4. Unjustifiability #1 (Stallman arbitrarily includes GCC and excludes X11 by arguing that “GNU/Linux” is what you need for self-hosted development using console emacs. On a typical desktop, X11 has a higher LOC than GNU componentry.)
5. Unjustifiability #2 (My OpenPandora has two official OS options. Android and Linux… the Linux option is an Xfce-based desktop. I think it’s still using glibc, but everything else GNU has been replaced with BusyBox.)
6. Unfairness (Given that it’s GNU/Linux rather than glibc/Linux, it’s unfair to arbitrarily advantage “GNU” over other key system components, like X11 and the consellation of components maintained under the systemd umbrella.)
TL;DR: People don’t say GNU/Linux because it’s awkward and isn’t actually what they mean to say. They choose Linux because it’s concise, easy to say, generally maps to a suitably common concept in conversation, and refers to a set of things that really doesn’t have a better alternative term.
(Which is why, if someone tries to distract with pedantry, I’ll usually say “Actually, I was using a shorthand for all Linux-based platforms exposing a glibc-compatible ABI and X11… and I yearn for the day when I can build my kernel with llvm-clang, have musl-libc expose a fully glibc-compatible ABI, run a BusyBox userland, and give GNU/Linux pedants the finger. Now stop trying to pull things off-topic.”)
Edited 2018-11-21 08:04 UTC
ssokolow,
Ok, so let’s get back on topic then!
What does everyone think about project treble and merging HALs (hardware abstraction layers) and APIs into mainline linux?
https://lwn.net/Articles/765467/
Having stable APIs has been highly controversial for linux in the past, but I think it’s very on-topic here. Should the future of mainline linux provide stable interfaces for hardware drivers to adhere to?
Also, what do we make of supporting proprietary android hardware drivers in linux? Obviously I don’t like proprietary drivers, but it could make sense to allow mainline linux users to reuse android’s proprietary drivers in their own kernel builds so at least their builds work on hardware that doesn’t have open source drivers. Any opinions?
between usbfs, FUSE, CUSE, UIO, uinput, and a host of other interfaces, it’s possible to write linux device drivers in userspace. the kernel should be kept open, but closed userspace drivers are fine (IMO).
The interfaces to userspace are relatively stable already, so that’s also an added benefit.
wdouglass,
So I think you’ll face resistance on this idea, but it’s not a bad idea and it’s certainly something to think about.
Edited 2018-11-21 15:01 UTC
I wonder what those efforts mean for Fuchsia …why would Google bother with Linux so much if Android were to switch kernels? (or maybe efforts at ~modularisation, with Treble, of Android would make it easier to switch to Fuchsia?)
There is no way I would eliminate Android from consideration if someone told me they were running linux. It would be maybe my third or forth choice.
Ubuntu/debian based?
Fedora?
Chrome OS!
Android?
of course there are others, but anyone running anything like slack,gentoo, or arch would tell me before I asked
Linux that runs on the server looks totally different from Linux that runs Ubuntu, which looks very different from KDE. Even from a package perspective, Red Hat looks totally different from Debian. This idea that Linux has to have the same userspace is silly. Linux is the Kernel. If you wanted to make this kind of argument, you’d probably be better making a GNU argument instead, but even there it’d fall apart pretty quickly.
It has a large portion of the kernel in common. That’s about it, but there you go. If the effort described in the article is successful, it’ll be an even larger portion of the kernel (which would be good for both traditional Linux distributions and Android).
Android is a linux distribution in the same way that a distribution that uses MUSL instead of glibc and busybox instead of linux-utils is a linux distribution.
While I do want to wind down this topic, I have to respond to this point.
There’s a world of difference between glibc/Linux vs. musl/Linux and either of those vs. Android because both glibc and musl are fundamentally C standard libraries built around a POSIX-centric platform model.
Bionic/Linux is in the same group as glibc/Linux and musl/Linux, but Bionic/Linux is as different from Android as running X11 on Darwin is from MacOS. (Moreso, actually, because of how Java-centric the Android platform is compared to equivalent C/C++-centric APIs on “Linux” machines.)
If Android is the Win32 API, then Linux is the Win9x kernel and, if suspicions play out, Fuchsia will eventually be the Windows NT kernel that Win32 apps also run on, but hacks using internal Win9x APIs do not. (Though who knows whether Google will go to the same lengths as Microsoft to preserve backwards compatibility when they reach their Windows XP moment.)
I wonder what Google’s plans really are (maybe Google itself doesn’t yet know) …why would they bother mainlining Android/Linux if Fuschia looms around the corner / Soon(tm)?…
Large portion in this cause would be at least 98%, I think. Notice the article mentioned: “30 patches in the Android Common Kernel, adding about 6,500 lines of code” (not counting drivers)
You probably have never logged into an android phone. All you expect from a linux system, like the kernel, the kernel user space interface including the file system tree, the init system, are all there. There is even an sh shell and lots of commonly used command line tools such as ls, cp, grep, … (which, most likely, are all in fact linked to toybox which is itself am open source software).
This will no more make Android “Linux” in people’s eyes than apple adding support for iOS apps to OSX makes OSX an “iOS distro” just because they share a common kernel.
The key detail is that the Linux kernel is a mere implementation detail of Android and, when people say “Linux” in reference to more than the kernel, they are using a shorthand that has more to do with application compatibility and what is considered the official primary API for a platform.
Dalvik VM != POSIX.
Now, to be fair to detractors of this nomenclature, different groups do use “Linux” to mean different things.
Typically, people start from a base assumption that shakes out to something like “The glibc ABI on top of the Linux kernel… possibly with X11 as an added requirement.”
Gamers will define it based on what it takes to get their games running (which makes it something like “X11 on glibc on Linux on x86”).
Embedded developers will use a definition similar to “NoSQL” (headless POSIX-based stuff, X11 UIs, Wayland UIs, Qt Embedded directly on top of KMS, etc.) to make the term useful when contrasted with the 500-pound gorilla that is Android.
People working in containerized development will relax the glibc requirement because musl-based distros still meet their intuitive definition of what “Linux” is.
Trying to argue people out of this will just get their backs up because it’s not their fault that they never learned a better concise term for what they’re trying to describe and others they interact with understand what they mean just fine. As such they’ll see you as an irritating sophist, trying to avoid discussing their actual point and using linguistic trickery to dismiss their argument on an unimportant technicality.
Edited 2018-11-21 04:04 UTC
ssokolow,
But does anyone actually care about “making Android ‘Linux’ in people’s eyes”? The goal here is not a linux branding exercise, but a meaningful consolidation of development resources that reduces fragmentation and benefits both android/linux and gnu/linux communities. As a user of both communities, I feel that both communities have been hurt by this fragmentation and that’s the important thing I think we should be focusing on here. Having things working well is much more important that whatever people want to call it.
No argument. I was responding to this line:
Linux describes the kernel of various platforms built on top of that kernel – macOS and iOS describe platforms built on top of the Darwin kernel. Linux == Darwin, macOS == Ubuntu.
Linux is also used as a general catch all term for many complete systems built on top of the Linux kernel – or distros, which pack in all sorts of divergent APIs (and ABIs). Android is easy to to describe as a Linux operating system by any of these standards.
Apples to apples and oranges to oranges.
I tried to help you understand how to communicate more effectively with the large numbers of people who don’t care about your pedantic interpretation, and it’s clear I just wasted my time.
Believe what you want about what the word means in actual day-to-day speech. I’m out.