blob: 44dddc37a4061ba65e3289bd8a9da9afc2132031 [file] [log] [blame] [view]
# Contributing to Perfetto
## Quickstart
Follow those steps if you are new to contributing to Perfetto.
### Setup
**Prerequisites:** git and python3.
```sh
# Clone the Perfetto repo and enter the directory
git clone https://github.com/google/perfetto.git
cd perfetto
# Install dependencies
tools/install-build-deps
# Setup all build configs
tools/setup_all_configs.py
```
### Building
_On Linux_
```sh
# Production build
tools/ninja -C out/linux_clang_release
# Debug build
tools/ninja -C out/linux_clang_debug
```
_On Mac_
```sh
# Production build
tools/ninja -C out/mac_release
# Debug build
tools/ninja -C out/mac_debug
```
_UI_
```sh
# Build the UI
ui/build
# Run the dev server
ui/run_dev_server
```
For more information on building Perfetto go to [build instructions](build-instructions).
### Contributing
NOTE: In March 2025 our team has moved the primary development of Perfetto
to GitHub (previously on Android Gerrit).
#### Googlers
NOTE: Follow the instructions at [go/perfetto-github-instructions](http://go/perfetto-github-instructions).
1. Make sure you/your organization has signed the Google CLA at [cla.developers.google.com](https://cla.developers.google.com/)
2. Create a branch with the change:
```sh
git checkout -b first-contribution
```
3. Make change in the repo.
4. Add, commit and upload the change:
```sh
git add .
git commit -m "My first contribution"
gh pr create # Requires cli.github.com
```
Please note our project follows the [Google C++ style](https://google.github.io/styleguide/cppguide.html), and targets `-std=c++17`.
#### External contributors
Please contribute the same way as you would to any other Github repository.
A good explanation of how to do it can be found [here](https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project).
### Testing
As Perfetto has a rather complicated testing strategy, we will automatically run our presubmit on each push into the repo.
For manual run: `tools/run_presubmit`.
For more information on testing Perfetto go to [testing page](testing).
## What's next?
You might want to contribute to the UI, Trace Processor, SDK or various data importers.
- If you want to add a new functionality to the UI, most likely the next step is the [UI getting started](ui-getting-started).
- If you want to edit the core functionality of the UI: it's a much bigger change which would require in depth understanding of Perfetto UI. Most requests/bugs now are related to various plugins, not the core.
- If you want to add a new ftrace event take a look at [common tasks page](common-tasks).
- If you want to add a new table/view/function to Perfetto SQL standard library you need to first undestand [the Perfetto SQL syntax](/docs/analysis/perfetto-sql-syntax.md), and then read the details of updating the standard library at [common tasks page](common-tasks).
- If you want to add a support of a new file type into Perfetto, you need to add a new `importer` to Trace Processor C++ code.
## {#community} Communication
### Contact
Our main communication channel is our mailing list: https://groups.google.com/forum/#!forum/perfetto-dev.
You can also reach us on our [Discord channel](https://discord.gg/35ShE3A) but our support there is best effort only.
This project follows
[Google's Open Source Community Guidelines](https://opensource.google/conduct/).
### Bugs
For bugs affecting Android or the tracing internals:
- **Googlers**: use the internal bug tracker [go/perfetto-bugs](http://goto.google.com/perfetto-bugs)
- **Non-Googlers**: use [GitHub issues](https://github.com/google/perfetto/issues).
For bugs affecting Chrome Tracing:
- Use http://crbug.com `Component:Speed>Tracing label:Perfetto`.
## Contributor License Agreement
Contributions to this project must be accompanied by a Contributor License
Agreement. You (or your employer) retain the copyright to your contribution;
this simply gives us permission to use and redistribute your contributions as
part of the project. Head over to <https://cla.developers.google.com/> to see
your current agreements on file or to sign a new one.
You generally only need to submit a CLA once, so if you've already submitted one
(even if it was for a different project), you probably don't need to do it
again.