Contribution guidelines

I am completely open to suggestions, criticism, and collaborators. Feel free to open issues and label them accordingly.

Before sending a Pull Request, please make sure that you’re assigned the task on a GitHub issue.

  • If a relevant issue already exists, discuss on the issue and get it assigned to yourself on GitHub.
  • If no relevant issue exists, open a new issue and get it assigned to yourself on GitHub.

Git Workflow

This project follows a simple Git Workflow [1][2]:

  • Branch off the latest master and name the branch <descriptive_name>-<issue_number>

    git clone https://github.com/CamiloGarciaLaRotta/MOE.git
    cd MOE
    # activate your python venv
    pip install -r requirements.txt
    
    git checkout -b add-hello-world-support-42
    
  • Keep your branch up to date by rebasing on top of master .. code-block:: bash

    git fetch origin git rebase origin/master

  • When you are done, push your branch and open a Pull Request in GitHub .. code-block:: bash

    git push -u origin add-hello-world-support-42

  • Once the Pull Request is approved, perform an explicit merge .. code-block:: bash

    git checkout master git pull origin master git merge –no-ff add-hello-world-support-42

Pull Request Checklist

  • In order to keep a homogenious naming convention, you have to name your implementations of Reader, Writer and Mailer with a name ending in -er (:

  • You may find useful my configuration file for VSCode and editorconfig.

  • It is highly recommended that you use the root Makefile as git pre-commit hook, as it will do everything all for you (linting, testing, documentation)

       #.git/hooks/pre-commit
       #!/bin/sh
    
       make validate
    
    then ``chmod +x .git/hooks/pre-commit``
    
  • Your code must pass the linting (Pylint, Flake8), as well as remove trailing whitespace of all files.

  • If your contribution adds/modifies MOEs functionality, please add appropriate tests.

  • Please add appropriate documentation to your code in Google Style.

  • If your contribution requires extra dependencies, please mention it in the Pull Request and update project’s depencencies: pip freeze > requirements.txt

Vulnerabilities

If you find any vulnerabilities, please open an Issue and add the label Vulnerability. It will be handled as top priority issue.