stable/CONTRIBUTING.md

132 lines
4.6 KiB
Markdown
Raw Normal View History

2018-09-12 18:24:19 +00:00
# Contributing
## Contribute to freqtrade
2018-01-02 02:17:10 +00:00
2018-11-09 19:26:10 +00:00
Feel like our bot is missing a feature? We welcome your pull requests!
2017-12-22 12:29:31 +00:00
2018-11-09 19:26:10 +00:00
Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/good%20first%20issue) can be good first contributions, and will help get you familiar with the codebase.
Few pointers for contributions:
2018-09-12 18:24:19 +00:00
2018-11-09 19:26:10 +00:00
- Create your PR against the `develop` branch, not `master`.
- New features need to contain unit tests and must be PEP8 conformant (max-line-length = 100).
2017-12-22 12:29:31 +00:00
If you are unsure, discuss the feature on our [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtMjQ5NTM0OTYzMzY3LWMxYzE3M2MxNDdjMGM3ZTYwNzFjMGIwZGRjNTc3ZGU3MGE3NzdmZGMwNmU3NDM5ZTNmM2Y3NjRiNzk4NmM4OGE)
or in a [issue](https://github.com/freqtrade/freqtrade/issues) before a PR.
2017-12-22 12:29:31 +00:00
2018-11-09 19:26:10 +00:00
## Before sending the PR:
2018-01-02 02:17:10 +00:00
2018-11-09 19:26:10 +00:00
### 1. Run unit tests
2017-12-22 12:29:31 +00:00
2018-01-02 02:17:10 +00:00
All unit tests must pass. If a unit test is broken, change your code to
make it pass. It means you have introduced a regression.
2017-12-22 12:29:31 +00:00
2018-11-09 19:26:10 +00:00
#### Test the whole project
2018-09-12 18:24:19 +00:00
2017-12-22 12:29:31 +00:00
```bash
pytest freqtrade
```
2018-11-09 19:26:10 +00:00
#### Test only one file
2018-09-12 18:24:19 +00:00
2017-12-22 12:29:31 +00:00
```bash
pytest freqtrade/tests/test_<file_name>.py
```
2018-11-09 19:26:10 +00:00
#### Test only one method from one file
2018-09-12 18:24:19 +00:00
2017-12-22 12:29:31 +00:00
```bash
2018-01-02 04:04:41 +00:00
pytest freqtrade/tests/test_<file_name>.py::test_<method_name>
2017-12-22 12:29:31 +00:00
```
2018-01-02 02:17:10 +00:00
2018-11-09 19:26:10 +00:00
### 2. Test if your code is PEP8 compliant
2018-09-12 18:24:19 +00:00
2018-11-09 19:26:10 +00:00
#### Install packages
2018-09-12 18:24:19 +00:00
2017-12-22 12:29:31 +00:00
```bash
pip3.6 install flake8 coveralls
2018-09-12 18:24:19 +00:00
```
2018-11-09 19:26:10 +00:00
#### Run Flake8
2018-09-12 18:24:19 +00:00
2017-12-22 12:29:31 +00:00
```bash
flake8 freqtrade
```
2018-06-11 11:50:24 +00:00
We receive a lot of code that fails the `flake8` checks.
To help with that, we encourage you to install the git pre-commit
hook that will warn you when you try to commit code that fails these checks.
Guide for installing them is [here](http://flake8.pycqa.org/en/latest/user/using-hooks.html).
2018-11-09 19:26:10 +00:00
### 3. Test if all type-hints are correct
2017-12-22 12:29:31 +00:00
2018-11-09 19:26:10 +00:00
#### Install packages
``` bash
pip3.6 install mypy
```
2018-11-09 19:26:10 +00:00
#### Run mypy
``` bash
mypy freqtrade
```
2018-09-12 18:40:52 +00:00
## Getting started
Best start by reading the [documentation](https://github.com/freqtrade/freqtrade/blob/develop/docs/index.md) to get a feel for what is possible with the bot, or head straight to the [Developer-documentation](https://github.com/freqtrade/freqtrade/blob/develop/docs/developer.md) (WIP) which should help you getting started.
2018-09-12 18:40:52 +00:00
## (Core)-Committer Guide
### Process: Pull Requests
How to prioritize pull requests, from most to least important:
1. Fixes for broken tests. Broken means broken on any supported platform or Python version.
1. Extra tests to cover corner cases.
1. Minor edits to docs.
1. Bug fixes.
1. Major edits to docs.
1. Features.
Ensure that each pull request meets all requirements in the Contributing document.
### Process: Issues
If an issue is a bug that needs an urgent fix, mark it for the next patch release.
Then either fix it or mark as please-help.
For other issues: encourage friendly discussion, moderate debate, offer your thoughts.
### Process: Your own code changes
All code changes, regardless of who does them, need to be reviewed and merged by someone else.
This rule applies to all the core committers.
Exceptions:
- Minor corrections and fixes to pull requests submitted by others.
- While making a formal release, the release manager can make necessary, appropriate changes.
- Small documentation changes that reinforce existing subject matter. Most commonly being, but not limited to spelling and grammar corrections.
### Responsibilities
- Ensure cross-platform compatibility for every change that's accepted. Windows, Mac & Linux.
2018-09-14 17:56:04 +00:00
- Ensure no malicious code is introduced into the core code.
2018-09-12 18:40:52 +00:00
- Create issues for any major changes and enhancements that you wish to make. Discuss things transparently and get community feedback.
- Keep feature versions as small as possible, preferably one new feature per version.
- Be welcoming to newcomers and encourage diverse new contributors from all backgrounds. See the Python Community Code of Conduct (https://www.python.org/psf/codeofconduct/).
### Becoming a Committer
Contributors may be given commit privileges. Preference will be given to those with:
1. Past contributions to FreqTrade and other related open-source projects. Contributions to FreqTrade include both code (both accepted and pending) and friendly participation in the issue tracker and Pull request reviews. Quantity and quality are considered.
1. A coding style that the other core committers find simple, minimal, and clean.
1. Access to resources for cross-platform development and testing.
1. Time to devote to the project regularly.
Beeing a Committer does not grant write permission on `develop` or `master` for security reasons (Users trust FreqTrade with their Exchange API keys).
After beeing Committer for some time, a Committer may be named Core Committer and given full repository access.