How To Contribute

There are three distinct types of contributions that this guide attempts to support. As such, there may be portions of this document that do not apply to your particular area of interest.

Existing Code

Add new features or fix bugs in the platform or existing type support projects.

New Type Support

Create a new project that adds support for a new content type to Pulp.

Integration

Integrate some other project with Pulp, especially by using the event system and REST API.

For New Contributors

If you are interested in contributing to Pulp, the best way is to select a bug that interests you and submit a patch for it. We use Redmine for tracking bugs. Of course, you may have your own idea for a feature or bugfix as well! You may want to send an email to pulp-list@redhat.com or ask in the #pulp-dev channel on freenode before working on your feature or bugfix. The other contributors will be able to give you pointers and advice on how to proceed. Additionally, if you are looking for a bug that is suitable for a first-time contributor, feel free to ask.

Pulp is written in Python. While you do not need to be a Python expert to contribute, it would be advantageous to run through the Python tutorial if you are new to Python or programming in general. Contributing to an open source project like Pulp is a great way to become proficient in a programming language since you will get helpful feedback on your code.

Some knowledge of git and GitHub is useful as well. Documentation on both is available on the GitHub help page.

Contribution Checklist

  1. Make sure that you choose the appropriate upstream branch.

    Branching

  2. Test your code. We ask that all new code has 100% coverage.

    Testing

  3. Please ensure that your code follows our style guide.

    Style Guide

  4. Please make sure that any new features are documented and that changes are reflected in existing docs.

    Documentation

  5. Please squash your commits and use our commit message guidelines.

    Rebasing and Squashing

  6. Make a PR!

Developer Guide