Skip to content

Latest commit

 

History

History
155 lines (96 loc) · 6.71 KB

CONTRIBUTING.md

File metadata and controls

155 lines (96 loc) · 6.71 KB

Contributing to cuGraph

cuGraph, and all of RAPIDS in general, is an open-source project where we encourage community involvement. There are multiple ways to be involved and contribute to the cuGraph community, the top paths are listed below:

If you are ready to contribute, jump right to the Contribute Code section.

1) File an Issue for the RAPIDS cuGraph team to work

To file an issue, go to the RAPIDS cuGraph issue page an select the appropiate issue type. Once an issue is filed the RAPIDS cuGraph team will evaluate and triage the issue. If you believe the issue needs priority attention, please include that in the issue to notify the team.

Bug Report If you notice something not working please file an issue

  • Select Bug Report
  • Describing what you encountered and the severity of the issue: Does code crash or just not return the correct results
  • Include a sequence of step to reproduce the error

Propose a new Feature or Enhancement If there is a feature or enhancement to an existing feature, please file an issue

  • Select either Enhancement Request or Feature Report
  • describing what you want to see added or changed. For new features, if there is a white paper on the analytic, please include a reference to it

Ask a Question There are several ways to ask questions, including Stack Overflow or the RAPIDS Google forum, but an GitHub issue can be filled.

  • Select Question
  • describing your question

2) Propose a New Feature and Implement It

We love when people want to get involved, and if you have a suggestion for a new feature or enhancement and want to be the one doing the development work, we fully encourage that.

  • Submit a New Feature Issue (see above) and state that you are working on it.
  • The team will give feedback on the issue and happy to make suggestions
  • Once we agree that the plan looks good, go ahead and implement it
  • Follow the code contributions guide below.

3) You want to implement a feature or bug-fix for an outstanding issue

  • Find an open Issue, and post that you would like to work that issues
  • Once we agree that the plan looks good, go ahead and implement it
  • Follow the code contributions guide below.

If you need more context on a particular issue, please ask.

So You Want to Contribute Code

TL;DR General Development Process

  1. Read the documentation on building from source to learn how to setup, and validate, the development environment
  2. Find or submit an issue to work on. (include a comment that you are workign issue)
  3. Fork the cuGraph repo and Code (make sure to add unit tests)!
  4. When done, and code passes local CI, create your pull request (PR)
    1. Update the CHANGELOG.md with PR number
    2. Ensure that the PR has the proper tags
  5. Verify that cuGraph CI passes all status checks. Fix if needed
  6. Wait for other developers to review your code and update code as needed
  7. Once reviewed and approved, a RAPIDS developer will merge your pull request

Remember, if you are unsure about anything, don't hesitate to comment on issues and ask for clarifications!

Fork a private copy of cuGraph

The RAPIDS cuGraph repo cannot directly be modified. Contributions must come in the form of a Pull Request from a folked version of cugraph. GitHub as a nice write up ion the process: https://help.github.com/en/github/getting-started-with-github/fork-a-repo

  1. Fork the cugraph repo to your GitHub account
  2. clone your version git clone https://github.com/<YOUR GITHUB NAME>/cugraph.git

Read the section on building cuGraph from source to validate that the environment is correct.

Pro Tip add an upstream remote repository so that you can keep your forked repo in sync git remote add upstream https://github.com/rapidsai/cugraph.git

  1. Checkout the latest branch cuGraph only allows contribution to the current branch and not master or a future branch. PLease check the cuGraph page for the name of the current branch.
    git checkout branch-x.x

  2. Code .....

  3. Once your code works and passes tests

    1. commit your code git push
  4. From the GitHub web page, open a Pull Request

    1. follow the Pull Request tagging policy

Development Environment

There is no recommended or preferred development environment. There are a few must have conditions on GPU hardware and library versions. But for the most part, users can work in the environment that they are familiar and comfortable with.

Hardware

  • You need to have accesses to an NVIDAI GPU that is Pascal or later.

IDEs

There is no recommended IDE, here is just a list of what cuGraph developers currently use (not in any priority order)

  • NSIGHT
  • Eclipse (with the C++ and Python modules)
  • VSCode
  • VIM / VI (old school programming)
    • With plug-ins like FZF, Rg

Using VSCode, you can develop remotely from the hardware if you so wish. Alex Fender has a setting up remote development: https://github.com/afender/cugraph-vscode

Debug

  • cuda-memcheck

A debug launch can also be enabled in VSCode with something like: https://github.com/harrism/cudf-vscode/blob/master/.vscode/launch.json

Seasoned developers

Once you have gotten your feet wet and are more comfortable with the code, you can look at the prioritized issues of our next release in our project boards.

Pro Tip: Always look at the release board with the lowest number for issues to work on. This is where RAPIDS developers also focus their efforts. cuGraph maintains a project board for the current release plus out two future releases. This allows to better long term planning

Look at the unassigned issues, and find an issue you are comfortable with contributing to. Start with Step 3 from above, commenting on the issue to let others know you are working on it. If you have any questions related to the implementation of the issue, ask them in the issue instead of the PR.

Style Guild

All Python code most pass flake8 style checking All C++ code must pass clank style checking

Tests

All code must have assocsiate test cases. Code without test will not be accepted