Contributing to Tune

We welcome (and encourage!) all forms of contributions to Tune, including and not limited to:

  • Code reviewing of patches and PRs.
  • Pushing patches.
  • Documentation and examples.
  • Community participation in forums and issues.
  • Code readability and code comments to improve readability.
  • Test cases to make the codebase more robust.
  • Tutorials, blog posts, talks that promote the project.

Setting up a development environment

If you have Ray installed via pip (pip install -U [link to wheel] - you can find the link to the latest wheel here), you can develop Tune locally without needing to compile Ray.

First, you will need your own fork to work on the code. Press the Fork button on the ray project page. Then, clone the project to your machine and connect your repository to the upstream (main project) ray repository.

git clone https://github.com/[your username]/ray.git [path to ray directory]
cd [path to ray directory]
git remote add upstream https://github.com/ray-project/ray.git

Before continuing, make sure that your git branch is in sync with the installed Ray binaries (i.e., you are up-to-date on master and have the latest wheel installed.)

Then, run [path to ray directory]/python/ray/setup-dev.py (also here on Github) script. This sets up links between the tune dir (among other directories) in your local repo and the one bundled with the ray package.

As a last step make sure to install all packages required for development of tune. This can be done by running:

pip install -r [path to ray directory]/python/ray/tune/requirements-dev.txt

What can I work on?

We use Github to track issues, feature requests, and bugs. Take a look at the ones labeled “good first issue” and “help wanted” for a place to start. Look for issues with “[tune]” in the title.

Note

If raising a new issue or PR related to Tune, be sure to include “[tune]” in the beginning of the title.

For project organization, Tune maintains a relatively up-to-date organization of issues on the Tune Github Project Board. Here, you can track and identify how issues are organized.

Submitting and Merging a Contribution

There are a couple steps to merge a contribution.

  1. First rebase your development branch on the most recent version of master.

    git remote add upstream https://github.com/ray-project/ray.git
    git fetch upstream
    git rebase upstream/master
    
  2. Make sure all existing tests pass.

  3. If introducing a new feature or patching a bug, be sure to add new test cases in the relevant file in tune/tests/.

  4. Document the code. Public functions need to be documented, and remember to provide an usage example if applicable.

  5. Request code reviews from other contributors and address their comments. One fast way to get reviews is to help review others’ code so that they return the favor. You should aim to improve the code as much as possible before the review. We highly value patches that can get in without extensive reviews.

  6. Reviewers will merge and approve the pull request; be sure to ping them if the pull request is getting stale.

Testing

Even though we have hooks to run unit tests automatically for each pull request, we recommend you to run unit tests locally beforehand to reduce reviewers’ burden and speedup review process.

pytest ray/python/ray/tune/tests/

Documentation should be documented in Google style format.

We also have tests for code formatting and linting that need to pass before merge. Install yapf==0.23, flake8, flake8-quotes (these are also in the requirements-dev.txt found in python/ray/tune). You can run the following locally:

ray/scripts/format.sh

Becoming a Reviewer

We identify reviewers from active contributors. Reviewers are individuals who not only actively contribute to the project and are also willing to participate in the code review of new contributions. A pull request to the project has to be reviewed by at least one reviewer in order to be merged. There is currently no formal process, but active contributors to Tune will be solicited by current reviewers.

Note

These tips are based off of the TVM contributor guide.