Even with android custom ROMs like Lineage, support eventually ends. Meanwhile, you can just slap on linux onto any old computer and its still getting the latest updates. 🤔

Why not just do the same thing with phones? Forever phone updates? 👀

  • planish@sh.itjust.works
    link
    fedilink
    arrow-up
    40
    ·
    edit-2
    1 day ago

    Computers have systems (BIOS, EFI, ACPI) that give the people who make the machine responsibility for providing a standard, publicly-defined way for the OS to enumerate the hardware, and to use the hardware in a basic way even if the OS has never heard of it. Linux can get a kernel panic on the screen even if it has no idea what your GPU is, because EFI understands it and Linux understands EFI. It is set up this way partly because there’s a real possibility of hardware being added or removed, partly because people routinely mix and match parts, and partly because IBM mistakenly designed a good system that was easy to work in and not one that kept them in business.

    Phones (and phone-derived systems like the Raspberry Pi and other single-board computers) don’t implement a standard. The hardware and its boot process assumes tight integration between the hardware and the software, usually to the point where the bootloader refuses to load anything not signed by the device manufacturer, unless it is satisfied that it has been given that manufacturer’s permission to be unlocked. (Computer secure boot implementations generally trust, for example, Microsoft, as well as the machine owner, who can load their own keys.)

    Instead of the CPU developers releasing example EFI implementations, they release forks of the Linux kernel that they maintain as long as that chip is the latest chip they sell, and then fork off the mainline kernel again for their next chip. And the device makers ship devices by starting with the chip maker’s kernel, customizing it for the device, giving it a “device tree” that tells it everything that is supposed to be in that particular device, and shipping it. For a few years they port patches from the current kernel onto this forked kernel, and then they stop. With no standard to develop software against, and no documentation for what’s in a device and how to use it like there is for the standard’s interfaces, the only practical way to run software on a device is to start with that patched kernel.

    Mainline Linux refuses to adopt and maintain the chip and device makers’ low-quality, chip-and-board-specific kernel changes (often because they break the kernel for other uses), so you can’t generally use a mainline Linux kernel instead. If you tried to tease out and improve the device-specific patches to the point where mainline Linux would take them, the device would be hopelessly outdated by the time you were done and you would have dozens of job offers to occupy your time as a highly skilled embedded Linux developer. The work is not practical given the tiny number of people who would benefit from it for a particular device, and how little it pays off compared to just buying a new device with a more up to date forked kernel available.

    “Maintaining” a device for LineageOS or other open software eventually collapses under the weight of mainline Linux’s changes and the necessary chip and device maker patches no longer being practically reconcileable.