The mobile devices today become more powerful than desktop computers 10 years ago. As the hardware performance boosts, the software becomes a flexible part of the system. The pursuit of software freedom on desktop computers carries naturally to mobile ones.
The Free Software Foundation (FSF), has recognized the freedom for mobile computing early on. With a GPL-licensed Linux kernel and a Apache-licensed userland, Android is a big step forward for smartphones, tablets and multimedia centers. At the same time, as FSF points out, there is still a long way to go to regain full control of our own devices, "Smartphones are the most widely used form of personal computer today. Thus, the need for a fully free phone operating system is crucial to the proliferation of software freedom" (Young, 2017).
Vendors have put effort to make their source code open. However, it is rather challenging to figure out exactly how to build a usable system from these sources. Patches for device-specific Linux kernels from vendors should be tracked. The proprietary binary blobs that drive certain hardware should be carefully analyzed and documented, and ultimately replaced with free versions. Sadly, most bootloaders and flashing tools vary across vendors who impose these artificial restrictions for either practical reasons or simply for profit.
LineageOS (forked from Project CyanogenMod) is another step forward in that its build system, finely version controlled, tracks the details needed to build a working system. The development cycle of LineageOS is to cross compile, flash the image, then test. This is the most common development practice in the Android community. Although originally meaning "Read-Only Memory", ROM in the Android context means the partitions of flash memory that hold the Linux kernel and the Android userland. The same practice is taken by vendor-specific Android variants, and the original Android Open Source Project (AOSP). This practice eases the software distribution of big vendors, allowing them to have every single device install exactly the same partition images. But unfortunately for users, this imposes more artificial restrictions in updating and tinkering with the system.
With the advancement of mobile computing power, native compiling directly on the device is now feasible. It is possible to introduce package management to ROM development workflows, to bring the flexibility and ease of writing Android apps to building Android ROMs. This makes development and porting more direct and easier for contributors. With the help of an additional GNU userland, developing and testing on mobile devices will be no different from developing desktop computer applications, resulting in our phones becoming more hackable and more enjoyable to tweak.
Gentoo excels at managing build recipes with utmost clarity and elegance via Portage, Gentoo's official package manager. Ebuilds are expressed in a self-documenting text format and therefore are most suitable for providing clarity in building Android from scratch. Gentoo has the potential to create a native development environment for mobile devices, making this vision a reality.
To achieve our ultimate goal of mobile computation freedom, three stages are required. First, a set of tools familiar to any GNU/Linux user should be installed by the Gentoo Prefix. Second, the Linux kernel should be recompiled and customized using the Gentoo Prefix tools by the user. Finally, the GNU userland should be able to access input/output peripherals (like HDMI video/audio output, USB keyboard, etc.) to provide an X window system. Android and GNU userlands should be integrated by message passing interfaces and framebuffer copying and sharing.