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).
- 1 Status
- 2 Principles
- 2.1 Developer facing
- 2.2 User facing
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.
- 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.
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.
Apps should make sense together and not give conflicting instructions. Broken features shall be disabled.
- pmaports!1449: first run screen of GNOME software disabled
- pmaports!1443: broken "logout" button in Phosh hidden
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:
- 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
- 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.
- pmaports#492: make it possible to roll back upgrades
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.
- 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.
- postmarketOS#18: privilege separation
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.)
- pmaports#727: 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.
- on-device installer (distro-agnostic components now live upstream, postmarketOS specific branding is in a separate repository called postmarketos-ondev)