Skip to content

Contributing

Contributing to OpenSquirrel largely follows the general procedure of contributing to a GitHub project. Some details of that procedure and actions specific to OpenSquirrel are described below.

Requirements

  • git version control system (VCS) for software programming: Install Git and check if it is installed properly by running git version.
  • uv Python package manager: easy install through pip install uv or follow these instructions.

Forking the project and creating a feature branch

Contributing to OpenSquirrel as an external developer is done via a new fork.

  • Navigate to the OpenSquirrel GitHub project and create a fork.
  • Clone the repository locally using git clone.
  • Create a new feature branch:
    git checkout develop
    git fetch origin
    git pull
    git branch <name-feature-branch>
    

Installing the required dependencies

It is recommended to work in a virtual environment (which can be created using uv)

uv venv <name-of-venv>

Make sure to activate the virtual environment if not done so yet

.\<name-of-venv>\Scripts\activate
source <name-of-venv>/bin/activate

Next install the required dependencies

uv sync

Adding, committing, and pushing changes

Any code changes can be added as follows

git add <name-of-file-or-directory-with-changes>
Use git status to inspect which files contain changes and which of them have already been staged, i.e., added.

To save the changes in the staged files, you create so-called commit, accordingly

git commit -m "<commit-message>"
where the commit message is a short description of the changes made.

To make sure that the changes not only exist locally, the commit needs to be pushed to the remote repository.

git push

Creating a Pull Request

When you are done with your feature implementation and want to add it to OpenSquirrel, you need to create a Pull Request (PR).

Before finalizing the PR, however, it is advised to run linting, type, and unit tests, using tox:

pip install tox

tox -e fix,type,test

Make sure to commit and push any changes resulting from these checks.