Skip to main content

Contributing to Witness

We welcome contributions from the community and first want to thank you for taking the time to contribute!

Before starting, please take some time to familiarize yourself with the Code of Conduct.

Getting Started

We welcome many different types of contributions and not all of them need a Pull Request. Contributions may include:

  • New features and proposals
  • Documentation
  • Bug fixes
  • Issue Triage
  • Answering questions and giving feedback
  • Helping to onboard new contributors
  • Other related activities

Setting up your environment

Required Tooling

Some tools are required on your system in order to help you with the development process:

  • Git: Witness is hosted on GitHub, so you will need to have Git installed. For more information, please follow this guide.

  • GNU Make: The root of the directory contains a Makefile for automating development processes. The make CLI tool is usually installed by default on most systems (excluding Windows), but you can check if it is installed by running make --version on your terminal. If this command is unsuccessful, you will need to find the standard method for installing it for your system. For installing make on Windows, please see here.

  • Go v1.19: Witness is written in Go, so you will need this installed in order to compile and run the source code.

Getting the Witness source code

Fork the repository on GitHub and clone it to your local machine:

    git clone git@github.com:YOUR-USERNAME/witness.git

The command above uses SSH to clone the repository, which we recommend. You can find out more about how to set SSH up with Github here.

Add a remote and regularly sync to make sure you stay up-to-date with our repository:

    git remote add upstream https://github.com/in-toto/witness.git
git checkout main
git fetch upstream
git merge upstream/main

Running Tests

You can run all the tests by executing the command:

    make test