Contributing
Omni is built in the open and welcomes contributions โ code, translations, bug reports and docs. Hereโs how to get set up and get your change merged.
Ways to contribute
good first issue.Development environment
Install the toolchain
Android Studio Ladybug+, JDK 17, and an API 26+ device or emulator.
Fork & clone
git clone https://github.com/YOUR-USER/omni-browser.git cd omni-browserSync and run
Open in Android Studio, let Gradle sync, then run
:app:installUniversalDebug.Branch
Create a feature branch off
main.
Code style
Follow the conventions already in the codebase. The highlights:
- Kotlin โ idiomatic, prefer
val, use extension functions to split large classes (see theBrowserViewModel_*.ktpattern). - Compose โ keep composables stateless where possible; hoist state into the ViewModel.
- GeckoView interop โ treat
GeckoSessionas a live handle; never serialize it. Run engine work through the shared runtime. - Strings โ all user-facing text goes in
strings.xml, never hardcoded. - NDK โ native libraries must be 16 KB page-aligned.
// Prefer: small, focused extension files by concern
// BrowserViewModel_Downloads.kt
fun BrowserViewModel.startDownload(url: String, toVault: Boolean) {
viewModelScope.launch {
val request = DownloadRequest(url, destination = if (toVault) Vault else Public)
downloadRepository.enqueue(request)
}
}
Pull request process
Open a PR against
mainUse the PR template. Link the issue youโre fixing.
CI must pass
pr_check.ymlbuilds and lints your branch.Review
A maintainer reviews for correctness, style and privacy impact. Privacy regressions are a hard no.
Merge
Squash-merged with a conventional-commit message.
Any change that adds a network call, dependency or permission needs explicit justification. We will ask you to remove telemetry, analytics and non-FOSS dependencies.
Licensing your contribution
Contributions are made under the projectโs GPLv3 license. By submitting a PR you agree your code can be distributed under those terms. Remember the trademark rules if youโre building a derivative you plan to publish โ see License.