About postmarketOS

From postmarketOS
Revision as of 21:13, 26 August 2020 by Ollieparanoid (talk | contribs) (→‎Encryption: link to https://gitlab.com/postmarketOS/pmaports/-/issues/726)
Jump to navigation Jump to search

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 musl libc and BusyBox based Linux distribution.

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


postmarketOS is in beta. The more complete device ports (mostly aarch64 devices in main and community categories) are capable of running both packaged mobile interfaces, Phosh and Plasma Mobile.

Other interfaces and devices are either for testing or serve a special purpose. One can use the classic N900 with i3wm for example.


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

Developer facing

Easy to modify

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


  • 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 of the main category must use a (close to) mainline kernel.


Minimal base

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

Use case example:

  • Mainlining a new device with a minimal rootfs


The infrastructure of postmarketOS should consist of free software.

User facing


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


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:

  • pmaports#725: gnome-online-accounts: hide / disable proprietary services


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:

Privacy friendly


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:

  • pmaports#726: Integrate EteSync into Phosh / Plasma Mobile on postmarketOS


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:

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