...
1# Contributing
2
3## Introduction
4
5We appreciate your interest in considering contributing to go-redis.
6Community contributions mean a lot to us.
7
8## Contributions we need
9
10You may already know how you'd like to contribute, whether it's a fix for a bug you
11encountered, or a new feature your team wants to use.
12
13If you don't know where to start, consider improving
14documentation, bug triaging, and writing tutorials are all examples of
15helpful contributions that mean less work for you.
16
17## Your First Contribution
18
19Unsure where to begin contributing? You can start by looking through
20[help-wanted
21issues](https://github.com/redis/go-redis/issues?q=is%3Aopen+is%3Aissue+label%3ahelp-wanted).
22
23Never contributed to open source before? Here are a couple of friendly
24tutorials:
25
26- <http://makeapullrequest.com/>
27- <http://www.firsttimersonly.com/>
28
29## Getting Started
30
31Here's how to get started with your code contribution:
32
331. Create your own fork of go-redis
342. Do the changes in your fork
353. If you need a development environment, run `make docker.start`.
36
37> Note: this clones and builds the docker containers specified in `docker-compose.yml`, to understand more about
38> the infrastructure that will be started you can check the `docker-compose.yml`. You also have the possiblity
39> to specify the redis image that will be pulled with the env variable `CLIENT_LIBS_TEST_IMAGE`.
40> By default the docker image that will be pulled and started is `redislabs/client-libs-test:8.2.1-pre`.
41> If you want to test with newer Redis version, using a newer version of `redislabs/client-libs-test` should work out of the box.
42
434. While developing, make sure the tests pass by running `make test` (if you have the docker containers running, `make test.ci` may be sufficient).
44> Note: `make test` will try to start all containers, run the tests with `make test.ci` and then stop all containers.
455. If you like the change and think the project could use it, send a
46 pull request
47
48To see what else is part of the automation, run `invoke -l`
49
50
51## Testing
52
53### Setting up Docker
54To run the tests, you need to have Docker installed and running. If you are using a host OS that does not support
55docker host networks out of the box (e.g. Windows, OSX), you need to set up a docker desktop and enable docker host networks.
56
57### Running tests
58Call `make test` to run all tests.
59
60Continuous Integration uses these same wrappers to run all of these
61tests against multiple versions of redis. Feel free to test your
62changes against all the go versions supported, as declared by the
63[build.yml](./.github/workflows/build.yml) file.
64
65### Troubleshooting
66
67If you get any errors when running `make test`, make sure
68that you are using supported versions of Docker and go.
69
70## How to Report a Bug
71
72### Security Vulnerabilities
73
74**NOTE**: If you find a security vulnerability, do NOT open an issue.
75Email [Redis Open Source (<oss@redis.com>)](mailto:oss@redis.com) instead.
76
77In order to determine whether you are dealing with a security issue, ask
78yourself these two questions:
79
80- Can I access something that's not mine, or something I shouldn't
81 have access to?
82- Can I disable something for other people?
83
84If the answer to either of those two questions are *yes*, then you're
85probably dealing with a security issue. Note that even if you answer
86*no* to both questions, you may still be dealing with a security
87issue, so if you're unsure, just email [us](mailto:oss@redis.com).
88
89### Everything Else
90
91When filing an issue, make sure to answer these five questions:
92
931. What version of go-redis are you using?
942. What version of redis are you using?
953. What did you do?
964. What did you expect to see?
975. What did you see instead?
98
99## Suggest a feature or enhancement
100
101If you'd like to contribute a new feature, make sure you check our
102issue list to see if someone has already proposed it. Work may already
103be underway on the feature you want or we may have rejected a
104feature like it already.
105
106If you don't see anything, open a new issue that describes the feature
107you would like and how it should work.
108
109## Code review process
110
111The core team regularly looks at pull requests. We will provide
112feedback as soon as possible. After receiving our feedback, please respond
113within two weeks. After that time, we may close your PR if it isn't
114showing any activity.
115
116## Support
117
118Maintainers can provide limited support to contributors on discord: https://discord.gg/W4txy5AeKM
View as plain text