Sxmo: Simple X Mobile - Contributing
The Sxmo project from a development point of view is a combination of a few different components:
- sxmo-utils: A catchall repository for scripts, configuration files, and C programs that hold Sxmo together. This contains things like the modem scripts, menu scripts, screenlock program, setuid programs for controlling the PP LEDs, brightness, etc, and all other scripts.
- lisgd: A custom piece of software for gestures built from scratch for Sxmo
- Suckless forks: Forks of Suckless software which has been mobile optimized and designed to fit within the larger Sxmo project
- sxmo-image-builder: CI that builds images for the Pinephone on sr.ht infra via pmbootstrap
All of the Sxmo project source repositories can be viewed at:
We always need help testing the latest development version of sxmo.
To help test sxmo’s latest development version, you can run
Submitting Bugs or Feature Requests
We use the bug tracker at:
Please search the existing tickets before submitting a new ticket. You are free to put in feature requests here or pull tickets off here to get ideas for patches.
Submitting Patches or General Discussion
We use a single mailing list for patch submission and discussion of the above subcomponents of the Sxmo project.
The mailing list is at:
If you’re new to development using
git-send-email don’t be discouraged and please still contribute!
- Change the default subject prefix from “PATCH” to “PATCH
” by running this command (only needed once).
shell-session $ git config --local format.subjectPrefix "PATCH <NAME-OF-REPO>"If you wanted to submit a change for sxmo-utils, change
<NAME-OF-REPO>in the command above to
- Rebase your commits on top of the latest
- Send the patch to the mailing list:
shell-session $ git send-email --to="~firstname.lastname@example.org" origin/master
Also, you can check out the guide at: https://git-send-email.io/ for a guided tutorial on using git-send-email.
Our IRC channel for general adhoc development discussion is:
Information for Maintainers
Releases: Steps for cutting a new release of an Sxmo package
- Tag the release in git (sxmo-utils, sxmo-dwm, etc.)
- Include the changelog in the tag message
- Send a pull request to pmaports to update the changed sxmo packages
- Send an email to the mailing list (sxmo-announce) containing atleast the following info:
- New Sxmo release will be available soon!
- Description of which repos have been updated (sxmo-utils, sxmo-dwm, etc.)
- A paragraph detailing major changes
- An Annotated Summary of Changes - Thank the contributors
- Description of breaking changes
- Where to get the new images or how to update from an existing release
- Any other pmos related issues (update-u-boot, updating modem firmware, etc.)
Notes on Package Versioning: Versioning numbers for suckless forks follow the scheme: sucklessv.sxmov. For example, with the dmenu fork, checkout 4.9 as upstream-4.9 and commit new versions as 4.9.x; wherein x is the Sxmo version.
Accepting a Patch
- Contributor submits a patch
- Maintainer A assign themselves to the patch and tests the patch
- If the patch passes testing, Maintainer A can ask Maintainer B if they’re unsure about the code quality.
- Sign the commit with
git am -s
Note: Unless the change is trivial, the maintainer must send their change to mailing list to be reviewed by another maintainer or a member of the sxmo community
Notes on Stable Release Flow:
New releases must be in Alpine Edge for a certain amount of time for them to be accepted into postmarketOS’s stable releases and service packs.
As such, the flow is as follows:
- Push new release to Alpine Edge (aports) unless the package is in pmaports only (ie. ui packages)
- Wait for a postmarketOS stable or service pack release. When a new release of pmOS is imminent, copy APKBUILDS from aports into pmaports.