blob: 7a674e872163f172a0e606ccdc3074d6bd003b7d [file] [log] [blame] [view]
# UI plugins
The Perfetto UI can be extended with plugins. These plugins are shipped
part of Perfetto.
## Create a plugin
The guide below explains how to create a plugin for the Perfetto UI.
### Prepare for UI development
First we need to prepare the UI development environment.
You will need to use a MacOS or Linux machine.
Follow the steps below or see the
[Getting Started](./getting-started) guide for more detail.
```sh
git clone https://android.googlesource.com/platform/external/perfetto/
cd perfetto
./tool/install-build-deps --ui
```
### Copy the plugin skeleton
```sh
cp -r ui/plugins/com.example.Skeleton ui/plugins/<your-plugin-name>
```
Now edit `ui/plugins/<your-plugin-name>/index.ts`.
Search for all instances of `SKELETON: <instruction>` in the file and
follow the instructions.
Notes on naming:
- Don't name the directory `XyzPlugin` just `Xyz`.
- The `pluginId` and directory name must match.
- Plugins should be prefixed with the reversed components of a domain
name you control. For example if `example.com` is your domain your
plugin should be named `com.example.Foo`.
- Core plugins maintained by the Perfetto team should use
`dev.perfetto.Foo`.
### Start the dev server
```sh
./ui/run-dev-server
```
Now navigate to [](http://localhost:10000/settings)
### Upload your plugin for review
- Update `ui/plugins/<your-plugin-name>/OWNERS` to include your email.
- Follow the [Contributing](./getting-started#contributing)
instructions to upload your CL to the codereview tool.
- Once uploaded add `hjd@google.com` as a reviewer for your CL.
## Plugin extension points
Plugins can extend a handful of specific places in the UI. The sections
below show these extension points and give examples of how they can be
used.
### Commands
TBD
### Tracks
TBD
### Detail tabs
TBD
### Metric Visualisations
TBD
## Guide to the plugin API
TBD
## Default plugins
TBD
## Misc notes
- Plugins must be licensed under
[Apache-2.0](https://spdx.org/licenses/Apache-2.0.html)
the same as all other code in the repository.
- Plugins are the responsibility of the OWNERS of that plugin to
maintain, not the responsibility of the Perfetto team. All
efforts will be made to keep the plugin API stable and existing
plugins working however plugins that remain unmaintained for long
periods of time will be disabled and ultimately deleted.