About postmarketOS

postmarketOS extends the free and open source operating system Alpine Linux to run on smartphones and other mobile devices. Alpine is a security-oriented, light-weight Linux distribution based on musl libc and BusyBox.

Currently, postmarketOS is for Linux enthusiasts. In the long term, postmarketOS shall empower ordinary people to be in control of their phone (and not the other way around).

Status
postmarketOS is for Linux enthusiasts. The more complete device ports (mostly aarch64 devices in main and community categories) are capable of running modern mobile interfaces Phosh, Plasma Mobile and Sxmo.

Other interfaces and devices are either for testing or serve a special purpose. For example, because of its hardware keyboard, one can use the classic N900 with i3wm.

Principles
Decisions related to development of postmarketOS are done with the following principles in mind.

Easy to modify
postmarketOS should be easy to modify and it should be easy to contribute the changes back.

Examples:
 * All packages in one pmaports.git repository
 * Simple packaging format APKBUILD
 * pmbootstrap makes it easy to:
 * Create a custom installation
 * Cross compile packages
 * Build packages from local source tree
 * Create foreign arch chroots
 * Reset the chroots to start over
 * It's easy to enable SSH
 * Lots of CI scripts assist in contributing changes back

Sustainable and maintainable
postmarketOS should have maintainable code and packages. When patching software to fix builds or to fit our needs, we attempt to upstream everything that makes sense. Device specific code and configuration should be minimal.

Devices in the main category must use a (close to) mainline kernel.

Related:
 * Guidelines for packaging patches

Minimal base
It must be possible to install a minimal version of postmarketOS.

Use case example:
 * Mainlining a new device with a minimal rootfs

Infrastructure
The infrastructure of postmarketOS should consist of free software.

Polished
Apps should make sense together and not give conflicting instructions. Broken features shall be disabled.

Examples:
 * | pmaports!1449: first run screen of GNOME software disabled
 * : broken "logout" button in Phosh hidden

Avoid distractions
User interfaces and apps should aid users in their workflows, and not distract them.

"How Technology is Hijacking Your Mind" is an excellent article on this topic, illustrating how this is a problem with current mainstream smartphone OS and apps. Examples for distractions:
 * Advertising
 * Notifications for unimportant events
 * "Recommendations" to try out specific features
 * Autoplay of next videos

Prefer free software services
Integrations with services that run on proprietary software, or provide proprietary software, should not be enabled by default or recommended. But it should still be easy to enable them if the user desires (by having them behind an "additional providers" button or similar). If we have no means to test if integration with a proprietary service is working or not, we shall disable it.

Examples for proprietary services:
 * Flatpak + Flathub
 * YouTube

Related issues:
 * : gnome-online-accounts: hide / disable proprietary services

Reliable
Updates should not break postmarketOS on the stable channel. Long term, it would be great to allow users to recover from failed updates.

Related issues:
 * : make it possible to roll back upgrades

Encryption
The user's data should be protected with encryption unless they chose to use an unencrypted communication channel. Full disk encryption has been implemented since day one in postmarketOS.

Long term, we should push towards integrating and preferring end-to-end encrypted communication.

Related issues:
 * : Integrate EteSync into Phosh / Plasma Mobile on postmarketOS

Security
postmarketOS should use state-of-the-art security to protect the user's data from malicious input, such as websites or PDF documents.

Related issues:
 * : privilege separation

Avoid tracking
Long term, it should be hard to fingerprint the user and collect data about them when they use postmarketOS. (Currently we have merely changed the user-agents to something more generic.)

Related issues:
 * : Phosh: bluetooth is always re-enabled after boot

No vendor lock-in
In postmarketOS, we aim to build generic software solutions (programs, apps, ...), which can be adapted by other distributions if they choose to do so. Branding should be optional and sane patches to make our software work better on other systems should be accepted.

This benefits the user, as it is easier for them to switch between distributions. Also it makes development easier, because instead of each project developing their own solution for certain problems, we can work together.

Examples:
 * osk-sdl
 * mobile-config-firefox
 * on-device installer (distro-agnostic components now live upstream, postmarketOS specific branding is in a separate repository called postmarketos-ondev)
 * megapixels