Skip to content

Contribution

Jenny Zhang edited this page Apr 7, 2016 · 12 revisions

How to Contribute

We love Pull Requests! Your contributions help drive development.

Getting Started

Thanks for your interest in supporting our mission - to develop software that addresses needs in cancer biology and precision medicine. Both software development and cancer research require multi-disciplinary expertise and collaboration, and we welcome any and all help whether it be submitting issues, writing docs, making code changes, or even linking/developing entire features. If you haven't already, start by signing up for a GitHub account.

Clone the Oncoscape Repository

oncoscape_user_flowchart_final

You can clone this repository locally from GitHub using the "Clone in Desktop" button from the main project site, or run this command in the Git Shell:

git clone https://github.com/FredHutch/Oncoscape.git Oncoscape

Or if you're using SSH

git clone git@github.com:FredHutch/oncoscape.git Oncoscape

If you want to make contributions to the project, forking the project is the easiest way to do this. You can then clone down your fork instead:

git clone https://github.com/MY-USERNAME-HERE/Oncoscape.git Oncoscape

Or if you're using SSH

git clone git@github.com:MY-USERNAME-HERE/Oncoscape.git Oncoscape

After doing that, follow the Installation to install, test, and run the software package.

Check out our cheatsheet for tips and tricks for some common git commands.

How is the codebase organized?

Architecture Oncoscape’s client side architecture is based on the Angular JS framework. Angular provides a wealth of tutorials, active user community and documentation to the Oncoscape’s contributors. Please refer to the following links to learn more about Angular. For information on our specific implementation of Angular see the Files + Folders section below.

Oncoscape Integration and Deployment Pipeline

oncoscape_integration_deployment_pipeline

What needs to be done?

We have a help wanted tag on our issue tracker to indicate tasks which contributors can pick up.

If you've found something you'd like to contribute to, leave a comment in the issue so everyone is aware.

Making Changes

When you're ready to make a change, create a branch off the develop branch. We use develop as the working branch for the repository with the most recent contributions and the master branch as our production version. We found these two links very helpful develop/master branching model and github workflow

If you make focused commits (instead of one monolithic commit) and have descriptive commit messages, this will help speed up the review process.

Oncoscape relies on testing to ensure existing behavior is unchanged. This can be easily checked through the >make test command in the r_modules directory. If you're adding new features, please add some tests to your code and include it in the testing heirarchy so your code is safe and secure.

Submitting Changes

You can publish your branch from GitHub for Windows, or run this command from the Git Shell:

git push origin MY-BRANCH-NAME

Once your changes are ready to be reviewed, publish the branch to GitHub and open a pull request against it.

Some tips with pull requests to help the process:

  • Contribute your work-in-progress by adding the [WIP] prefix to the title. This way we can give feedback early and facilitate the inclusion of your updates.
  • use checklists to indicate the tasks which need to be done, so everyone knows how close you are to adding a new awesome component.
  • add comments to the PR about things that are unclear or you would like suggestions on

Don't forget to mention in the pull request description which issue/issues are being addressed.

Some things that will increase the chance that your pull request is accepted.

  • Follow existing code conventions.
  • Include unit tests that would otherwise fail without your code, but pass with it.
  • Update the documentation, the surrounding one, examples elsewhere, guides, whatever is affected by your contribution

Additional Resources

Clone this wiki locally