Contributor Agreement
Before submitting your first pull request, you must sign the Wire Contributor Agreement. You can sign it electronically when you open your first pull request by filling in the required information in the PR description. You do not need to sign it again for subsequent pull requests from the same GitHub account.Reporting bugs
If you find a bug, you can report it through one of two channels:- Support portal: Submit a ticket at support.wire.com. The Wire team will keep you informed about progress.
- GitHub Issues: File an issue at github.com/wireapp/wire/issues. Include as much detail as possible to help the team reproduce the problem.
Opening a pull request
When your change is ready, follow these requirements before submitting:Fill in the pull request template
Complete the PR template to the fullest extent possible. This helps the Wire team understand the proposed changes quickly.
Run tests and linters
All tests and linters must pass before submitting. See the Testing page for the relevant Gradle tasks.
All pull requests are reviewed by the
@wireapp/android team, who are the code owners for this repository.Code style
Wire Android uses Detekt for static analysis and code style enforcement. The pre-commit hook in.githooks/pre-commit runs ./gradlew detektAll automatically before each commit.
You can also run it manually at any time:
Pre-commit hooks
The project uses pre-commit to enforce code quality checks on every commit. The configuration is in.pre-commit-config.yaml.
The following hooks run on pre-commit:
| Hook | Purpose |
|---|---|
check-added-large-files | Prevents accidentally committing large binary files |
check-case-conflict | Catches filename case conflicts |
check-merge-conflict | Detects unresolved merge conflict markers |
check-executables-have-shebangs | Ensures shell scripts have shebangs |
check-json | Validates JSON files |
check-toml | Validates TOML files |
check-yaml | Validates YAML files |
mixed-line-ending | Flags mixed line endings |
end-of-file-fixer | Ensures files end with a newline |
trailing-whitespace | Removes trailing whitespace |
shellcheck | Lints shell scripts |
commit-msg, the conventional-pre-commit hook enforces Conventional Commits format. Accepted commit types are:
Installing pre-commit hooks
Git hooks (optional)
The repository also ships an optional Git hook in.githooks/pre-commit that runs ./gradlew detektAll before each commit. This is separate from the pre-commit framework hooks above.
To enable it:
Commit message convention
Commit messages must follow the Conventional Commits specification. Thecommit-msg hook enforces this automatically once pre-commit is installed.
Examples of valid commit messages: