This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Submitting Contributions

How to submit a contribution to an open source project.

    Once you have approval and your code is ready, submit your contribution in the way the project requires. The following is the typical flow for a GitHub-based project.

    Check Prior History

    Check whether your contribution has been addressed before. Search the project’s README, issues, and mailing list for a few keywords. If you find nothing related, open an issue or start a conversation through a Pull Request.

    Before you start, it is best to open an issue describing what you intend to do. This helps you avoid duplicate or unnecessary work.

    Create an Issue

    Typically, create an issue when:

    • Reporting an error you cannot resolve on your own
    • Proposing a new feature or idea
    • Discussing the community vision or policy

    Communication tips:

    • If an open issue already covers your topic, comment first so others do not work on it in parallel.
    • An old issue may already be resolved; check with a comment before starting.
    • If you opened an issue and later found the answer yourself, post the answer and close it. That documentation is itself a contribution.

    Create a Pull Request

    When your files are ready, submit the contribution as a Pull Request. Opening it early to get feedback is good practice; mark “WIP” (Work in Progress) in the title and add more commits later.

    The Pull Request flow on GitHub is as follows.

    Fork

    Fork the upstream repository to your own GitHub account.

    Clone

    Clone your fork to a local working directory and add the upstream as a remote.

    $ git clone https://github.com/$user/[repository]
    $ cd [repository]
    $ git remote add upstream https://github.com/[upstream]/[repository]
    $ git remote -v
    

    Create a branch

    Bring the main branch up to date, then create a working branch.

    $ git fetch upstream
    $ git checkout main
    $ git rebase upstream/main
    $ git checkout -b myfeature
    

    Work and commit

    Make your changes and commit. If the project requires a DCO, add a Signed-off-by line with -s.

    $ git commit -s -m '[commit message]'
    

    Push

    Push your branch to your own repository.

    $ git push origin myfeature
    

    Use the force option only in the rare case where you must re-push a branch you rewrote (for example, after a rebase), and never on a shared branch.

    Create a pull request

    On GitHub, use the Compare & pull request button on your repository to create the Pull Request. The upstream maintainer then reviews it and decides whether to merge.

    pr

    DCO and CLA

    Projects certify the origin of contributions with a DCO or a CLA. Check which one the project requires beforehand.

    • A DCO is a lightweight Signed-off-by line in the commit, added automatically with git commit -s.
    • A CLA is a separate agreement. If a CLA requires copyright assignment, request an OSRB review before signing, per the Contribution Rules.

    Receive Feedback

    After you submit, the project gives feedback. Treat it as a way to raise the quality of your contribution. Feedback usually falls into one of four kinds.

    No response

    Before contributing, check that the project is active. If you get no response for more than a week, politely ask for a review in the same thread, using an @-mention if you know the right person. Do not contact anyone privately; keep communication public. If there is still no response, look for another way to contribute or another project.

    A request for changes

    Being asked to explain your idea or revise your code is common. Respond promptly, since someone took time to review. If you can no longer proceed, tell the maintainer so someone else can take it over.

    Rejected

    A contribution may not be accepted. If the reason is unclear, ask the maintainer for an explanation, but respect their decision. If differences are never reconciled, you can fork and continue on your own project. Treat a rejection as a chance to improve your next contribution.

    Accepted

    Congratulations. You have contributed to open source.

    References