Skip to content

Latest commit

 

History

History
100 lines (76 loc) · 4.68 KB

CONTRIBUTING.md

File metadata and controls

100 lines (76 loc) · 4.68 KB

Contributing to the NWChemEx-Project

First, thank you for your interest in contributing to the NWChemEx project! We strive to be a welcoming community. If you are a newcomer to the project, or just want to make some small contributions to the project, this page is for you. If you are going to contribute a large feature, or do extensive development, we instead ask that you become familiar with our more formal developer documentation located here.

Asking Questions

Questions come up. We strive to have helpful documentation, but it's unlikely to have all the answers. If you have a question, please search the documentation and the GitHub issues for answers. If you cannot find the answer then feel free to open a GitHub issue with the question, using the "Question" template. If you need help opening an issue, see this tutorial.

Ways to Contribute

There's three main ways to contribute:

  1. Reporting Bugs

    NWChemEx uses GitHub's issue feature for bug tracking. If you think you have found a bug, please first search the issues to see if it has already been reported. If not, feel free to open a new issue using the "Bug report" template.

  2. Suggesting Features

    We're happy to consider implementing new features. Just be aware most of us are not directly paid to do software maintenance on NWChemEx, which means it may take us a while to implement the feature. Like bugs, we use GitHub's issue feature for tracking feature requests. Please do a quick search to make sure someone else hasn't already suggested the feature. If there is an open issue, feel free to add a comment in that issue. This will help us to track the need for a feature. If the feature is indeed new, then please open a new issue using the "Feature request" template.

  3. Contributing Code

    Please note that NWChemEx is a large project, with many moving pieces. We are also very concerned with performance. This requires planning, and maintaining a unified design. Until you are familiar with the inner workings of NWChemEx and the overall design, we strongly recommend chatting with a more established developer before spending any extensive time writing code. The best way to do this is by opening a draft pull request (PR) and articulating what you intend to do, and how you intend to do it. While we strive to be an open and welcoming community, the size of the project mandates that we adhere to the unifying design to keep things on track. PRs will need to be aligned with this design before they can be merged.

    That all said, we understand that this may seem daunting for new developers. We also understand it takes time to come to grips with the project. We consider ourselves a welcoming and helpful community and are more than willing to walk you through the process and answer any questions you may have. Just remember we all started somewhere.

    Also if you're just committing a small change, no need to run it by us. Just open the (non-draft) PR with the change!

    For help on creating a pull request see this tutorial.

Contributor License Agreement (CLA)

Since the NWChemEx project is developed primarily by the U.S. Department of Energy, you will need sign a CLA for legal reasons. When you make a PR, you will automatically be prompted to view and sign the CLA (if you have not already). The contents of the CLA are:

By contributing computer software code to the <project> project I
certify that the contribution is being made under the Apache 2.0 license
(https://www.apache.org/licenses/LICENSE-2.0) and that I have all rights and
permissions necessary to do so, including authorization from my employer if
applicable.

NOTICE. This Software was developed under funding from the U.S. Department of
Energy and the U.S. Government consequently retains certain rights. As such, the
U.S. Government has been granted for itself and others acting on its behalf a
paid-up, nonexclusive, irrevocable, worldwide license in the Software to
reproduce, distribute copies to the public, prepare derivative works, and
perform publicly and display publicly, and to permit others to do so.

This should be self-explanatory, but if you have questions just ask.

Acknowledgments

This file is based heavily on Atom's CONTRIBUTING.md.