Want to contribute? Great: read the page (including the small print at the end).
As an individual, sign the Google Individual Contributor License Agreement (CLA) online. This is required for any of your code to be accepted.
Before you start working on a larger contribution, get in touch with us first through the issue tracker with your idea so that we can help out and possibly guide you. Coordinating up front makes it much easier to avoid frustration later on.
All submissions (including by project members) are done via GitHub pull requests and require a code review by a project member.
All contributions should include automated tests for the change. We are continuously improving pprof automated testing and we can't accept changes that are not helping that direction. Code coverage numbers are automatically published in each pull request - we expect that number to go up. Note that adding a good test often requires more time than the fix itself - this is expected and you should be prepared for that time investment.
Contributions that do not meet the above guidelines will get less attention and will be slow to get accepted or won't be accepted at all. We will also likely refuse to accept changes that have fairly limited audience but will require us to commit to maintain them for foreseeable future. This includes support for specific platforms, making internal pprof APIs public, etc.
The commands below assume
/tmp/pprof as the location for the source code. You can change it to a directory of your choice.
To get the source code, run
cd /tmp git clone email@example.com:google/pprof.git cd pprof
To run the tests, do
cd /tmp/pprof go test -v ./...
When you wish to work with your own fork of the source (which is required to be able to create a pull request), you‘ll want to get your fork repo as another Git remote in the same
github.com/google/pprof directory. Otherwise, if you’ll
go get your fork directly, you'll be getting errors like
use of internal package not allowed when running tests. To set up the remote do something like
cd /tmp/pprof git remote add aalexand firstname.lastname@example.org:aalexand/pprof.git git fetch aalexand git checkout -b my-new-feature # hack hack hack go test -v ./... git commit -a -m "Add new feature." git push aalexand
aalexand is your GitHub user ID. Then proceed to the GitHub UI to send a code review.
Contributions made by corporations are covered by a different agreement than the one above, the Software Grant and Corporate Contributor License Agreement.