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

๐Ÿ›Report bugsA precise issue is worth a thousand vague ones. Use the bug template.
๐Ÿ’ปWrite codeKotlin + Compose. Pick an issue labelled good first issue.
๐ŸŒTranslateNine locales are bundled; help us add or improve more.
๐Ÿ“šImprove docsThis site lives in the website repo โ€” every page has an โ€œEditโ€ link.

Development environment

  1. Install the toolchain

    Android Studio Ladybug+, JDK 17, and an API 26+ device or emulator.

  2. Fork & clone

    git clone https://github.com/YOUR-USER/omni-browser.git
    cd omni-browser
  3. Sync and run

    Open in Android Studio, let Gradle sync, then run :app:installUniversalDebug.

  4. Branch

    Create a feature branch off main.

Code style

Follow the conventions already in the codebase. The highlights:

// 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

  1. Open a PR against main

    Use the PR template. Link the issue youโ€™re fixing.

  2. CI must pass

    pr_check.yml builds and lints your branch.

  3. Review

    A maintainer reviews for correctness, style and privacy impact. Privacy regressions are a hard no.

  4. Merge

    Squash-merged with a conventional-commit message.

Privacy is a design constraint

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.

Related