4 ms·
It's because all the stupid vendors refuse to share anything, and won't publish their sources for the various device drivers needed. So every time there's some
by Arizhel 10y ago
It's because all the stupid vendors refuse to share anything, and won't publish their sources for the various device drivers needed. So every time there's some new flash chip or whatever, there's a custom closed-source device driver for it which doesn't get mainlined or updated for newer kernel revisions, and devices with that chip are forever stuck on an ancient kernel version.
There's only two ways around this: 1) somehow force companies to open-source their driver code, or 2) have a static, unchanging (or at least very backwards-compatible) ABI for device drivers, and then just suffer with shoddy drivers written by vendors which cause all kinds of glitchy behavior, as Windows was infamous for for so many years.
This doesn't happen with the mainline tree because it's all open-source and gets debugged and inspected by others, but that just doesn't happen with the cellphones/Android.
- wyldfire 10y ago> It's because all the stupid vendors refuse to share anything I'm not going to defend the vendors (much). But it's not free to upstream your code. It's work. And I'd argue that it's an investment that will pay off, but you can't fault others much for seeing it differently.
- Arizhel 10y agoI disagree. It's not free (usually) to upstream your code yourself, but there's nothing preventing you from publishing it for anyone to use. With a popular mobile phone, that'll very likely end up with someone else grabbing it and upstreaming it for you. There's no guarantee some unpaid volunteer is going to do this kind of work for your company, but the chances are much higher if it's some kind of popular device.
- monocasa 10y ago> won't publish their sources for the various device drivers needed. And how is Fuchsia supposed to help that?
- adrianratnapala 10y agoIt will go down the Windows model of having a stable kernel ABI (I assume). And suffer/enjoy the same trade-offs as Microsoft. That model is not perfect, but it worked for MS -- and Google is in a similar enough position.
- greenhouse_gas 10y agoJust because there's a stable API doesn't mean the manufacturers will actually upgrade. Unless there's some legal requirement, it's going to be the same fragmentation
- amaranth 10y agoIf they have a stable driver ABI Google can be responsible for the upgrading. They just have to require the OEMs allow them to do so.
- pjmlp 10y agoNot only Windows, the majority of operating systems are like that, even the old time commercial UNIXEs, only GNU/Linux forces an unstable driver ABI on developers.
- the_why_of_y 10y agoLinux and *BSD. FreeBSD will break ABI every major version, roughly every 2 years. https://wiki.freebsd.org/VendorInformation https://wiki.freebsd.org/VendorInformation OpenBSD even goes so far as to break the user-space libc ABI in minor releases: http://www.openbsd.org/papers/eurobsdcon_2013_time_t/ http://www.openbsd.org/papers/eurobsdcon_2013_time_t/
- pjmlp 10y agoAh ok, I though the *BSDs followed the UNIX old school of stable ABIs. Besides toying around with FreeBSD in the late 90's, I never used it properly.
- iainmerrick 10y agoIt's also because ARM doesn't have a stable, standard BIOS the way x86 does. ARM is otherwise great, which is why people use it, but it has that one big downside. Every phone has a different hardware configuration, and getting that hardware working is always a fiddly bespoke job.
- asveikau 10y agoFor all your complaints about lack of a stable ABI, when you run Linux on a PC most of the hardware just works, most of it without out-of-tree drivers. (In some areas like graphics proprietary drivers give you a better experience, but even there typically there is some baseline support in tree.) The reason this is possible on the PC and not on phones is because there are more standard hardware interfaces that don't exist in the ARM world. The lack of that is why the phone vendors need to do a lot of custom work.