Are we lacking a UI? Kernel? Apps? Interest? Interface with existing closed-source apps? Is stock Android too good?
Are we lacking a UI? Kernel? Apps? Interest? Interface with existing closed-source apps? Is stock Android too good?
So now, for each device, you have to port desktop Linux [3] to whatever generation kernel it came with.
Debian, in contrast, can assume that you're using the standard modern kernel.
[1]. I mean that it should work as a phone, not just a small tablet. So if it can't make phone calls, it ain't a phone. All the more so if you want a working GPS and Camera.
[2]. I would have said Gnu/Linux but postmarket is based on Alpine which is based on busybox/muslc and not gnu.
[3]. Anything which issues syscalls is fair game, so, for example, if your oldest phone you want to maintain is six years old, then you have to back port every single program (and library!) to work on a random seven year old kernel.
Even back porting android user space (which is mostly Java and doesn't interact directly with the kernel) is a huge pain (and sometimes is actually that hard that the maintainers just give up). Porting back Debian?
Replicant is working on creating a fully free software distribution of Android, rather than trying to provide a desktop-style Linux.
Porting programs isn't generally a huge deal. Most devices on postmarketOS currently use the old downstream kernel, and most things run fine on it.
The main problem is that a lot of peripherals require closed source drivers and firmware. For instance, very few devices have support for hardware-accelerated graphics or wireless connectivity, both of which are necessary on a mobile device.
I recently bought a Nexus 5 for the purpose of running Ubuntu Touch. It arrived yesterday and I look forward to try Ubuntu Touch on it.
But a huge part of why I liked the N900 was the physical keyboard. What is the puri.sm stance on that?
A lot of the issue is that most devices have poor, if any, mainline kernel support. That means you have to rely on the downstream vendor kernel, which is almost always hopelessly out of date. (For instance, the downstream kernel for my OnePlus One is at 3.4 from 2012.)
Besides just being out of date, the vendor kernels require binary drivers and Android-specific services to use a lot of peripherals. For instance, the graphics driver Freedreno is compatible with my OnePlus One's GPU. However, Freedreno isn't compatible with the version of KGSL that the downstream kernel supports. That meant that my only options, if I wanted hardware-accelerated graphics, were to use Halium or mainline my device.
That's not even getting into bringing up WiFi, LTE, and actual phone capabilities, which are still a ways out as far as open source software is concerned.
really. we are back to being limited to one OS because of drivers.
this is also the reason lineageOS and other android roms can't just keep updating older phones to new releases. they need the oem to upgrade so they can extract drivers from the binaries.
A lot of hardware support on these devices is proprietary in some way. Mostly proprietary firmware, some proprietary kernel drivers and some proprietary userland daemons or drivers.
Most hardware doesn't have support in the mainline Linux kernel, u-boot, mesa etc.
These are improving slowly as people do reverse engineering of proprietary components and the FLOSS enthusiast community does the work of getting hardware support mainlined. Some vendors also do mainlining work too and some employ folks to work on FLOSS drivers (Broadcom RPi VC4/VC5 for example).
Some related links are gathered on this page: