Process of contributing to the project.

Thank you for considering to help. Contributions are very welcome and additionally incentivized through Gitcoin bounties. Ping us on the discord dev's channel to get started.


  • The philosophy is borrowing much from UNIX philosophy and the golang programming language.Each sub command should do one thing and do it well

    • Every component behavior should be covered with an e2e test and if an e2e test is not appropriate should at least have unit tests for key components of a package.

Feedback / Issues

If you encounter any issue or you have an idea to improve, please:

We are recommending, using GitHub issues for issues and feedback because GitHub issues are track-able and will help other people searcing for solutions or answers.

If you encounter a security vulnerability, please let us know privately via: [email protected]

Adding New Features / Components

For any major changes or new features, please first discuss the change you wish to make via issue or Discord, or any other method before making a change.


The following section explains various suggestions and procedures to note during development.

First Steps

  • Familiarizing yourself with our coding style guidelines.

  • Familiarizing yourself with the Makefile commands, for example, build, format, test, lint.

    make help will print all available commands with some description.

Pull Request Process

  1. Fork the repository and start development from your own fork. Here are sample steps to setup your development environment:

$ GOPATH=$(go env GOPATH)
$ mkdir -p $GOPATH/src/
$ cd $GOPATH/src/
$ git clone
$ cd telliot
$ git remote add fork git remote add fork [email protected]/<your_github_id>/telliot.git
$ make build
$ ./telliot -h
  1. Keep PRs as small as possible. For each of your PRs, you create a new branch based on the latest master.

    Chain them if needed (base one PR on other PRs). You can read more details about the workflow from here.

$ git checkout master
$ git pull origin master
$ git checkout -b <your_PR_branch>
$ <Iterate your development>
$ git push fork <your_PR_branch>
  1. If your change affects users (adds,removes or changes a feature) add the item to the CHANGELOG.

  2. Add e2e tests for new features and changes to functionality. Add unit tests for key components of the packages.

  3. A PR will me merged once the PR has been approved by at least one developer with write access.

  4. If you feel like your PR is waiting too long for a review, feel free to ping in the Discord channel for a review!

Dependency management

The project uses Go modules to manage dependencies on external packages. This requires a working Go environment with version 1.11 or greater and git installed.

To add or update a new dependency, use the go get command:

# Pick the latest tagged release.
go get
# Pick a specific version.
go get[email protected]

Tidy up the go.mod and go.sum files:

make deps
git add go.mod go.sum
git commit

Project development go tools

The project uses Bingo for adding any go tools required by the project.