Skip to content

Home

Shark-Bait

A project to create a recognizable identity and foster development of portage-based Android.

Android

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.

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 the 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.

Vendors have put effort to make their source code open. However, it is rather challenging to figure out exactly how to build from the source a usable system. Patches for Linux kernels from vendors should be tracked. The proprietary binary blobs to drive certain hardware should be carefully analyzed and documented. The bootloaders and flashing tools vary across vendors and impose artificial restrictions for either practical or profit reasons.

Custom ROMs

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 cyanogenmod is to cross compile, flash the image and test. This is the common practice in "ROM" development 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. The ROMs ease the software distribution of big vendors to have every single device install exactly the same partition images. But unfortunately for users, ROMs impose artificial restrictions in updating and tinkering the system.

With the advancement of mobile computing power, native compiling right on the device becomes feasible. It is possible to introduce package management to ROM developments, to bring the flexibility of Android apps to Android ROMs. This makes development and porting more direct and easier. With the help of an additional GNU userland, the development and test on the mobile devices will be no different from developing desktop computer applications: our phone becomes more hackable and more enjoyable to tweak with.

Gentoo

Gentoo is good at managing building recipes with utmost clarity and elegance by its Portage/Ebuild package management system. Ebuilds are the most suitable installation documentations that are able to be executed and verified to work. Gentoo has the potential to make native development environment for mobile devices a reality.

To achieve our ultimate goal of mobile computation freedom, three stages are required. First, a set of tools familiar to a GNU/Linux user should be installed by Gentoo Prefix. Second, the Linux kernel should be recompiled and customized using the Gentoo Prefix tools by the user. Finally, GNU userland should be able to access input/output peripherals (like HDMI video/audio output, USB keyboard, etc.) and have an X window system. Android and GNU userlands should be integrated by message passing interfaces and framebuffer copying and sharing.