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.
If you encounter any issue or you have an idea to improve, please:
Search through Google and existing open and closed GitHub Issues for the
answer first. If you find a relevant topic, please comment on the issue.
If not found, please add an issue to GitHub issues.
If you have a quick question you might want to also ask on our Discord.
If you encounter a security vulnerability, please let us know privately via: [email protected]
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.
Familiarizing yourself with our coding style guidelines.
Familiarizing yourself with the Makefile commands, for example,
make help will print all available commands with some description.
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/github.com/tellor-io$ cd $GOPATH/src/github.com/tellor-io$ git clone https://github.com/tellor-io/telliot.git$ cd telliot$ git remote add fork git remote add fork [email protected]/<your_github_id>/telliot.git$ make build$ ./telliot -h
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>
If your change affects users (adds,removes or changes a feature) add the item to the CHANGELOG.
Add e2e tests for new features and changes to functionality. Add unit tests for key components of the packages.
A PR will me merged once the PR has been approved by at least one developer with write access.
If you feel like your PR is waiting too long for a review, feel free to ping in the Discord channel for a review!
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 example.com/some/module/pkg# Pick a specific version.go get example.com/some/module/[email protected]
Tidy up the
make depsgit add go.mod go.sumgit commit
The project uses Bingo for adding any go tools required by the project.