Jump to content

About postmarketOS: Difference between revisions

From postmarketOS Wiki
Avoid tracking: link to https://gitlab.com/postmarketOS/pmaports/-/issues/727
update to gitlab.postmarketos.org
 
(14 intermediate revisions by 8 users not shown)
Line 1: Line 1:
postmarketOS extends the [https://en.wikipedia.org/wiki/Free_software free and open source] operating system [https://alpinelinux.org/about/ Alpine Linux] to run on smartphones and other mobile devices. Alpine is a security-oriented, light-weight [https://musl.libc.org/ musl libc] and [https://busybox.net/ BusyBox] based Linux distribution.
[https://postmarketos.org/ postmarketOS] extends the [https://en.wikipedia.org/wiki/Free_software free and open source] operating system [https://alpinelinux.org/about/ Alpine Linux] to run on smartphones and other mobile devices. Alpine is a security-oriented, light-weight Linux distribution based on [https://musl.libc.org/ musl libc] and [https://busybox.net/ 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).
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 =
== Status ==
postmarketOS is in beta. The more complete [[Devices|device ports]] (mostly aarch64 devices in main and community categories) are capable of running both packaged mobile interfaces, [[Phosh]] and [[Plasma Mobile]].
postmarketOS is for Linux enthusiasts. The more complete [[Devices|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. One can use the classic [[Nokia_N900_(nokia-n900)|N900]] with [[i3wm]] for example.
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 [[Nokia_N900_(nokia-n900)|N900]] with [[i3wm]].


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


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


Line 29: Line 29:
</small>
</small>


=== Sustainable and maintainable ===
==== 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 package|Device specific]] code and configuration should be minimal.
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 package|Device specific]] code and configuration should be minimal.


Devices of the [[Device_categorization|main category]] must use a [[(Close to) Mainline|(close to) mainline]] kernel.
Devices in the [[Device_categorization|main category]] must use a [[(Close to) Mainline|(close to) mainline]] kernel.


<small>
<small>
Line 39: Line 39:
</small>
</small>


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


Line 47: Line 47:
</small>
</small>


=== Infrastructure ===
==== Infrastructure ====
The infrastructure of postmarketOS should consist of free software.
The infrastructure of postmarketOS should consist of free and open source software.


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


<small>
<small>
Examples:
Examples:
* [https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1449#note_385456592| pmaports!1449]: first run screen of GNOME software disabled
* [https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/1449#note_385456592| pmaports!1449]: first run screen of GNOME software disabled
* {{MR|1443|pmaports}}: broken "logout" button in Phosh hidden
* {{MR|1443|pmaports}}: broken "logout" button in Phosh hidden
</small>
</small>


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


Line 71: Line 71:
</small>
</small>


=== Prefer free software services ===
==== 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.
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.


Line 83: Line 83:
</small>
</small>


=== Reliable ===
==== Reliable ====
Updates should not break postmarketOS on the [https://postmarketos.org/blog/2020/05/31/three-years/#stable-release-channel stable channel]. Long term, it would be great to allow users to recover from failed updates.
Updates should not break postmarketOS on the [https://postmarketos.org/blog/2020/05/31/three-years/#stable-release-channel stable channel]. Long term, it would be great to allow users to recover from failed updates.


Line 91: Line 91:
</small>
</small>


=== Privacy friendly ===
==== Privacy friendly ====
==== Encryption ====
===== 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.
The user's data should be protected with encryption unless they explicitly choose 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.
Long term, we should push towards integrating and preferring end-to-end encrypted communication.
Line 102: Line 102:
</small>
</small>


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


<small>
<small>
Related issues:
Related issues:
* {{issue|18|postmarketOS}}: privilege separation
* {{issue|1596|pmaports}}: privilege separation
</small>
</small>


==== Avoid tracking ====
===== 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.)
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.)


Line 116: Line 116:
Related issues:
Related issues:
* {{issue|727|pmaports}}: Phosh: bluetooth is always re-enabled after boot
* {{issue|727|pmaports}}: Phosh: bluetooth is always re-enabled after boot
</small>
==== 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.
<small>
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
</small>
</small>

Latest revision as of 08:35, 4 November 2024

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.

Developer facing

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:

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 and open source software.

User facing

Polished

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

Examples:

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

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:

Privacy friendly

Encryption

The user's data should be protected with encryption unless they explicitly choose 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

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:

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:

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

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