← Back to main page

Can I put KaiOS on other devices?

Short answer: we don’t have enough publicly available components to create an exact copy of KaiOS, but developing a fork is doable.

KaiOS is considered a proprietary product, which means only KaiOS Technologies, its shareholders, and business partners can access, modify, and build on top of the codebase. It’s their choice for the business model and that something we cannot alter. But as KaiOS is derived from Firefox OS, parts of it, like Boot2Gecko, are under Mozilla Public Licence 2.0, and KaiOS Technologies has no choice but to open-source the original work by the Mozilla team, along with any modifications made to it. Much of the operating system, like the Gaia apps, is still missing, making it impossible to build or port an exact copy of KaiOS on our own.

To build KaiOS would also need the device-specific drivers (HALs, or referred to as Gonk), because there’s no point of operating systems if they cannot communicate with the hardware. Phone manufacturers are obligated to release the Linux kernel under the GNU GPLv2, and they sometimes do — along with the Gonk layer, which makes projects like postmarketOS possible. Other times, they do not or are not able to (shout out to MediaTek), making things tricky if the device significantly differs from those that have been open-sourced.

However, while the companies aren’t required to release any changes or additions made beyond the open-sourced modules, KaiOS has made some contributions to the publicly available fork and introduced a number of new APIs. Since the partnership between KaiOS Technologies and Mozilla, former employees who worked on B2G and Firefox OS have also worked on the fork and modernised it, by updating the Gecko engine and integrating a selection of current web technologies. Building another operating system based on this fork is possible, as demostrated by projects like Capyloon.

But you may ask, surely we can make an generic image file that we can flash on every device, something like this, right?

Comment on a Reddit post

ROMs for ARM devices don’t work the same way as ISOs for desktop operating systems due to the vast differences in configurations among devices (quad-core, octa-core, Cortex-A7, Cortex-A55, etc.) Often, phone manufacturers work with KaiOS to get the source code, tweak it to optimise the OS on their phones, build the code themselves, and then conduct QA testing. This entire process costs a ton of money (which explains there aren’t even any updates for already released phones.) Even Apple has to create IPSWs for each of its supported devices, but it benefits from having control over both the OS and the hardware.

KaiOS doesn’t have generic ROMs that you can flash to get your phone half-baked. That is Android-only; the concept was introduced with Project Treble in 2017 and Project Mainline in 2019, and works by separating the operating system code from the manufacturer’s driver code. Even then, the results are less than ideal.

inspired by this /r/archlinux post