Skip to content

Contributing

Trace is open source and community-driven. Contributions are welcome in many forms—code, documentation, bug reports, feature requests, and more.

Ways to contribute

Code

Fix bugs, implement features, or optimize performance. Browse issues labeled "good first issue" to get started.

View good first issues →

Documentation

Improve guides, fix typos, add examples, or clarify confusing sections. Documentation is just as important as code.

Browse documentation →

Bug reports

Found a bug? Report it with steps to reproduce, device details, and expected behavior. Good bug reports help us fix issues faster.

Report a bug →

Feature requests

Have an idea? Open a discussion describing the use case and expected behavior. We prioritize features based on user feedback.

Suggest a feature →

Translations

Help make Trace accessible to non-English speakers. Translate the app or documentation to your language.

View translations →

Community

Help others in discussions, share your debugging workflows, or write tutorials. Community support is valuable.

Join discussions →

Code contribution workflow

1

Find or create an issue

Browse open issues or create a new one to discuss your proposed changes. For significant features, open a discussion first to validate the approach before writing code.

2

Fork and clone

Fork the repository on GitHub, then clone your fork locally:

git clone https://github.com/Trace-iOS/Trace
3

Create a feature branch

Create a new branch from main:

git checkout -b feature/your-feature-name
4

Write and test your changes

Follow the project's coding style. Write tests for new features. Run existing tests to ensure nothing breaks. See the building guide for development setup.

5

Submit a pull request

Push your branch and open a pull request on GitHub. Include a clear description of what changed and why. Reference any related issues. Participate in code review.

Guidelines

Code style

Follow Swift conventions and Apple's API Design Guidelines. Use SwiftLint configuration from the repository. Keep functions focused and well-named. Add comments for non-obvious logic.

Commit messages

Write clear commit messages in present tense: "Add WebSocket frame filtering" not "Added WebSocket frame filtering". Reference issue numbers when relevant.

Testing

Add tests for new features. Ensure existing tests pass. Manual testing on physical devices is important—simulators don't support Network Extension.

Documentation

Update relevant documentation when adding features. Include code examples where helpful. Keep the README and guides in sync with actual behavior.

Breaking changes

Avoid breaking changes when possible. If necessary, discuss in an issue first. Provide migration guides and deprecation warnings.

Recognition

Contributors are recognized in the project README, release notes, and on the website. Significant contributions may be highlighted in blog posts or on social media.

Ready to contribute?

Whether you're fixing a typo or implementing a major feature, your contribution helps make Trace better for everyone.