Contributing
The rules a change to Open Mapple follows.
What may not be in a repository
- Nothing of Apple’s. No IPSW, disk image, cache, binary, font, screenshot, or header derived from iOS firmware. The build fetches iOS from Apple on the user’s own machine.
- Nothing of the phone maker’s. No firmware (touch, Wi-Fi, SCP, GPU), partition image or device tree taken off a phone. Scripts that fetch them go into a git-ignored
fw-*/on the user’s own computer. - No personal data. No serial numbers (scripts read an environment variable), home-directory paths, tokens, Wi-Fi names or passwords. Modem firmware, nvram copies, IMEI and SIM data never go into a repository, a log or a note.
Licences
The kernel is under the Apple Public Source License 2.0, and the files the earlier ports added are MIT, as each repository’s NOTICE says; everything else is MIT. Imported code keeps its licence and copyright headers untouched.
MediaTek’s, Linux’s and the phone maker’s GPL sources may be read for register addresses and the order of operations, and named where used, but never copied.
How a change is made
- Every hardware step is behind a boot-argument and does nothing without it, in numbered steps, read only first (Adding a boot-arg).
- A status is written only for what a run showed:
worksfor what was seen working,partialwith a note,missingotherwise, and the run is named (device.conf). - Code reads like a careful person wrote it: comments only where the code cannot say it (a register’s source, a hardware quirk), none that narrate or restate. The kernel’s style is checked by
tools/pre-commit.sh. - Documentation is short and practical. The reference pages state values read from code at a commit, and name it.
- Tests first on the Mac, then the phone (Testing on the phone). A phone run is for what only the phone can show.
- No CI: no
.github/workflowsand no GitHub Actions in any repository. Builds run on your machine.
Commits and branches
A commit has a short subject line, and a body only when it adds something. Branches land rebased (fast-forward only): no merge commits. Imported commits are replayed linearly with their author, committer, dates and message kept; a change to a rename is folded into the earlier commits instead of making a commit of its own.
Porting another phone
Start with the bring-up script and the porting guide. A new device is its own repository, with a device.conf whose every status starts as missing.
Applies to Release 1 · Updated 15 November 2026