- Prefer memory-safe code and languages (Swift, Rust)
- Apple Secure Coding Guide
- Swift Style Guide
- Objective-C Style Guide
- Rust Style Guide
- All releases will be versioned according to semver
- All release tags must be signed
- Signing each commit may be overkill
- Every feature/bugfix/etc should be done in a feature branch.
- To merge into master, submit a PR on GitHub to allow for code review.
- Ideally before merging, it should be reviewed by at least 1 other person.
- All code should be written in a way that facilitates testing
- New code should be accompanied by unit tests and integration tests
- TDD (test driven development) is very helpful for quick iteration
- 3rd party dependencies should be minimized if possible
- Prefer Cocoapods or Carthage over submodules
- By contributing you affirm you have the rights to all the code you provide
- All code should be permissively licensed
- We should use the Tor LICENSE